Compartilhar via


Análise de código MSTest

As regras de análise MSTest ("MSTESTxxxx") inspecionam o código em C# ou no Visual Basic para analisar a segurança, o desempenho, o design e problemas diversos.

Dica

Se você estiver usando o Visual Studio, muitas regras do analisador têm correções de código associadas que podem ser aplicadas para corrigir o problema. As correções de código são mostradas no menu do ícone de lâmpada.

As regras são organizadas em categorias, como desempenho, uso etc.

Começando com MSTest.TestFramework 3.7, o pacote NuGet MSTest.Analyzers é uma dependência do framework. Para versões anteriores, você precisa usar o metapacote MSTest ou adicionar explicitamente uma referência de pacote para MSTest.Analyzers.

MSTestAnalysisMode

A partir do MSTest 3.8, uma propriedade MSBuild chamada MSTestAnalysisMode está disponível para determinar quais analisadores estão habilitados em qual severidade.

Dica

Para ver quais regras estão habilitadas e com qual gravidade para cada modo, navegue até o pacote da versão desejada no cache do NuGet, localize o diretório globalconfigs e abra o arquivo .globalconfig correspondente ao modo de análise. Para obter mais informações sobre como localizar o diretório de cache do NuGet, consulte Gerenciamento de pacotes globais, cache e pastas temporárias. Nesse diretório, localize o diretório mstest.analyzers, então a versão 3.8 ou superior e, em seguida, globalconfigs. Como alternativa, você pode baixar o pacote NuGet da versão de interesse do nuget.org e exibi-lo no Gerenciador de Pacotes NuGet (aplicativo do Windows) ou exibir diretamente na versão do aplicativo Web do NuGet Package Explorer.

Os valores disponíveis para esta propriedade:

None

Esse valor configura todos os analisadores para o nível de severidade none, desabilitando-os. Em seguida, você pode habilitar analisadores individuais usando arquivos .editorconfig ou .globalconfig.

Default

Essa configuração segue o comportamento documentado padrão para cada regra.

  • As regras que são habilitadas por padrão usarão a severidade padrão.
  • As regras desabilitadas por padrão usarão a gravidade none.

Observação

As regras que são habilitadas por padrão como avisos são violações que devem causar problemas em tempo de execução.

Esse é o modo que esperamos que a maioria dos desenvolvedores use. As regras habilitadas por padrão com a gravidade Informações (suggestion) são escalonadas para avisos. Além disso, determinadas regras podem ser escalonadas para erros nos modos Recommended e All. Por exemplo, MSTEST0003: os métodos de teste devem ter layout válido é escalonado para erro nos modos Recommended e All.

All

Esse modo é mais agressivo do que Recommended. Todas as regras são habilitadas como avisos. Conforme mencionado para o modo Recommended, determinadas regras podem ser escalonadas para erros nos modos Recommended e All. Por exemplo, MSTEST0003: os métodos de teste devem ter layout válido é escalonado para erro nos modos Recommended e All.

Categorias

Regras de design

Regras de projeto ajudam você a criar e manter conjuntos de testes que seguem as diretrizes adequadas de projeto e boas práticas.

Regras de desempenho

Regras de desempenho dão suporte a testes de alto desempenho.

Regras de supressão

Regras de supressão dão suporte a supressão de diagnósticos de outras regras.

Regras de uso

As regras de uso dão suporte ao uso adequado de MSTest.

MSTESTEXP

Várias APIs do MSTest são decoradas com o ExperimentalAttribute. Esse atributo indica que a API é experimental e pode ser removida ou alterada em versões futuras do MSTest. O atributo é usado para identificar APIs que ainda não estão estáveis e podem não ser adequadas para uso em produção.

O diagnóstico MSTESTEXP alerta você para usar uma API experimental em seu código. Para suprimir esse diagnóstico com SuppressMessageAttribute, adicione o seguinte código ao seu projeto:

using System.Diagnostics.CodeAnalysis;

[assembly: SuppressMessage("MSTESTEXP", "Justification")]

Como alternativa, você pode suprimir esse diagnóstico com a diretiva de pré-processador adicionando o seguinte código ao seu projeto:

#pragma warning disable MSTESTEXP
        // API that is causing the warning.
#pragma warning restore MSTESTEXP