Best Practices für MDC-Regeln und Fehlerbehebung
tipp
MDC (Model-Driven Code) Regeln helfen Ihnen, eine konsistente Codequalität zu gewährleisten und repetitive Aufgaben in Cursor zu automatisieren.
MDC-Regeln verstehen
MDC-Regeln sind leistungsstarke Werkzeuge, die es Ihnen ermöglichen:
- Coding-Standards durchzusetzen
- Code-Transformationen zu automatisieren
- Benutzerdefinierte Validierungen zu implementieren
- Projektspezifische Richtlinien zu erstellen
MDC-Regeln einrichten
Grundlegende Struktur
Erstellen Sie ein .cursor/rules
Verzeichnis in Ihrem Projekt:
.cursor/
└── rules/
├── naming.json
├── formatting.json
└── custom-rules.json
Regelkonfiguration
Grundlegende Regelstruktur:
.cursor/rules/naming.json
{
"name": "Namenskonventionen",
"description": "Erzwingt konsistente Benennung im gesamten Projekt",
"rules": [
{
"pattern": "^[A-Z][a-zA-Z]*Component$",
"filePattern": "*.component.ts",
"message": "Komponentennamen müssen PascalCase sein und mit 'Component' enden"
}
]
}
Häufige Regeltypen
1. Namenskonventionen
{
"rules": [
{
"pattern": "^[a-z][a-zA-Z]*Service$",
"filePattern": "*.service.ts",
"message": "Service-Namen müssen camelCase sein und mit 'Service' enden"
},
{
"pattern": "^I[A-Z][a-zA-Z]*$",
"filePattern": "*.interface.ts",
"message": "Interface-Namen müssen mit 'I' beginnen und PascalCase verwenden"
}
]
}
2. Codestruktur
{
"rules": [
{
"pattern": "^import.*from",
"location": "top",
"message": "Imports müssen am Anfang der Datei stehen"
},
{
"maxLines": 300,
"filePattern": "*.ts",
"message": "Dateien sollten 300 Zeilen nicht überschreiten"
}
]
}
3. Dokumentationsanforderungen
{
"rules": [
{
"pattern": "^\\/\\*\\*[\\s\\S]*?\\*\\/",
"filePattern": "*.ts",
"message": "Alle Dateien müssen JSDoc-Dokumentation haben"
}
]
}
Erweiterte Regelkonfiguration
Verwendung von Variablen
{
"variables": {
"COMPONENT_PREFIX": "App",
"MAX_FILE_SIZE": 500
},
"rules": [
{
"pattern": "^${COMPONENT_PREFIX}[A-Z][a-zA-Z]*$",
"filePattern": "*.component.ts",
"message": "Komponenten müssen mit '${COMPONENT_PREFIX}' beginnen"
}
]
}
Verschachtelte Regeln
{
"rules": {
"naming": {
"components": [
{
"pattern": "^[A-Z][a-zA-Z]*Component$",
"severity": "error"
}
],
"services": [
{
"pattern": "^[a-z][a-zA-Z]*Service$",
"severity": "warning"
}
]
}
}
}
Behebung häufiger Probleme
Regel wird nicht ausgelöst
-
Regelsyntax überprüfen
{
"rules": [
{
"pattern": "^[A-Z][a-zA-Z]*$", // Gültiges Regex-Muster
"filePattern": "*.ts", // Gültiges Glob-Muster
"severity": "error" // Gültiger Schweregrad
}
]
} -
Dateipfad überprüfen
# Stellen Sie sicher, dass Regeln am richtigen Ort sind
.cursor/
└── rules/
└── your-rule.json
Leistungsprobleme
-
Muster optimieren
{
"rules": [
{
"pattern": "^[A-Z]\\w*$", // Effizienter als ^[A-Z][a-zA-Z]*$
"filePattern": "*.{ts,js}" // Erweiterungen gruppieren
}
]
} -
Ausschlüsse verwenden
{
"exclude": [
"node_modules/**",
"dist/**",
"build/**"
],
"rules": [...]
}
Best Practices
1. Organisation
.cursor/
└── rules/
├── naming/
│ ├── components.json
│ └── services.json
├── formatting/
│ ├── spacing.json
│ └── indentation.json
└── documentation/
└── jsdoc.json
2. Regeldokumentation
{
"name": "Komponentenbenennung",
"description": "Erzwingt konsistente Namenskonventionen für Komponenten",
"version": "1.0.0",
"author": "Ihr Team",
"rules": [...]
}
3. Regeln testen
Testdateien erstellen:
test/rules/naming.test.ts
describe('Namensregeln', () => {
it('sollte Komponentennamen validieren', () => {
// Testimplementierung
});
});
Integration mit CI/CD
GitHub Actions Beispiel
.github/workflows/mdc.yml
name: MDC-Validierung
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: MDC-Validierung ausführen
run: cursor validate-rules
Überwachung und Wartung
Regelstatistiken
cursor rules-stats
Regelmäßige Updates
- Wirksamkeit der Regeln überprüfen
- Muster basierend auf Feedback aktualisieren
- Falsch-positive Ergebnisse überwachen
- Schweregrade anpassen
tipp
Führen Sie ein Änderungsprotokoll für Ihre MDC-Regeln, um Änderungen und deren Auswirkungen zu verfolgen.