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.