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.
Recommended
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
.
Observação
As regras a seguir são completamente opcionais e não estão habilitadas nos modos Default
, Recommended
ou All
:
- MSTEST0015: o método de teste não deve ser ignorado
- MSTEST0019: prefira métodos TestInitialize em vez de construtores
- MSTEST0020: Prefira construtores ao invés de métodos TestInitialize
- MSTEST0021: Prefira Dispose em vez de métodos TestCleanup
- MSTEST0022: Prefira TestCleanup em vez de métodos Dispose
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