Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| 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.