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.
| Property | Wert |
|---|---|
| Regel-ID | MSTEST0083 |
| Title | Verwenden Sie "[ExecutableCondition]" anstelle von "File.Exists"-Prüfungen vor "Process.Start" |
| Kategorie | Verwendung |
| 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# |
Important
Dieser Analyzer ist für MSTest 4.4 geplant und ist nur in Vorschaubuilds verfügbar, bis MSTest 4.4.0 veröffentlicht wird.
Ursache
Eine Testmethode prüft zunächst, ob eine ausführbare Datei vorhanden ist, und kehrt, falls dies nicht der Fall ist, zurück oder ruft Assert.Inconclusive auf. Anschließend ruft sie Process.Start mit demselben Pfad zur ausführbaren Datei auf.
Regelbeschreibung
Verwenden Sie [ExecutableCondition] diese Option, um zu deklarieren, dass für einen Test eine ausführbare Datei erforderlich ist. Das Attribut meldet den Test als übersprungen, wenn MSTest die ausführbare Datei nicht auflösen kann. Eine vorzeitige Rückgabe meldet fälschlicherweise, dass der Test bestanden wurde, und eine imperative Prüfung verbirgt die Anforderung vor Erkennungs- und Berichtstools.
[TestMethod]
public void RunsTool()
{
if (!File.Exists("tool.exe")) return; // Violation
Process.Start("tool.exe");
}
Der Analysator erkennt eine Schutzbedingung in der ersten Anweisung ohne einen aussagekräftigen else-Zweig, wenn sowohl File.Exists als auch das spätere Process.Start denselben konstanten Ausführungspfad verwenden.
Wie man Verstöße behebt
Ersetzen Sie die Schutzvorrichtung durch [ExecutableCondition].
[TestMethod]
[ExecutableCondition("tool.exe")]
public void RunsTool() => Process.Start("tool.exe");
Eine C#-Codekorrektur ersetzt den Guard durch das Attribut. Visual Basic meldet die Diagnose, stellt aber keine automatische Korrektur bereit.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie die Regel, wenn die Dateiprüfung der Validierung von Daten statt einer ausführbaren Vorbedingung dient oder wenn für den Test ein Verhalten erforderlich ist, das ExecutableConditionAttribute nicht ausdrücken 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 MSTEST0083
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0083
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.MSTEST0083.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.