Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Property | Value |
|---|---|
| ID da regra | MSTEST0080 |
| Título | Use o atributo CICondition em vez de verificações de ambiente |
| 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 verifica o resultado de Environment.GetEnvironmentVariable("CI") e depois retorna cedo ou chama Assert.Inconclusive, em vez de usar o [CICondition] atributo.
Descrição da regra
Os métodos de teste que verificam a CI variável de ambiente e depois retornam ou chamam Assert.Inconclusive antecipadamente devem usar o [CICondition] atributo em vez disso. O atributo reconhece todos os fornecedores de integração contínua que a MSTest conhece e reporta o teste como saltado em vez de passado, o que um retorno antecipado não faz.
[TestMethod]
public void TestMethod()
{
if (Environment.GetEnvironmentVariable("CI") is null) return; // Violation
}
O analisador está deliberadamente limitado à variável de uso CI geral que cada fornecedor principal define. Uma guarda numa variável específica do fornecedor, como TF_BUILD, significa "saltar no Azure Pipelines", enquanto [CICondition] significa "saltar qualquer CI", por isso o analisador não sugere substituir uma verificação específica do fornecedor.
Como corrigir violações
Substitua a verificação da variável ambiental pelo [CICondition] atributo.
[TestMethod]
[CICondition(ConditionMode.Include)]
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 de ambiente for mais complexa do que uma simples verificação nula de primeira sentença, ou se precisares de lógica condicional que [CICondition] não consiga 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 MSTEST0080
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0080
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade 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.