MSTEST0079: Usar o atributo ArchitectureCondition em vez de verificações em tempo de execução

Property Value
ID da regra MSTEST0079
Título Use o atributo ArchitectureCondition em vez de verificações em tempo de execução
Category Usage
A correção é invasiva ou não invasiva Inquebrável
Ativado por padrão Sim
Severidade padrão Informações
Introduzido na versão 4.4.0 (pré-visualização)
Existe uma correção de código Sim, só para C#

Motivo

A primeira instrução de um método de teste compara-se ProcessArchitecture a um Architecture valor e depois retorna cedo ou chama Assert.Inconclusive, em vez de usar o [ArchitectureCondition] atributo.

Descrição da regra

Métodos de teste que comparam RuntimeInformation.ProcessArchitecture e depois retorno ou chamada Assert.Inconclusive antecipada devem usar o [ArchitectureCondition] atributo em vez disso. O atributo é mais declarativo e descobrível, e reporta o teste como saltado em vez de passado, o que um retorno antecipado não faz.

[TestMethod]
public void TestMethod()
{
    if (RuntimeInformation.ProcessArchitecture != Architecture.X64) return; // Violation
}

O analisador só reconhece a guarda quando é a primeira instrução do método, sem else desvio, e quando o membro referenciado Architecture tem uma flag correspondente TestArchitectures .

Como corrigir violações

Substitua a verificação de tempo de execução pelo [ArchitectureCondition] atributo.

[TestMethod]
[ArchitectureCondition(TestArchitectures.X64)]
public void TestMethod() { }

Uma correção em código C# substitui a guarda pelo atributo para ti. O código do Visual Basic tem este diagnóstico mas não tem uma correção automática; aplica o atributo manualmente.

Quando suprimir avisos

Podes suprimir este aviso se a tua verificação em tempo de execução for mais complexa do que uma simples guarda de primeira instrução, ou se precisares de lógica condicional que [ArchitectureCondition] não consegue expressar.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable MSTEST0079
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0079

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0079.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também