Home

CrisPy

v1.0Python 3.8+VS Code

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 problèmes dès leur apparition

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.

Des explications claires

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.

Intégration avec VS Code

Diagnostics intégrés, suggestions de correction rapide et un panneau CrisPy dédié — le tout sans quitter votre éditeur.

Règles centralisées

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

Example

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

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 unique

Concepts clés

ConceptDescription
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
RulesetUn 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"
  }
}

Consultez la documentation

Règles

Parcourez toutes les règles avec leurs exemples

Naviguez à l'aide de la barre de navigation ou de la barre de recherche
Extension VS Code

Guide d'installation, captures d'écran et paramètres de l'extension.

Configuration
En cour de production...
Contribuer

É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 CrisPy

Consultez le Guide de contribution pour savoir comment écrire et tester une nouvelle règle.