Aller au contenu

Outil de linting

L’outil de linting de Biome analyse de manière statique votre code pour trouver et corriger les erreurs fréquentes et pour vous aider à écrire du code meilleur et moderne. Il prend en charge plusieurs languages et fournit un total de 293 règles.

L’outil de linting est organisé par règles. Une règle déclenche un diagnostic quand elle rencontre du code qui ne remplit pas ses exigences. Par exemple, la règle noDebugger rapporte l’utilisation de l’instruction debugger dans du code JavaScript.

Une règle déclenche des diagnostics de niveau de sévérité info, warn ou error. Les diagnostics de niveau de sévérité error font quitter la commande avec un code différent de zéro, tandis que les diagnostics de niveau de sévérité info ou warn ne font pas échouer la commande.

Vous pouvez faire échouer une commande qui déclenche des diagnostics de type warn en utilisant l’option --error-on-warnings :

Fenêtre de terminal
biome lint --error-on-warnings ./src

Par défaut, l’outil de linting de Biome n’exécute que les règles recommandées. Pour désactiver toutes les règles, vous pouvez désactiver les règles recommandées dans votre fichier de configuration de Biome, ce qui peut être utile dans les cas où vous ne voulez activer que quelques règles. Les règles recommandées déclenchent des diagnostics de niveau de sévérité error.

Les règles sont divisées en groupes. Par exemple, la règle noDebugger fait partie du groupe suspicious. Les règles de ce groupe détectent du code qui est probablement incorrect ou inutile. La description de chaque groupe peut être trouvée à la page des règles.

Contrairement à d’autres outils de linting, nous ne fournissons pas de règles qui vérifient le formatage du code. Ce type de vérification est couvert par notre outil de formatage de code.

La plupart des règles fournissent une correction de code qui peut s’appliquer automatiquement. Biome distingue les corrections de code sûres des corrections de code non sûres.

Les corrections sûres ont la garantie de ne pas modifier la sémantique de votre code. Elles peuvent s’appliquer sans revue explicite.

Pour faire appliquer les corrections sûres, utilisez --write :

Fenêtre de terminal
npx @biomejs/biome lint --write ./src

Les corrections non sûres peuvent modifier la sémantique de votre programme. Par conséquent, il est conseillé de revoir manuellement les modifications.

Pour faire appliquer à la fois les corrections sûres et les corrections non sûres, utilisez --write --unsafe :

Fenêtre de terminal
npx @biomejs/biome lint --write --unsafe ./src

Nous croyons que les règles devraient être instructives et expliquer à l’utilisateur pourquoi une règle est déclenchée et lui dire ce qu’il faudrait faire pour corriger l’erreur. Une règle devrait suivre ces piliers :

  1. expliquer à l’utilisateur l’erreur : généralement, c’est le message du diagnostic ;
  2. expliquer à l’utilisateur pourquoi l’erreur est déclenchée : généralement, c’est implémenté dans un nœud supplémentaire ;
  3. dire à l’utilisateur ce qu’il faudrait faire : généralement, c’est implémenté en utilisant une action sur le code ; si une action sur le code n’est pas applicable, une note devrait dire à l’utilisateur ce qu’il faudrait faire pour corriger l’erreur.

Si vous pensez qu’une règle ne suit pas ces piliers, merci de bien vouloir ouvrir un ticket.

La commande suivante exécute l’outil de linting sur tous les fichiers dans le répertoire src :

Fenêtre de terminal
npx @biomejs/biome lint ./src

La commande accepte une liste de fichiers et de répertoires.

Pour plus de renseignements sur toutes les options disponibles, consultez la référence de la ligne de commande.

Sauter une règle ou un groupe

Section titled Sauter une règle ou un groupe

Depuis la version v1.8.0, la commande biome lint accepte une option --skip qui permet de désactiver une ou plusieurs règles appartenant à un groupe.

Par exemple, la commande suivante saute toutes les règles appartenant au groupe style et la règle suspicious/noExplicitAny :

