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 | MSTEST0083 |
| Título | Use '[ExecutableCondition]' em vez de verificações de 'File.Exists' antes de 'Process.Start' |
| Categoria | Usage |
| Correção interruptiva ou sem interrupção | Inquebrável |
| Habilitado por padrão | Yes |
| 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# |
Importante
Este analisador está planejado para MSTest 4.4 e está disponível apenas em builds de visualização até que o MSTest 4.4.0 seja lançado.
Cause
Primeiro, um método de teste verifica se um executável existe e retorna ou chama Assert.Inconclusive quando não o faz e, em seguida, chama Process.Start com o mesmo caminho executável.
Descrição da regra
Use [ExecutableCondition] para declarar que um teste requer um executável. O atributo marca o teste como ignorado quando o MSTest não consegue resolver o executável. Um retorno antecipado marca incorretamente o teste como aprovado, e uma verificação imperativa oculta o requisito das ferramentas de descoberta e de geração de relatórios.
[TestMethod]
public void RunsTool()
{
if (!File.Exists("tool.exe")) return; // Violation
Process.Start("tool.exe");
}
O analisador reconhece uma cláusula de guarda na primeira instrução sem uma ramificação else significativa quando tanto o File.Exists quanto o Process.Start posterior usam o mesmo caminho de execução constante.
Como corrigir violações
Substitua a proteção por [ExecutableCondition].
[TestMethod]
[ExecutableCondition("tool.exe")]
public void RunsTool() => Process.Start("tool.exe");
Uma correção de código em C# substitui a cláusula de guarda pelo atributo. Visual Basic relata o diagnóstico, mas não fornece uma correção automática.
Quando suprimir avisos
Suprime a regra quando a verificação de arquivo valida dados em vez de um pré-requisito executável ou quando o teste precisa de um comportamento que ExecutableConditionAttribute não possa ser expresso.
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 MSTEST0083
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0083
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.MSTEST0083.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.