MSTEST0080: usar o atributo CICondition em vez de verificações de ambiente

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.

Consulte também