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 | MSTEST0080 |
| Título | Usar o atributo CICondition em vez de verificações de ambiente |
| 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 verifica nulo o resultado Environment.GetEnvironmentVariable("CI") e, em seguida, retorna chamadas antecipadas ou Assert.Inconclusive, em vez de usar o [CICondition] atributo.
Descrição da regra
Métodos de teste que verificam nulo a CI variável de ambiente e, em seguida, o retorno ou chamada Assert.Inconclusive antecipada deve usar o [CICondition] atributo em vez disso. O atributo reconhece todos os provedores de integração contínua que o MSTest conhece e relata o teste como ignorado em vez de aprovado, o que um retorno antecipado não faz.
[TestMethod]
public void TestMethod()
{
if (Environment.GetEnvironmentVariable("CI") is null) return; // Violation
}
O analisador é deliberadamente limitado à variável de uso CI geral que todo provedor principal define. Um proteção em uma variável específica do provedor, como TF_BUILD, significa "ignorar Azure Pipelines", enquanto [CICondition] significa "ignorar qualquer CI", para que o analisador não sugira a substituição de uma verificação específica do provedor.
Como corrigir violações
Substitua a verificação de variável de ambiente pelo [CICondition] atributo.
[TestMethod]
[CICondition(ConditionMode.Include)]
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 ambiente for mais complexa do que uma verificação nula de primeira instrução simples ou se precisar de uma lógica condicional que [CICondition] 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 MSTEST0080
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0080
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.MSTEST0080.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.