CrisPy
CrisPy est une plateforme d'analyse statique basée sur des règles qui combine un analyseur Python, une extension VS Code et une documentation interactive afin de détecter et d'expliquer les problèmes liés au code Python, en mettant l'accent sur les performances.
Pourquoi CrisPy ?
La plupart des outils d'analyse statique vous indiquent quoi ne va pas. CrisPy vous explique pourquoi c'est important et comment y remédier — grâce à des règles conçues pour détecter les pièges réels en matière de performances dans les bases de code Python.
Détecter les anti-patterns de performance dès la phase de développement, avant qu'ils n'atteignent la phase de révision du code ou la mise en production.
Chaque règle est accompagnée d'une explication en langage clair, d'un niveau de sévérité et d'au moins un exemple de correction.
Diagnostics intégrés, suggestions de correction rapide et un panneau CrisPy dédié — le tout sans quitter votre éditeur.
Les règles sont définies une seule fois et partagées entre l'interface en ligne de commande, l'extension et la documentation
Comment ça marche
CrisPy se compose de trois couches étroitement intégrées :
1
Analyseur Python
Le moteur principal analyse votre code source Python pour le convertir en un AST et applique à celui-ci chacune des règles enregistrées. Les résultats sont générés sous forme de JSON structuré, ce qui permet de les exploiter facilement depuis n'importe quel outil.
2
Extension VS Code
L'extension intègre l'analyseur et affiche ses résultats sous forme de diagnostics natifs de VS Code. Passez la souris sur un avertissement pour lire l'explication complète de la règle sans quitter votre fichier.
3
Documentation interactive
Cette plateforme constitue la source de vérité unique pour chaque règle de typage. Chaque page détaille les raisons pour lesquelles une pratique est déconseillée, présente les bénéfices de l'approche recommandée, et propose des exemples de code concrets (avant/après). Vous y trouverez également des comparaisons avec d'autres langages ainsi que les options de configuration pour vos outils d'analyse statique.
Démarrage rapide
Soyez opérationnel en moins d'une minute.
Install the VS Code extension
Recherchez CrisPy dans la boutique d'extensions de VS Code, ou installez-le directement :
code --install-extension snail-unamur.crispyExample
Considérons le code suivant :
# ❌ Avant — concaténation de chaînes de caractères avec un temps d'exécution quadratique dans une boucle
mots = ["Python", "est", "génial"]
phrase = ""
for mot in mots:
phrase += mot + " " # Crée une nouvelle chaîne à chaque itération
print(phrase)CrisPy déclenche :
PY002 [warning] Concaténation de chaînes à l'intérieur d'une boucle détectée.
Utilisez plutôt "".join(...) pour éviter les copies en mémoire de complexité O(n²).Après avoir appliqué la solution proposée :
# ✅ Après — Python linéaire et idiomatique
mots = ["Python", "est", "génial"]
phrase = " ".join(mots) # Allocation mémoire uniqueConcepts clés
| Concept | Description |
|---|---|
| Rule(Règle) | Un vérificateur nommé et versionné qui cible un pattern spécifique dans le code Python |
| Severity(Sévérité) | info, warning(alert), or error(erreur) |
| Analyzer(Analyseur) | Moteur Python chargé d'exécuter les règles |
| Ruleset | Un ensemble de règles nommé pouvant être activé ou désactivé en bloc |
Configuration
Les règles sont définies de manière centralisée dans :
packages/rules/src/rules.json{
"PY001": {
"title": "Prefer NumPy Array",
"severity": "warning",
"docsPath": "/rules/py001",
"category": "performance"
}
}ℹ️ La configuration est facultative. CrisPy est livré avec des paramètres par défaut judicieux et l' ensemble complet de règles « performance » activé par défaut.
Consultez la documentation
Parcourez toutes les règles avec leurs exemples
Guide d'installation, captures d'écran et paramètres de l'extension.
Écrivez vos propres règles et soumettez-les aux développeurs en charge.
Contributing
CrisPy is open source. Rules, bug reports, and documentation improvements are all welcome.
git clone https://github.com/snail-unamur/CrisPy
cd CrisPyConsultez le Guide de contribution pour savoir comment écrire et tester une nouvelle règle.
⚠️ CrisPy est un analyseur statique : il n'exécute jamais votre code. Toutes les analyses sont effectuées sur l'AST et le code source brut.
