Nächste: , Vorige: , Nach oben: Zubehör   [Inhalt][Index]


10.8 guix lint aufrufen

Den Befehl guix lint gibt es, um Paketentwicklern beim Vermeiden häufiger Fehler und bei der Einhaltung eines konsistenten Code-Stils zu helfen. Er führt eine Reihe von Prüfungen auf einer angegebenen Menge von Paketen durch, um in deren Definition häufige Fehler aufzuspüren. Zu den verfügbaren Prüfern gehören (siehe --list-checkers für eine vollständige Liste):

synopsis
description

Überprüfen, ob bestimmte typografische und stilistische Regeln in Paketbeschreibungen und -zusammenfassungen eingehalten wurden.

inputs-should-be-native

Eingaben identifizieren, die wahrscheinlich native Eingaben sein sollten.

source
home-page
mirror-url
github-url
source-file-name

Die URLs für die Felder home-page und source anrufen und nicht erreichbare URLs melden. Wenn passend, wird eine mirror://-URL vorgeschlagen. Wenn die Quell-URL auf eine GitHub-URL weiterleitet, wird eine Empfehlung ausgegeben, direkt letztere zu verwenden. Es wird geprüft, dass der Quell-Dateiname aussagekräftig ist, dass er also z.B. nicht nur aus einer Versionsnummer besteht oder als „git-checkout“ angegeben wurde, ohne dass ein Dateiname deklariert wurde (siehe origin-Referenz).

source-unstable-tarball

Analysiert die source-URL, um zu bestimmen, ob der Tarball von GitHub automatisch generiert wurde oder zu einer Veröffentlichung gehört. Leider werden GitHubs automatisch generierte Tarballs manchmal neu generiert.

derivation

Prüft, ob die Ableitung der angegebenen Pakete auf allen unterstützten Systmen erfolgreich berechnet werden kann (siehe Ableitungen).

profile-collisions

Prüft, ob die Installation der angegebenen Pakete in ein Profil zu Kollisionen führen würde. Kollisionen treten auf, wenn mehrere Pakete mit demselben Namen aber anderer Versionsnummer oder anderem Store-Dateinamen propagiert werden. Siehe propagated-inputs für weitere Informationen zu propagierten Eingaben.

archival

Überprüft, ob der Quellcode des Pakets bei der Software Heritage archiviert ist.

Wenn der noch nicht archivierte Quellcode aus einem Versionskontrollsystem („Version Control System“, VCS) stammt, wenn er also z.B. mit git-fetch bezogen wird, wird eine Anfrage an Software Heritage gestellt, diesen zu speichern („Save“), damit sie ihn irgendwann in deren Archiv aufnehmen. So wird gewährleistet, dass der Quellcode langfristig verfügbar bleibt und Guix notfalls auf Software Heritage zurückgreifen kann, falls der Quellcode bei seinem ursprünglichen Anbieter verschwindet. Der Status kürzlicher Archivierungsanfragen kann online eingesehen werden.

Wenn der Quellcode in Form eines über url-fetch zu beziehenden Tarballs vorliegt, wird bloß eine Nachricht ausgegeben, wenn er nicht archiviert ist. Zum Zeitpunkt, wo dies geschrieben wurde, ermöglicht Software Heritage keine Anfragen, beliebige Tarballs zu archivieren; wir arbeiten an Möglichkeiten wie auch nicht versionskontrollierter Quellcode archiviert werden kann.

Software Heritage beschränkt, wie schnell dieselbe IP-Adresse Anfragen stellen kann. Ist das Limit erreicht, gibt guix lint eine Mitteilung aus und der archival-Prüfer steht so lange still, bis die Beschränkung wieder zurückgesetzt wurde.

cve

Bekannte Sicherheitslücken melden, die in den Datenbanken der „Common Vulnerabilities and Exposures“ (CVE) aus diesem und dem letzten Jahr vorkommen, wie sie von der US-amerikanischen NIST veröffentlicht werden.

Um Informationen über eine bestimmte Sicherheitslücke angezeigt zu bekommen, besuchen Sie Webseiten wie:

  • https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-YYYY-ABCD
  • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-YYYY-ABCD

wobei Sie statt CVE-YYYY-ABCD die CVE-Kennnummer angeben – z.B. CVE-2015-7554.

Paketentwickler können in ihren Paketrezepten den Namen und die Version des Pakets in der Common Platform Enumeration (CPE) angeben, falls sich diese von dem in Guix benutzten Namen und der Version unterscheiden, zum Beispiel so:

(package
  (name "grub")
  ;; …
  ;; CPE bezeichnet das Paket als "grub2".
  (properties '((cpe-name . "grub2")
                (cpe-version . "2.3"))))

Manche Einträge in der CVE-Datenbank geben die Version des Pakets nicht an, auf das sie sich beziehen, und würden daher bis in alle Ewigkeit Warnungen auslösen. Paketentwickler, die CVE-Warnmeldungen gefunden und geprüft haben, dass diese ignoriert werden können, können sie wie in diesem Beispiel deklarieren:

(package
  (name "t1lib")
  ;; …
  ;; Diese CVEs treffen nicht mehr zu und können bedenkenlos ignoriert
  ;; werden.
  (properties `((lint-hidden-cve . ("CVE-2011-0433"
                                    "CVE-2011-1553"
                                    "CVE-2011-1554"
                                    "CVE-2011-5244")))))
formatting

Offensichtliche Fehler bei der Formatierung von Quellcode melden, z.B. Leerraum-Zeichen am Zeilenende oder Nutzung von Tabulatorzeichen.

input-labels

Eingabebezeichnungen im alten Stil melden, die nicht dem Namen des damit assoziierten Pakets entsprechen. Diese Funktionalität soll bei der Migration weg vom „alten Eingabenstil“ helfen. Siehe package-Referenz, um mehr Informationen über Paketeingaben und Eingabenstile zu bekommen. Siehe guix style aufrufen für Informationen, wie Sie zum neuen Stil migrieren können.

Die allgemeine Syntax lautet:

guix lint Optionen Pakete

Wird kein Paket auf der Befehlszeile angegeben, dann werden alle Pakete geprüft, die es gibt. Als Optionen können null oder mehr der folgenden Befehlszeilenoptionen übergeben werden:

--list-checkers
-l

Alle verfügbaren Prüfer für die Pakete auflisten und beschreiben.

--checkers
-c

Nur die Prüfer aktivieren, die hiernach in einer kommagetrennten Liste aus von --list-checkers aufgeführten Prüfern vorkommen.

--exclude
-x

Nur die Prüfer deaktivieren, die hiernach in einer kommagetrennten Liste aus von --list-checkers aufgeführten Prüfern vorkommen.

--expression=Ausdruck
-e Ausdruck

Als Paket benutzen, wozu der Ausdruck ausgewertet wird.

Dies ist nützlich, um die Pakete eindeutig angeben zu können, wie in diesem Beispiel:

guix lint -c archival -e '(@ (gnu packages guile) guile-3.0)'
--no-network
-n

Nur die Prüfer aktivieren, die keinen Internetzugang benötigen.

--load-path=Verzeichnis
-L Verzeichnis

Das Verzeichnis vorne an den Suchpfad für Paketmodule anfügen (siehe Paketmodule).

Damit können Nutzer dafür sorgen, dass ihre eigenen selbstdefinierten Pakete für die Befehlszeilenwerkzeuge sichtbar sind.


Nächste: guix size aufrufen, Vorige: guix style aufrufen, Nach oben: Zubehör   [Inhalt][Index]