Fenêtre de terminal
biome lint --skip=style --skip=suspicious/noExplicitAny

Exécuter une règle ou un groupe

Section titled Exécuter une règle ou un groupe

Depuis la version v1.8.0, la commande biome lint accepte une option --only qui vous permet d’exécuter une ou plusieurs règles appartenant à un groupe.

Par exemple, la commande suivante n’exécute que la règle style/useNamingConvention, la règle style/noInferrableTypes et les règles appartenant au groupe a11y. Si la règle est désactivée dans la configuration, alors son niveau de sévérité est défini à error pour une règle recommandée, à warn sinon.

Fenêtre de terminal
biome lint --only=style/useNamingConvention --only=style/noInferrableTypes --only=a11y

Une règle peut être configurée en fonction de vos besoins.

Une règle est activée, que sa sévérité soit de type error, warn ou info. Vous pouvez désactiver une règle avec off.

La configuration suivante désactive la règle recommandée noDebugger et active les règles noShoutyConstants et useNamingConvention.

La sévérité de type warn est utile dans les cas où il y a une refactorisation en cours et un besoin de faire passer l’intégration continue. Le message du diagnostic est en jaune. Vous pouvez utiliser --error-on-warnings pour quitter avec un code d’erreur quand une règle configurée avec warn est déclenchée.

La sévérité de type info n’affectera pas le code du statut de sortie de la ligne de commande, même si --error-on-warnings est passée. Le message du diagnostic est en bleu.

biome.json
{
"linter": {
"rules": {
"suspicious": {
"noDebugger": "off",
"noConsoleLog": "info"
},
"style": {
"noShoutyConstants": "warn",
"useNamingConvention": "error"
}
}
}
}

Configurer la correction des règles

Section titled Configurer la correction des règles

Depuis la version v1.8.0, il est possible de configurer l’entité d’une correction, en utilisant l’option fix. Il y a trois options :

biome.json
{
"linter": {
"rules": {
"correctness": {
"noUnusedVariables": {
"level": "error",
"fix": "none"
}
},
"style": {
"useConst": {
"level": "warn",
"fix": "unsafe"
},
"useTemplate": {
"level": "warn",
"fix": "safe"
}
}
}
}
}

Quelques règles ont des options. Vous pouvez les configurer en déterminant la valeur de la règle différemment :

  • level indiquera le niveau de sévérité du diagnostic,
  • options changera en fonction de la règle.
biome.json
{
"linter": {
"rules": {
"style": {
"useNamingConvention": {
"level": "error",
"options": {
"strictCase": false
}
}
}
}
}
}

Il y a des fois où un développeur veut ignorer une règle de linting pour une ligne de code spécifique. Vous pouvez y parvenir en ajoutant un commentaire de suppression au-dessus de la ligne qui déclenche le diagnostic du linting.

Les commentaires de suppression ont le format suivant :

// biome-ignore lint: <explication>
// biome-ignore lint/suspicious/noDebugger: <explication>

Où :

  • biome-ignore est le début du commentaire de suppression ;
  • lint supprime l’application du linting ;
  • /suspicious/noDebugger : facultatif, groupe et nom de la règle que vous voulez supprimer ;
  • <explication> : explication de la raison pour laquelle la règle est désactivée.

En voici un exemple :

// biome-ignore lint: raison
debugger;
// biome-ignore lint/suspicious/noDebugger: raison
debugger;

Biome ne fournit pas de commentaires pour ignorer un fichier entier. Cependant, vous pouvez ignorer un fichier en utilisant le fichier de configuration de Biome. Notez que vous pouvez également ignorer les fichiers ignorés par votre VCS.

Migrer depuis d’autres outils de linting

Section titled Migrer depuis d’autres outils de linting

La plupart des règles de linting de Biome sont inspirées d’autres outils de linting. Si vous voulez migrer depuis d’autres outils de linting comme ESLint ou typescript-eslint, consultez la page des sources des règles. Si vous migrez depuis ESLint, nous avons un guide de migration dédié.