Pular para o conteúdo principal

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

  1. 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
    }
    ]
    }
  2. Verificar Caminho do Arquivo

    # Garantir que as regras estão no local correto
    .cursor/
    └── rules/
    └── your-rule.json

Problemas de Performance

  1. Otimizar Padrões

    {
    "rules": [
    {
    "pattern": "^[A-Z]\\w*$", // Mais eficiente que ^[A-Z][a-zA-Z]*$
    "filePattern": "*.{ts,js}" // Agrupar extensões
    }
    ]
    }
  2. 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

  1. Verificar eficácia das regras
  2. Atualizar padrões com base em feedback
  3. Monitorar resultados falso-positivos
  4. Ajustar níveis de severidade
dica

Mantenha um registro de alterações das regras MDC para rastrear mudanças e seus impactos.

Recursos Relacionados