Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | Value |
|---|---|
| ID regola | MSTEST0080 |
| Titolo | Usare l'attributo CICondition anziché i controlli dell'ambiente |
| Categoria | Utilizzo |
| La modifica è dirompente o non dirompente | Non rompente |
| Abilitato per impostazione predefinita | Sì |
| Gravità predefinita | Informazioni |
| introdotta nella versione | 4.4.0 (anteprima) |
| È presente una correzione del codice | Sì, solo per C# |
Cause
La prima istruzione di un metodo di test controlla il risultato di Environment.GetEnvironmentVariable("CI") e quindi restituisce in anticipo o chiama Assert.Inconclusive, anziché usare l'attributo [CICondition] .
Descrizione della regola
I metodi di test che controllano null la CI variabile di ambiente e quindi restituiscono o chiamano Assert.Inconclusive in anticipo devono usare invece l'attributo [CICondition] . L'attributo riconosce ogni provider di integrazione continua che MSTest conosce e segnala il test come ignorato anziché superato, che non viene restituito in anticipo.
[TestMethod]
public void TestMethod()
{
if (Environment.GetEnvironmentVariable("CI") is null) return; // Violation
}
L'analizzatore è deliberatamente limitato alla variabile di utilizzo CI generico impostata da tutti i principali set di provider. Una protezione su una variabile specifica del provider, ad esempio TF_BUILD, significa "skip on Azure Pipelines", mentre [CICondition] significa "skip on any CI", quindi l'analizzatore non suggerisce di sostituire un controllo specifico del provider.
Come correggere le violazioni
Sostituire il controllo della variabile di ambiente con l'attributo [CICondition] .
[TestMethod]
[CICondition(ConditionMode.Include)]
public void TestMethod() { }
Una correzione del codice C# sostituisce automaticamente la protezione con l'attributo . Visual Basic codice include questa diagnostica, ma non ha una correzione automatica. Applicare l'attributo a mano.
Quando eliminare gli avvisi
È possibile eliminare questo avviso se il controllo dell'ambiente è più complesso di un semplice controllo null di prima istruzione o se è necessaria una logica condizionale che [CICondition] non può esprimere.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable MSTEST0080
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0080
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0080.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.