Analyse statique structurelle pour Python
pyscn¶
pyscn lit Python comme un compilateur — graphes de flux de contrôle, arbres syntaxiques, graphes d'imports. C'est ainsi qu'il détecte ce que les linters ligne par ligne ne voient pas : du code mort laissé après un return, de la logique dupliquée sous un autre nom, et des modules pris dans des cycles silencieux.
Ce qu'il détecte¶
-
Code inatteignable
L'analyse d'accessibilité basée sur le CFG détecte le code mort laissé après
return,raise,break,continue, ou après une branche toujours vraie. -
Code dupliqué
La distance d'édition d'arbres APTED combinée au LSH détecte quatre types de clones : identique, renommé, modifié, sémantique.
-
Complexité
Complexité cyclomatique par fonction, avec des seuils ajustables par projet.
-
Conception de classes
Les métriques de couplage CBO et de cohésion LCOM4 révèlent les classes qui font trop, ou trop peu, ensemble.
-
Imports circulaires
L'algorithme SCC de Tarjan détecte les cycles d'imports avant qu'ils ne provoquent une
ImportErrorà l'exécution. -
Structure des modules
Le clustering de Leiden sur le graphe d'imports révèle quels modules devraient vraiment être ensemble — et lesquels non.
Installation¶
Voir Installation pour toutes les options.
Démarrage rapide¶
pyscn analyze . # analyse complète, rapport HTML
pyscn check --select complexity,deadcode src/ # garde-fou CI
pyscn init # génère .pyscn.toml
Voir Démarrage rapide et le Catalogue de règles.
Intégration avec les agents IA¶
Installe des Agent Skills qui apprennent à Claude Code, Cursor, Codex, Gemini CLI et autres agents de codage quand et comment lancer chaque analyse. Voir Agent Skills, ou utilisez le serveur MCP pour des appels d'outils structurés.