Partilhar via


Perguntas frequentes sobre análise de código no Visual Studio

Esta página contém respostas para algumas perguntas freqüentes sobre a análise de código baseada na plataforma de compilador .NET no Visual Studio.

Análise de código versus EditorConfig

Devo usar análise de código ou EditorConfig para verificar o estilo de código?

A análise de código e os arquivos EditorConfig trabalham lado a lado. Quando você define estilos de código em um arquivo EditorConfig ou na página Opções do editor de texto , na verdade está configurando os analisadores de código que são incorporados ao Visual Studio. Os arquivos EditorConfig podem ser usados para habilitar ou desabilitar regras do analisador e também para configurar pacotes do analisador NuGet.

EditorConfig versus conjuntos de regras

Devo configurar meus analisadores usando um conjunto de regras ou um arquivo EditorConfig?

Conjuntos de regras e arquivos EditorConfig podem coexistir e ambos podem ser usados para configurar analisadores. Os arquivos EditorConfig e os conjuntos de regras permitem habilitar e desabilitar regras e definir sua gravidade.

No entanto, no Visual Studio 2019 versão 16.5 e posterior, os arquivos de conjunto de regras são preteridos em favor dos arquivos EditorConfig e os projetos .NET Core e .NET 5+ não suportam todos os comandos de menu do conjunto de regras. Para obter mais informações, consulte Converter um arquivo de conjunto de regras existente em um arquivo EditorConfig.

Os arquivos EditorConfig oferecem maneiras adicionais de configurar regras:

Além de conjuntos de regras e arquivos EditorConfig, alguns analisadores são configurados através do uso de arquivos de texto marcados como arquivos adicionais para os compiladores C# e VB.

Observação

  • Os arquivos EditorConfig só podem ser usados para habilitar regras e definir sua gravidade no Visual Studio 2019 versão 16.3 e posterior.
  • Os arquivos EditorConfig não podem ser usados para configurar a análise herdada, enquanto os conjuntos de regras podem.

Análise de código em compilações de integração contínua (CI)

A análise de código baseada na plataforma do compilador .NET funciona em compilações de integração contínua (CI)?

Yes. Para analisadores instalados com o .NET SDK 5.0 ou superior, ou a partir de um pacote NuGet, essas regras são impostas no momento da compilação, inclusive durante uma compilação de CI. Os analisadores usados em compilações CI respeitam a configuração de regras de conjuntos de regras e arquivos EditorConfig. A partir do .NET 5.0, os analisadores de estilo de código que são incorporados no Visual Studio também estão incluídos no SDK do .NET e a maioria deles é aplicável em uma compilação de CI. Para obter mais informações, consulte Ativar na compilação.

Analisadores IDE versus StyleCop

Qual é a diferença entre os analisadores de código IDE do Visual Studio e os analisadores StyleCop?

O IDE do Visual Studio inclui analisadores internos que procuram problemas de estilo e qualidade de código. Essas regras ajudam você a usar novos recursos de linguagem à medida que são introduzidos e melhoram a capacidade de manutenção do seu código. Os analisadores IDE são atualizados continuamente com cada versão do Visual Studio.

Os analisadores StyleCop são analisadores de terceiros instalados como um pacote NuGet que verificam a consistência de estilo em seu código. Em geral, as regras do StyleCop permitem definir preferências pessoais para uma base de código sem recomendar um estilo em detrimento de outro.

Analisadores de código versus análise de legado

Qual é a diferença entre a análise herdada e a análise de código baseada na plataforma .NET Compiler?

Compilador .NET A análise de código baseada na plataforma analisa o código-fonte em tempo real e durante a compilação, enquanto a análise herdada analisa arquivos binários após a conclusão da compilação. Para obter mais informações, consulte Análise baseada em plataforma do compilador .NET versus análise herdada.

Analisadores FxCop versus analisadores .NET

Qual é a diferença entre analisadores FxCop e analisadores .NET?

Ambos os analisadores FxCop e analisadores .NET referem-se às implementações do analisador .NET Compiler Platform ("Roslyn") das regras de CA FxCop. Antes do Visual Studio 2019 16.8 e do .NET 5.0, esses analisadores eram fornecidos como Microsoft.CodeAnalysis.FxCopAnalyzerspacote NuGet. A partir do Visual Studio 2019 16.8 e do .NET 5.0, esses analisadores estão incluídos no SDK do .NET. Eles também estão disponíveis como Microsoft.CodeAnalysis.NetAnalyzerspacote NuGet. Considere migrar de analisadores FxCop para analisadores .NET.

Tratar avisos como erros

Meu projeto usa a opção build para tratar avisos como erros. Depois de migrar da análise herdada para a análise do código-fonte, todos os avisos de análise de código agora aparecem como erros. Como posso evitar isso?

Para evitar que avisos de análise de código sejam tratados como erros, siga estas etapas:

  1. Crie um arquivo .props com o seguinte conteúdo:

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. Adicione uma linha ao seu arquivo de projeto .csproj ou .vbproj para importar o arquivo .props criado na etapa anterior. Essa linha deve ser colocada antes de quaisquer linhas que importem os arquivos .props do analisador. Por exemplo, se o arquivo .props for chamado codeanalysis.props:

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

Página de propriedades da solução de análise de código

Onde está a página de propriedades Análise de Código para a solução?

A página de propriedades Análise de Código no nível da solução foi removida em favor do grupo de propriedades compartilhadas mais confiável. Para gerenciar a Análise de Código no nível do projeto, a página de propriedades Análise de Código ainda está disponível. (Para projetos gerenciados, também recomendamos migrar de conjuntos de regras para EditorConfig para configuração de regras.) Para compartilhar conjuntos de regras entre vários / todos os projetos em uma solução ou um repositório, recomendamos definir um grupo de propriedades com a propriedade CodeAnalysisRuleSet em um arquivo props/targets compartilhado ou um arquivo Directory.props/Directory.targets . Se você não tiver nenhum suporte ou destino comum que todos os seus projetos importem, considere adicionar esse grupo de propriedades a um arquivo Directory.props ou Directory.targets em um diretório de solução de nível superior, que é importado automaticamente em todos os arquivos de projeto definidos no diretório ou em seus subdiretórios.