Melhores Práticas para Regras MDC e Solução de Problemas
dica
Regras MDC (Model-Driven Code) ajudam você a manter uma qualidade de código consistente e automatizar tarefas repetitivas no Cursor.
Entendendo Regras MDC
Regras MDC são ferramentas poderosas que permitem:
- Impor padrões de codificação
- Automatizar transformações de código
- Implementar validações personalizadas
- Criar diretrizes específicas para projetos
Configurando Regras MDC
Estrutura Básica
Crie um diretório .cursor/rules
em seu projeto:
.cursor/
└── rules/
├── naming.json
├── formatting.json
└── custom-rules.json
Configuração de Regras
Estrutura básica de regras:
.cursor/rules/naming.json
{
"name": "Convenções de Nomenclatura",
"description": "Impõe nomenclatura consistente em todo o projeto",
"rules": [
{
"pattern": "^[A-Z][a-zA-Z]*Component$",
"filePattern": "*.component.ts",
"message": "Nomes de componentes devem estar em PascalCase e terminar com 'Component'"
}
]
}
Tipos Comuns de Regras
1. Convenções de Nomenclatura
{
"rules": [
{
"pattern": "^[a-z][a-zA-Z]*Service$",
"filePattern": "*.service.ts",
"message": "Nomes de serviços devem estar em camelCase e terminar com 'Service'"
},
{
"pattern": "^I[A-Z][a-zA-Z]*$",
"filePattern": "*.interface.ts",
"message": "Nomes de interfaces devem começar com 'I' e usar PascalCase"
}
]
}
2. Estrutura de Código
{
"rules": [
{
"pattern": "^import.*from",
"location": "top",
"message": "Importações devem estar no topo do arquivo"
},
{
"maxLines": 300,
"filePattern": "*.ts",
"message": "Arquivos não devem exceder 300 linhas"
}
]
}
3. Requisitos de Documentação
{
"rules": [
{
"pattern": "^\\/\\*\\*[\\s\\S]*?\\*\\/",
"filePattern": "*.ts",
"message": "Todos os arquivos devem ter documentação JSDoc"
}
]
}
Configuração Avançada de Regras
Usando Variáveis
{
"variables": {
"COMPONENT_PREFIX": "App",
"MAX_FILE_SIZE": 500
},
"rules": [
{
"pattern": "^${COMPONENT_PREFIX}[A-Z][a-zA-Z]*$",
"filePattern": "*.component.ts",
"message": "Componentes devem começar com '${COMPONENT_PREFIX}'"
}
]
}
Regras Aninhadas
{
"rules": {
"naming": {
"components": [
{
"pattern": "^[A-Z][a-zA-Z]*Component$",
"severity": "error"
}
],
"services": [
{
"pattern": "^[a-z][a-zA-Z]*Service$",
"severity": "warning"
}
]
}
}
}
Solucionando Problemas Comuns
Regra Não Ativada
-
Verificar Sintaxe da Regra
{
"rules": [
{
"pattern": "^[A-Z][a-zA-Z]*$", // Padrão regex válido
"filePattern": "*.ts", // Padrão glob válido
"severity": "error" // Nível de severidade válido
}
]
} -
Verificar Caminho do Arquivo
# Garantir que as regras estão no local correto
.cursor/
└── rules/
└── your-rule.json
Problemas de Performance
-
Otimizar Padrões
{
"rules": [
{
"pattern": "^[A-Z]\\w*$", // Mais eficiente que ^[A-Z][a-zA-Z]*$
"filePattern": "*.{ts,js}" // Agrupar extensões
}
]
} -
Usar Exclusões
{
"exclude": [
"node_modules/**",
"dist/**",
"build/**"
],
"rules": [...]
}
Melhores Práticas
1. Organização
.cursor/
└── rules/
├── naming/
│ ├── components.json
│ └── services.json
├── formatting/
│ ├── spacing.json
│ └── indentation.json
└── documentation/
└── jsdoc.json
2. Documentação de Regras
{
"name": "Nomenclatura de Componentes",
"description": "Impõe convenções consistentes de nomenclatura de componentes",
"version": "1.0.0",
"author": "Sua Equipe",
"rules": [...]
}
3. Testando Regras
Crie arquivos de teste:
test/rules/naming.test.ts
describe('Regras de Nomenclatura', () => {
it('deve validar nomes de componentes', () => {
// Implementação de teste
});
});
Integração com CI/CD
Exemplo do GitHub Actions
.github/workflows/mdc.yml
name: Validação MDC
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Executar validação MDC
run: cursor validate-rules
Monitoramento e Manutenção
Estatísticas de Regras
cursor rules-stats
Atualizações Periódicas
- Verificar eficácia das regras
- Atualizar padrões com base em feedback
- Monitorar resultados falso-positivos
- Ajustar níveis de severidade
dica
Mantenha um registro de alterações das regras MDC para rastrear mudanças e seus impactos.