Aller au contenu

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).