Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | MSTEST0080 |
| Title | Verwenden des CICondition-Attributs anstelle von Umgebungsprüfungen |
| Kategorie | Usage |
| Die Behebung ist eingreifend oder nicht eingreifend | Non-breaking |
| Standardmäßig aktiviert | Ja |
| Voreingestellte Schwere | Info |
| wurde in Version eingeführt. | 4.4.0 (Vorschau) |
| Gibt es eine Codekorrektur | Ja, nur für C# |
Ursache
Die erste Anweisung einer Testmethode überprüft das Ergebnis Environment.GetEnvironmentVariable("CI") und gibt dann entweder frühzeitige oder aufrufe Assert.Inconclusivezurück, anstatt das [CICondition] Attribut zu verwenden.
Regelbeschreibung
Testen Sie Methoden, mit denen die CI Umgebungsvariable null überprüft wird, und verwenden Sie stattdessen das Attribut.Assert.Inconclusive[CICondition] Das Attribut erkennt jeden kontinuierlichen Integrationsanbieter MSTest und meldet den Test als übersprungen und nicht bestanden, was eine frühzeitige Rückgabe nicht tut.
[TestMethod]
public void TestMethod()
{
if (Environment.GetEnvironmentVariable("CI") is null) return; // Violation
}
Der Analyzer ist bewusst auf die allgemeine Verwendungsvariable CI beschränkt, die von jedem wichtigen Anbieter festgelegt wird. Eine Schutzvorrichtung für eine anbieterspezifische Variable, zTF_BUILD. B. "überspringen Azure Pipelines", bedeutet zwar [CICondition] "Überspringen eines beliebigen CI", sodass der Analyzer nicht vorschlägt, eine anbieterspezifische Überprüfung zu ersetzen.
Wie man Verstöße behebt
Ersetzen Sie die Umgebungsvariablenüberprüfung durch das [CICondition] Attribut.
[TestMethod]
[CICondition(ConditionMode.Include)]
public void TestMethod() { }
Ein C#-Codekorrektur ersetzt den Guard durch das Attribut für Sie. Visual Basic Code verfügt über diese Diagnose, verfügt aber nicht über einen automatischen Fix. Wenden Sie das Attribut manuell an.
Wann sollten Warnungen unterdrückt werden?
Sie können diese Warnung unterdrücken, wenn die Umgebungsprüfung komplexer ist als eine einfache Nullprüfung der ersten Anweisung oder wenn Sie bedingte Logik benötigen, die [CICondition] nicht ausgedrückt werden kann.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable MSTEST0080
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0080
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0080.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.