Suivant: , Précédent: , Monter: Utilitaires   [Table des matières][Index]


10.8 Invoquer guix lint

La commande guix lint est conçue pour aider les développeur·euses à éviter des erreurs communes et à utiliser un style cohérent lors de l’écriture de recettes de paquets. Elle lance des vérifications sur un ensemble de paquets donnés pour trouver des erreurs communes dans leur définition. Les vérifieurs disponibles comprennent (voir --list-checkers pour une liste complète) :

synopsis
description

Vérifie certaines règles typographiques et stylistiques dans les descriptions et les synopsis.

inputs-should-be-native

Identifie les entrées qui devraient sans doute plutôt être des entrées natives.

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

Sonde les URL home-page et source et rapporte celles qui sont invalides. Suggère une URL en mirror:// lorsque c’est possible. Si l’URL de source redirige vers une URL GitHub, recommande d’utiliser l’URL GitHub. Vérifie que le nom du fichier source a un sens, p. ex. qu’il ne s’agisse pas juste d’un numéro de version ou « git-checkout », sans avoir déclaré un file-name (voir Référence de origin).

source-unstable-tarball

Analyse l’URL source pour déterminer si une archive de GitHub est autogénérée ou s’il s’agit d’une archive de publication. Malheureusement les archives autogénérées de GitHub sont parfois régénérées.

dérivation

Vérifiez que la dérivation des paquets donnés peut être calculée avec succès pour tous les systèmes pris en charge (voir Dérivations).

profile-collisions

Vérifiez si l’installation des paquets donnés dans un profil risque d’entraîner des collisions. Des collisions se produisent lorsque plusieurs paquets portant le même nom mais avec une version différente ou un nom de fichier de stockage différent sont propagés. Voir propagated-inputs, pour plus d’informations sur les entrées propagées.

archivage

Vérifie si le code source du paquet est archivé à Software Heritage.

Lorsque le code source non archivé provient d’un système de contrôle de version (VCS)—par exemple, il est obtenu avec git-fetch, envoyez au Software Heritage une requête « save » afin qu’il l’archive éventuellement. Cela garantit que le code source restera disponible à long terme et que Guix peut se retourner vers le Software Heritage si le code source disparaît de son hôte d’origine. L’état des demandes récentes de « sauvegarde » peut être consulté en ligne.

Quand le code source est une archive obtenue avec url-fetch, cela affiche simplement un message quand il n’est pas archivé. Au moment où nous écrivons ces lignes, le Software Heritage n’autorise pas les demandes de sauvegarde d’archives arbitraires ; nous travaillons sur les moyens de garantir que le code source non-VCS soit également archivé.

Software Heritage limits the request rate per IP address. Quand la limite est atteinte, guix lint affiche un message et le vérificateur archival arrête de faire quoi que ce soit jusqu’à ce que cette limite soit réinitialisée.

cve

Rapporte les vulnérabilités connues trouvées dans les bases de données CVE (Common Vulnerabilities and Exposures) de l’année en cours et de l’année précédente published by the US NIST.

Pour voir les informations sur une vulnérabilité en particulier, visitez les pages :

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

CVE-ANNÉE-ABCD est l’identifiant CVE — p. ex. CVE-2015-7554.

On peut spécifier dans les recettes des paquets le nom Common Platform Enumeration (CPE) et la version du paquet s’ils diffèrent du nom et de la version que Guix utilise, comme dans cet exemple :

(package
  (name "grub")
  ;; …
  ;; CPE nomme ce paquet "grub2".
  (properties '((cpe-name . "grub2")
                (cpe-version . "2.3"))))

Certaines entrées dans la base de données CVE ne spécifient pas la version du paquet auquel elles s’appliquent et lui restera donc attachée pour toujours. Les développeur·euses qui trouvent des alertes CVE et ont vérifié qu’elles peuvent être ignorées peuvent les déclarer comme dans cet exemple :

(package
  (name "t1lib")
  ;; …
  ;; Ces CVE ne s'appliquent plus et peuvent être ignorée sans problème.
  (properties `((lint-hidden-cve . ("CVE-2011-0433"
                                    "CVE-2011-1553"
                                    "CVE-2011-1554"
                                    "CVE-2011-5244")))))
formatting

Avertit de problèmes de formatage du code source évidents : des espaces en fin de ligne, des tabulations, etc.

input-labels

Rapport les étiquettes de l’ancien style qui ne correspondent pas au nom du paquet. Cela a pour but d’aider à migrer de « l’ancien style ». Voir Référence de package, pour plus d’information sur les entrées des paquets et les styles d’entrées. Voir Invoquer guix style, pour la manière de migrer vers le nouveau style.

La syntaxe générale est :

guix lint options package

Si aucun paquet n’est donné par la ligne de commande, tous les paquets seront vérifiés. Les options peuvent contenir aucune ou plus des options suivantes :

--list-checkers
-l

Liste et décrit tous les vérificateurs disponibles qui seront lancés sur les paquets puis quitte.

--checkers
-c

N’active que les vérificateurs spécifiés dans une liste de noms séparés par des virgules parmi la liste renvoyée par --list-checkers.

--exclude
-x

Ne désactive que les vérifications spécifiés dans une liste de noms séparés par des virgules, en utilisant les noms de --list-checkers.

--expression=expr
-e expr

Considérer le paquet évalué par expr.

C’est utile pour désigner des paquets sans ambiguïté, comme dans cet exemple :

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

N’active que les vérificateurs qui ne dépendent pas d’un accès réseau.

--load-path=répertoire
-L répertoire

Ajoute répertoire au début du chemin de recherche de module de paquets (voir Modules de paquets).

Cela permet à des utilisateurs de définir leur propres paquets et les rendre disponibles aux outils en ligne de commande.


Suivant: Invoquer guix size, Précédent: Invoquer guix style, Monter: Utilitaires   [Table des matières][Index]