Aller au contenu

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.

uvx pyscn@latest analyze .

Commencer Voir sur GitHub

Binaire Go · aucune dépendance runtime Python · 100 000+ lignes/s · 33 règles

Control-flow graph for a function with unreachable code After the conditional, both branches return. A logging call written after the conditional is never reached, so pyscn flags it as unreachable-after-return. def process(x): if x is None: True return None False return compute(x) log("done") → flagged: unreachable-after-return

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

uvx pyscn@latest analyze .

Exécute la dernière version sans rien installer.

uv tool install pyscn
pipx install pyscn
pip install pyscn

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

uvx add-skills ludo-technologies/pyscn

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.