MSTEST0079: usar o atributo ArchitectureCondition em vez de verificações de runtime

Property Value
ID da regra MSTEST0079
Título Usar o atributo ArchitectureCondition em vez de verificações de runtime
Categoria Uso
Correção é disruptiva ou não disruptiva Inquebrável
Habilitado por padrão Sim
Severidade padrão Informações
introduzido na versão 4.4.0 (versão prévia)
Há uma correção de código Sim, somente para C#

Cause

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

Descrição da regra

Os métodos de teste que comparam RuntimeInformation.ProcessArchitecture e retornam ou chamam Assert.Inconclusive antecipadamente devem usar o [ArchitectureCondition] atributo. O atributo é mais declarativo e detectável, e relata o teste como ignorado 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 reconhece apenas o guarda quando é a primeira instrução do método, sem ramificação else e quando o membro referenciado Architecture tem um sinalizador correspondente TestArchitectures .

Como corrigir violações

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

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

Uma correção de código C# substitui o guarda pelo atributo para você. Visual Basic código tem esse diagnóstico, mas não tem uma correção automática; aplique o atributo manualmente.

Quando suprimir avisos

Você poderá suprimir esse aviso se a verificação de runtime for mais complexa do que um simples guarda de primeira instrução ou se precisar de uma lógica condicional que [ArchitectureCondition] não possa ser expressa.

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.

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

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade 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