Catalogue des règles¶
pyscn propose 33 règles réparties sur 7 catégories. Chaque règle dispose d'une page décrivant ce qu'elle détecte, pourquoi il s'agit d'un problème, un mauvais exemple et comment corriger.
Cliquez sur le nom d'une règle pour ouvrir sa page.
Code inatteignable¶
Code mort qui ne peut jamais s'exécuter. Détecté grâce à l'analyse d'accessibilité sur le graphe de flot de contrôle.
| Règle | Sévérité |
|---|---|
unreachable-after-return |
Critique |
unreachable-after-raise |
Critique |
unreachable-after-break |
Critique |
unreachable-after-continue |
Critique |
unreachable-after-infinite-loop |
Avertissement |
unreachable-branch |
Avertissement |
Code dupliqué¶
Fragments de code copiés-collés ou quasi identiques au sein du projet.
| Règle | Sévérité |
|---|---|
duplicate-code-identical |
Avertissement |
duplicate-code-renamed |
Avertissement |
duplicate-code-modified |
Info (activation manuelle) |
duplicate-code-semantic |
Avertissement |
Complexité¶
Fonctions trop ramifiées pour être testées ou raisonnées de manière fiable.
| Règle | Sévérité |
|---|---|
high-cyclomatic-complexity |
Selon seuil |
Conception des classes¶
Classes qui dépendent de trop d'éléments ou qui assument trop de responsabilités sans rapport.
| Règle | Sévérité |
|---|---|
high-class-coupling |
Selon seuil |
low-class-cohesion |
Selon seuil |
Injection de dépendances¶
Schémas de constructeurs et de collaborateurs qui nuisent à la testabilité.
| Règle | Sévérité |
|---|---|
too-many-constructor-parameters |
Avertissement |
global-state-dependency |
Erreur |
module-variable-dependency |
Avertissement |
singleton-pattern-dependency |
Avertissement |
concrete-type-hint-dependency |
Info |
concrete-instantiation-dependency |
Avertissement |
service-locator-pattern |
Avertissement |
Structure des modules¶
Problèmes du graphe d'imports : cycles, chaînes longues, violations de couches.
| Règle | Sévérité |
|---|---|
circular-import |
Selon la taille du cycle |
deep-import-chain |
Info |
layer-violation |
Selon la règle d'architecture |
low-package-cohesion |
Avertissement |
single-responsibility |
Avertissement / Erreur |
Données factices¶
Données fictives livrées par accident en production.
| Règle | Sévérité |
|---|---|
mock-keyword-in-code |
Info / Avertissement |
mock-domain-in-string |
Avertissement |
mock-email-address |
Avertissement |
placeholder-phone-number |
Avertissement |
placeholder-uuid |
Avertissement |
placeholder-comment |
Info |
repetitive-string-literal |
Info |
test-credential-in-code |
Avertissement |
Sélectionner les règles en ligne de commande¶
La plupart des utilisateurs exécutent toutes les règles avec pyscn analyze. Pour la CI, filtrez par catégorie d'analyseur :
pyscn check --select deadcode # uniquement les règles de code inatteignable
pyscn check --select clones # uniquement les règles de code dupliqué
pyscn check --select complexity # uniquement high-cyclomatic-complexity
pyscn check --select deps # circular-import + deep-import-chain + layer-violation
pyscn check --select di # toutes les règles d'injection de dépendances (activation manuelle)
pyscn check --select mockdata # toutes les règles de données factices (activation manuelle)
pyscn check --select complexity,deadcode,deps # combinaison
Consultez pyscn check pour la liste complète des options.
Signification des sévérités¶
| Sévérité | Intention |
|---|---|
| Critique | Presque toujours un bug. À corriger avant la fusion. |
| Erreur | Schéma à haut risque. Doit en général faire échouer la CI. |
| Avertissement | À examiner. Seuil d'échec par défaut pour pyscn check. |
| Info | Informatif. N'apparaît que lorsque min_severity = "info" ou équivalent. |
| Selon seuil | La sévérité dépend d'un seuil numérique (voir les options de la règle). |