| name | roslyn-analyzer-development |
| description | Use esta skill para implementar ou revisar codigo do Roslyn Analyzer de complexidade, incluindo diagnostics, analise sintatica, analise semantica, performance, determinismo, empacotamento e isolamento do projeto original. |
Roslyn Analyzer Development
Objetivo
Guiar o desenvolvimento do ComplexityAnalysis.Analyzers como analyzer independente, performatico, deterministico e seguro para consumo via NuGet.
Regras obrigatorias
- O analyzer target e
netstandard2.0.
- O analyzer nao depende dos projetos originais.
- Nao criar
ProjectReference para ComplexityAnalysis.Core, ComplexityAnalysis.Roslyn, ComplexityAnalysis.Solver, ComplexityAnalysis.Engine, ComplexityAnalysis.Calibration ou ComplexityAnalysis.IDE.
- Nao fazer chamadas de rede.
- Nao fazer I/O em hot paths.
- Nao depender de banco, containers, filas, cloud ou infraestrutura.
- Evitar estado estatico mutavel.
- Respeitar
CancellationToken.
- Habilitar analise concorrente quando seguro.
- Tratar generated code explicitamente.
- Evitar
Microsoft.CodeAnalysis.Workspaces enquanto nao houver CodeFix ou necessidade comprovada.
- Usar apenas APIs necessarias de
Microsoft.CodeAnalysis.
- Performance do analyzer e requisito funcional.
- A analise deve ser deterministica.
- Resultados inconclusivos devem ser explicitamente representados.
- Preferir nao reportar diagnostico a produzir falso positivo de alta severidade.
- Qualquer logica portada do projeto original deve ter testes de caracterizacao.
Processo
- Leia
analyzer/AGENTS.md, o projeto alvo e os testes relacionados.
- Confirme que a mudanca pertence ao workspace
analyzer/.
- Para diagnostics, defina ID, categoria, severidade, mensagem, localizacao e comportamento negativo antes de implementar.
- Registre acoes Roslyn no nivel mais especifico suficiente.
- Evite trabalho repetido por node quando puder compartilhar dados imutaveis e seguros.
- Use
context.EnableConcurrentExecution() quando o analyzer for thread-safe.
- Defina politica de generated code com
ConfigureGeneratedCodeAnalysis.
- Passe
CancellationToken para APIs Roslyn que o aceitam.
- Evite alocacoes desnecessarias em callbacks muito frequentes.
- Prefira estruturas imutaveis ou locais a caches globais.
- Teste caminhos positivos, negativos, inconclusivos e edge cases.
Validacao
dotnet restore ./ComplexityAnalysis.Analyzers.sln
dotnet build ./ComplexityAnalysis.Analyzers.sln --configuration Release --no-restore
dotnet test ./ComplexityAnalysis.Analyzers.sln --configuration Release --no-build
Para mudancas de empacotamento, valide tambem:
dotnet pack ./src/ComplexityAnalysis.Analyzers/ComplexityAnalysis.Analyzers.csproj --configuration Release --no-build -p:PackageVersion=0.0.0-local