roslyn-analyzers
Desenvolve e testa ferramentas que analisam e corrigem código C# e VB.NET. Ajuda a garantir a qualidade e a conformidade do código.
O que ela faz
Esta ferramenta ajuda desenvolvedores a criar e melhorar verificações automáticas de código (analisadores Roslyn) e geradores de código. Ela garante que o código siga regras específicas e ajude a encontrar erros.
Quando usar
- ✓Ao criar novas verificações para encontrar erros comuns no código.
- ✓Ao corrigir problemas que os analisadores já encontraram.
- ✓Ao otimizar como o código é gerado automaticamente.
Exemplo do que pedir para a IA
“Como posso criar um analisador que verifica se todas as variáveis têm nomes descritivos?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela funciona inspecionando o código enquanto ele é escrito ou compilado. Usa regras para entender a estrutura e os símbolos do código, identificando padrões que precisam de atenção ou correção.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill roslyn-analyzersOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/roslyn-analyzers/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Analisadores Roslyn e Geradores de Código Fonte
Use este fluxo de trabalho ao adicionar ou alterar um analisador Roslyn, correção de código, gerador de código fonte, testes, dependências ou layout de pacote. Primeiro, inspecione os frameworks de destino do repositório, o gerenciamento central de pacotes, o framework de teste, as convenções de analisadores e geradores, a alocação de IDs de diagnóstico, a localização e a embalagem. Preserve as convenções estabelecidas, a menos que elas entrem em conflito com as regras de compatibilidade abaixo.
Regras de design inegociáveis
- Prefira a análise baseada em
IOperationsempre que possível. Registre oOperationKindmais restrito aplicável e inspecione operações tipadas comoIInvocationOperation,IAwaitOperationouIObjectCreationOperation. Isso geralmente suporta C# e VB com um analisador e fornece acesso direto a símbolos e conversões. - Use análise de sintaxe apenas para regras inerentemente sintáticas ou sintaxe não representada adequadamente por
IOperation. Um callback de nó de sintaxe já possui umSemanticModel; não chameCompilation.GetSemanticModelou obtenha outro modelo semântico dele. A criação repetida de modelos semânticos é cara e muitas vezes indica que uma ação de operação ou símbolo é a melhor abstração. - Todo analisador deve suportar C#. O suporte a VB.NET é opcional até ser solicitado ou o precedente estabelecido no repositório exigir. Um analisador de operação independente de linguagem pode declarar ambas as linguagens. Se o suporte a VB for prometido, inclua trechos equivalentes em C# e VB nos testes; não infira a correção do VB apenas pela implementação compartilhada.
- Mantenha os provedores de analisadores e correções de código em assemblies distintos. O projeto do analisador nunca deve referenciar pacotes Roslyn Workspaces. Dependências de Workspaces pertencem apenas aos projetos de correção de código e teste.
- Callbacks de analisadores devem ser sem estado ou seguros para concorrência. Chame
EnableConcurrentExecution(). Faça uma escolha explícita de código gerado comConfigureGeneratedCodeAnalysis(...); siga a política do repositório em vez de aceitar silenciosamente o padrão. - Respeite o cancelamento onde as APIs expõem um token. Não retenha compilações, operações, árvores de sintaxe, símbolos ou modelos semânticos em estado estático.
- Evite
InternalsVisibleTo. Teste analisadores por meio de suas APIs públicasDiagnosticAnalyzereCodeFixProvidere do harness de teste do Roslyn. Um pequeno auxiliar de analisador pode ser público quando o teste direto é genuinamente útil, mas a maior parte do comportamento deve ser testada de ponta a ponta. - Centralize nomes de metadados e nomes de membros em vez de propagar strings mágicas. Use um catálogo estático compartilhado para nomes de tipos totalmente qualificados, namespaces e nomes de membros de API.
- Nunca identifique um símbolo, incluindo uma classe de atributo, chamando
ToDisplayString()e comparando o resultado com um literal de string. Resolva um tipo nomeado esperado doCompilationuma vez por nome de metadado. Para resolver um método, propriedade, campo ou evento, primeiro resolva seu tipo contêiner, depois selecione o membro esperado por nome e assinatura. Compare os símbolos encontrados comSymbolEqualityComparer.Default.Equals(actual, expected). Quando as substituições genéricas forem irrelevantes, compare tipos nomeados, propriedades, campos e eventos porOriginalDefinition; compare métodos após substituir um método de extensão reduzido porReducedFrom ?? methode, em seguida, obterOriginalDefinition. Normalize os símbolos esperados e encontrados, e inspecione os argumentos de tipo separadamente quando eles fazem parte da correspondência. Strings de exibição são para apresentação, não para identidade, e podem variar com formatação, aliases, qualificação, nulidade e outro contexto. - Documente cada ID de diagnóstico. Quando o repositório usa Docfx, coloque a documentação do analisador sob sua árvore Docfx, tipicamente
docfx/analyzers, e inclua cada página na tabela de conteúdo relevante. - Defina a versão de cada assembly de analisador com precisão suficiente para que cada commit produza uma versão de assembly única. Ao usar Nerdbank.GitVersioning, dê a cada projeto de analisador seu próprio
version.jsoncomassemblyVersion.precisiondefinido comorevisione garanta que as propriedades MSBuild de todo o repositório não impeçam que esse arquivo seja descoberto. - Geradores de código fonte devem implementar
IIncrementalGenerator, nãoISourceGenerator. Projete o grafo do provedor para que as entradas inalteradas permaneçam em cache e não regenerem a saída. - Geradores de código fonte devem usar uma pequena abstração
SourceWriterpara novas linhas determinísticas, indentação, codificação e saída balanceada. Comece em SourceWriter.cs e adapte seu namespace e detalhes de framework de destino ao repositório receptor.
…
Perguntas frequentes
O que são 'analisadores Roslyn'?
São ferramentas que analisam seu código C# ou VB.NET para encontrar possíveis problemas, sugerir melhorias ou até mesmo corrigir automaticamente.
O que são 'geradores de código'?
São programas que criam código automaticamente com base em outras partes do seu projeto, economizando tempo e reduzindo erros manuais.
Preciso saber muito sobre programação para usar isso?
Esta ferramenta é para desenvolvedores que já escrevem código. Ela ajuda a tornar o código deles melhor e mais eficiente.
Detalhes
Descrição original do autor
Build, review, debug, package, and test Roslyn diagnostic analyzers, code fix providers, and incremental source generators. Use for DiagnosticAnalyzer, CodeFixProvider, IIncrementalGenerator, IOperation analysis, Microsoft.CodeAnalysis dependency pinning, Roslyn test harnesses, C#/VB tests, and analyzer NuGet packaging.
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5349
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC