Aller au contenu principal

Meilleures pratiques pour les règles MDC

Les règles MDC (Model-Driven Code) sont un outil puissant pour maintenir la qualité et la cohérence du code. Ce guide présente les meilleures pratiques pour écrire et gérer ces règles.

Bases des règles MDC​

Structure de base​

rule:
name: "Nom de la règle"
description: "Description de la règle"
pattern: "Motif à rechercher"
message: "Message d'erreur"
severity: "error|warning|info"

Syntaxe de base​

# Règle simple
rule:
name: "Vérification des imports"
pattern: "import.*from.*"
message: "Utilisez des imports nommés"

# Règle avec conditions
rule:
name: "Longueur de fonction"
pattern: "function.*{"
conditions:
- "lines > 50"
message: "La fonction est trop longue"

Meilleures pratiques​

1. Nommage des règles​

# Bon
rule:
name: "no-console-log"
description: "Interdit l'utilisation de console.log"

# À éviter
rule:
name: "rule1"
description: "Une règle"

2. Descriptions claires​

# Bon
rule:
name: "no-var"
description: "Utilisez 'let' ou 'const' au lieu de 'var' pour une meilleure portée des variables"

# À éviter
rule:
name: "no-var"
description: "Ne pas utiliser var"

3. Correspondance de motifs​

# Utiliser des motifs précis
rule:
pattern: "\\bvar\\s+\\w+\\s*="

# Éviter les motifs trop généraux
rule:
pattern: "var"

Techniques avancées​

1. Transformations conditionnelles​

rule:
name: "convert-to-arrow"
pattern: "function\\s+\\w+\\s*\\([^)]*\\)\\s*{"
transform:
type: "arrow"
conditions:
- "!usesThis"
- "!usesArguments"

2. Contexte de code​

rule:
name: "react-hooks"
pattern: "useEffect\\("
context:
required:
- "import.*react"
forbidden:
- "class.*extends.*Component"

3. Validation personnalisée​

rule:
name: "custom-validation"
pattern: "\\w+"
validate:
function: "customValidator"
params:
maxLength: 50
allowedChars: "[a-zA-Z0-9_]"

Test des règles​

1. Tests unitaires​

test:
rule: "no-console-log"
cases:
- code: "console.log('test')"
shouldFail: true
- code: "logger.info('test')"
shouldFail: false

2. Tests d'intégration​

test:
rule: "react-hooks"
files:
- "src/components/TestComponent.tsx"
- "src/hooks/useCustomHook.ts"
expectedErrors: 2

Gestion des règles​

1. Organisation​

# Grouper les règles par catégorie
categories:
- name: "React"
rules:
- "react-hooks"
- "react-props"
- name: "TypeScript"
rules:
- "no-any"
- "strict-null"

2. Versionnement​

rule:
name: "no-console-log"
version: "1.0.0"
deprecated: false
replacement: "use-logger"

Dépannage​

1. Erreurs courantes​

# Problème : Motif trop général
rule:
pattern: ".*" # Trop général

# Solution : Motif plus spécifique
rule:
pattern: "\\bconsole\\.log\\("

2. Débogage​

rule:
name: "debug-rule"
pattern: "\\w+"
debug: true
logLevel: "verbose"

Optimisation des performances​

1. Optimisation des motifs​

# Utiliser des motifs optimisés
rule:
pattern: "(?=.*error).*" # Lookahead positif

# Éviter les motifs coûteux
rule:
pattern: ".*error.*" # Moins efficace

2. Gestion des ressources​

rule:
name: "resource-intensive"
pattern: "complex-pattern"
options:
maxMatches: 100
timeout: 5000

Considérations de sécurité​

1. Validation des entrées​

rule:
name: "input-validation"
pattern: "\\w+"
validate:
sanitize: true
maxLength: 100
allowedChars: "[a-zA-Z0-9_-]"

2. Contrôle d'accès​

rule:
name: "sensitive-data"
pattern: "password|token|key"
access:
roles: ["admin", "security"]
audit: true

Conclusion​

Les règles MDC sont un outil puissant pour maintenir la qualité du code. En suivant ces meilleures pratiques, vous pouvez créer des règles efficaces et maintenables.

Ressources supplémentaires :


Dernière mise à jour : Février 2025 - Ce guide couvre Cursor version 0.43.