Aller au contenu

Référence de configuration

Chaque clé configurable dans .pyscn.toml (ou [tool.pyscn.*] dans pyproject.toml). Exécutez pyscn init pour générer un fichier de démarrage commenté.


[output]

Contrôle la façon dont les résultats sont rapportés.

Clé Type Défaut Description
format string "text" text, json, yaml, csv ou html. Les options en ligne de commande comme --json la surchargent.
directory string "" Répertoire de sortie. Vide = .pyscn/reports/ sous le CWD.
show_details bool false Inclut le détail par constatation dans le résumé.
sort_by string "complexity" name, complexity ou risk.
min_complexity int 1 Filtre les fonctions en dessous de cette complexité. Surcharge [complexity].min_complexity lorsqu'elle est définie.

[complexity]

Analyse de complexité cyclomatique.

Clé Type Défaut Description
enabled bool true Exécute l'analyseur.
low_threshold int 9 Borne supérieure du « risque faible » (incluse).
medium_threshold int 19 Borne supérieure du « risque moyen ».
max_complexity int 0 Seuil d'échec en CI. 0 = aucune limite.
min_complexity int 1 N'affiche pas les fonctions en dessous.
report_unchanged bool true Inclut les fonctions de complexité = 1.

Voir high-cyclomatic-complexity pour des recommandations de seuils.


[dead_code]

Détection de code mort.

Clé Type Défaut Description
enabled bool true Exécute l'analyseur.
min_severity string "warning" info, warning ou critical.
show_context bool false Inclut les lignes source environnantes.
context_lines int 3 Lignes de contexte (0–20).
sort_by string "severity" severity, line, file ou function.
detect_after_return bool true Signale les instructions après return.
detect_after_break bool true Signale les instructions après break.
detect_after_continue bool true Signale les instructions après continue.
detect_after_raise bool true Signale les instructions après raise.
detect_unreachable_branches bool true Signale les branches qui ne peuvent jamais être empruntées.
ignore_patterns string[] [] Motifs regex pour les lignes à ignorer.

[clones]

Détection de clones (l'analyseur le plus configurable).

Sélection des fragments

Clé Type Défaut Description
min_lines int 10 Nombre minimal de lignes pour considérer un fragment.
min_nodes int 20 Nombre minimal de nœuds AST.
skip_docstrings bool true Ignore les docstrings lors du hachage.

Seuils par type (0.0–1.0)

Clé Défaut Type de clone
type1_threshold 0.85 Identique (espaces/commentaires uniquement).
type2_threshold 0.75 Identifiants/littéraux renommés.
type3_threshold 0.70 Structurellement similaire avec modifications.
type4_threshold 0.65 Équivalence sémantique.
similarity_threshold 0.65 Minimum global pour tout clone.

Algorithme

Clé Type Défaut Description
cost_model_type string "python" default, python ou weighted.
ignore_literals bool false Traite les littéraux différents comme équivalents.
ignore_identifiers bool false Traite les noms de variables différents comme équivalents.
max_edit_distance float 50.0 Plafond sur la distance d'édition d'arbre.
enable_dfa bool true Analyse de flot de données pour Type-4.
enabled_clone_types string[] tous Sous-ensemble de type1, type2, type3, type4.

Accélération LSH

Clé Type Défaut Description
lsh_enabled true\|false\|"auto" "auto" Active LSH (auto = en fonction du nombre de fragments ou du nombre estimé de paires).
lsh_auto_threshold int 500 Seuil de fragments pour l'activation automatique ; auto s'active aussi au-delà de 10 000 paires estimées.
lsh_similarity_threshold float 0.50 Pré-filtre des candidats LSH.
lsh_bands int 32 Bandes LSH.
lsh_rows int 4 Lignes par bande.
lsh_hashes int 128 Nombre de fonctions de hachage.

Regroupement

Clé Type Défaut Description
grouping_mode string "connected" connected, star, complete_linkage, k_core.
grouping_threshold float 0.65 Similarité minimale pour le regroupement.
k_core_k int 2 Paramètre k pour le mode k_core.

Performance

Clé Type Défaut Description
max_memory_mb int 100 Plafond mémoire (Mo). 0 = pas de limite.
batch_size int 100 Fichiers par lot.
enable_batching bool true Traitement par lots.
max_goroutines int 4 Workers concurrents.
timeout_seconds int 300 Délai par analyse.

Filtrage de la sortie

Clé Type Défaut Description
min_similarity float 0.0 Filtre les paires en dessous.
max_similarity float 1.0 Filtre les paires au-dessus.
max_results int 10000 Nombre maximal de paires à rapporter. 0 = pas de limite.
show_details bool false Sortie verbeuse.
show_content bool false Inclut le code source dans le rapport.
sort_by string "similarity" similarity, size, location, type.
group_clones bool true Regroupe les clones associés.

[cbo]

Coupling Between Objects (couplage entre classes).

Clé Type Défaut Description
enabled bool true Exécute l'analyseur.
low_threshold int 3 Borne supérieure du « risque faible ».
medium_threshold int 7 Borne supérieure du « risque moyen ».
min_cbo int 0 Filtre les classes dont le CBO est en dessous.
max_cbo int 0 Filtre les classes au-dessus. 0 = pas de limite.
show_zeros bool false Inclut les classes avec CBO = 0.
include_builtins bool false Compte list/dict/str comme des dépendances.
include_imports bool true Compte les références aux modules importés.

[lcom]

Lack of Cohesion of Methods (LCOM4).

Clé Type Défaut Description
low_threshold int 2 Borne supérieure du « risque faible » (bonne cohésion).
medium_threshold int 5 Borne supérieure du « risque moyen ».

[analysis]

Règles de découverte des fichiers.

Clé Type Défaut Description
recursive bool true Descend dans les sous-répertoires.
follow_symlinks bool false Suit les liens symboliques.
include_patterns string[] ["**/*.py"] Motifs glob à inclure.
exclude_patterns string[] voir ci-dessous Motifs glob à exclure.

exclude_patterns par défaut :

[
  "test_*.py", "*_test.py",
  "**/__pycache__/*", "**/*.pyc",
  "**/.pytest_cache/", ".tox/",
  "venv/", "env/", ".venv/", ".env/",
]

[architecture]

Validation des couches. Toutes les clés sont facultatives — si vous ne définissez pas de couches, l'analyse architecturale s'exécute en mode permissif.

Clé Type Défaut Description
enabled bool true Exécute la validation des couches.
validate_layers bool true Vérifie les règles inter-couches.
validate_cohesion bool true Vérifie la cohésion des paquets.
validate_responsibility bool true Vérifie le nombre de responsabilités des modules.
strict_mode bool true Validation stricte.
fail_on_violations bool false Code de sortie non nul en cas de violation.
min_cohesion float 0.5 Cohésion minimale des paquets.
max_coupling int 10 Couplage inter-couches maximal.
max_responsibilities int 3 Préoccupations maximales par module.
neutral_prefixes string[] [] Segments de module de premier niveau à retirer avant la correspondance des paquets de couche. Utile lorsque chaque module commence par le même préfixe projet (ex. app, src).

Définitions de couches

[[architecture.layers]]
name = "presentation"
packages = ["router", "routers", "handler", "handlers", "controller", "api"]

[[architecture.layers]]
name = "application"
packages = ["service", "services", "usecase", "usecases"]

[[architecture.layers]]
name = "domain"
packages = ["model", "models", "entity", "entities"]

[[architecture.layers]]
name = "infrastructure"
packages = ["repository", "repositories", "db", "database"]

Règles de couches

[[architecture.rules]]
from = "presentation"
allow = ["application", "domain"]
deny = ["infrastructure"]

[[architecture.rules]]
from = "application"
allow = ["domain"]

Préfixes neutres

Si chaque module du projet commence par le même segment racine (app., src., ...), la correspondance des couches peut échouer car le préfixe projet masque le nom de la couche. Listez ces segments sous neutral_prefixes et pyscn les retirera avant de résoudre un module vers une couche :

[architecture]
neutral_prefixes = ["app", "src"]

Avec ce réglage, app.routers.user_router est mis en correspondance comme routers.user_router et résolu vers la couche presentation.


[dependencies]

Analyse des dépendances entre modules. Opt-in pour pyscn check ; toujours active pour pyscn analyze sauf si ignorée.

Clé Type Défaut Description
enabled bool false Exécute l'analyseur (analyze l'exécute toujours quoi qu'il en soit).
include_stdlib bool false Inclut les imports de la bibliothèque standard.
include_third_party bool true Inclut les imports tiers.
follow_relative bool true Suit les imports relatifs.
detect_cycles bool true Détecte les imports circulaires.
calculate_metrics bool true Calcule Ca/Ce/I/A/D.
find_long_chains bool true Signale les plus longues chaînes de dépendance.
cycle_reporting string "summary" all, critical, summary.
max_cycles_to_show int 10 Plafond sur les cycles rapportés.
sort_by string "name" name, coupling, instability, distance, risk.
show_matrix bool false Inclut la matrice de dépendances.
generate_dot_graph bool false Émet une sortie Graphviz DOT.

[mock_data]

Détection de données factices / placeholder. Opt-in.

Clé Type Défaut Description
enabled bool false Exécute l'analyseur.
min_severity string "warning" info, warning, error.
ignore_tests bool true Ignore les fichiers de test.
keywords string[] intégré Mots signalés comme indicateurs de mock.
domains string[] intégré Domaines signalés (example.com, test.com, etc.).
ignore_patterns string[] [] Fichiers/motifs regex à ignorer.

[di]

Détection d'anti-patterns d'injection de dépendances. Opt-in.

Clé Type Défaut Description
enabled bool false Exécute l'analyseur.
min_severity string "warning" info, warning, error.
constructor_param_threshold int 5 Signale les __init__ avec plus de paramètres.

Correspondance option CLI → clé de configuration

Les options qui ne se mappent pas directement sur une clé de configuration (--select, --skip-*, --no-open) fonctionnent par-dessus la configuration chargée.

Option CLI Clé de configuration
--config <path> — (contourne la découverte)
--json/--yaml/--csv/--html [output] format
--min-complexity [complexity] min_complexity
--max-complexity [complexity] max_complexity
--min-severity [dead_code] min_severity
--clone-threshold [clones] similarity_threshold
--min-cbo [cbo] min_cbo
--max-cycles — (commande check uniquement)

Voir aussi