Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Property | Value |
|---|---|
| Regel-ID | MSTEST0083 |
| Titel | Använd "[ExecutableCondition]" i stället för "File.Exists"-kontroller före "Process.Start" |
| Kategori | Usage |
| Korrigeringen är antingen brytande eller icke-brytande | Oumbrytbar |
| Aktiverad som standard | Yes |
| Standard allvarlighetsgrad | Info |
| introducerades i version | 4.4.0 (förhandsversion) |
| Finns det en kodkorrigering | Ja, endast för C# |
Important
Den här analysatorn är planerad för MSTest 4.4 och är endast tillgänglig i förhandsversioner tills MSTest 4.4.0 släpps.
Orsak
En testmetod kontrollerar först om en körbar fil finns och returnerar eller anropar Assert.Inconclusive när den inte gör det och anropar Process.Start sedan med samma körbara sökväg.
Regelbeskrivning
Använd [ExecutableCondition] för att deklarera att ett test kräver en körbar fil. Attributet rapporterar testet som överhoppat när MSTest inte kan hitta den körbara filen. En tidig retur rapporterar testet felaktigt som godkänt och en imperativ kontroll döljer kravet från identifierings- och rapporteringsverktyg.
[TestMethod]
public void RunsTool()
{
if (!File.Exists("tool.exe")) return; // Violation
Process.Start("tool.exe");
}
Analysatorn känner igen en first-statement guard utan en meningsfull else gren när båda File.Exists och senare Process.Start använder samma konstanta körbara sökväg.
Så här åtgärdar du överträdelser
Ersätt skyddet med [ExecutableCondition].
[TestMethod]
[ExecutableCondition("tool.exe")]
public void RunsTool() => Process.Start("tool.exe");
En C#-kodkorrigering ersätter skyddet med attributet. Visual Basic rapporterar diagnostiken men tillhandahåller ingen automatisk korrigering.
När du ska ignorera varningar
Ignorera regeln när filkontrollen validerar data i stället för en körbar förutsättning, eller när testet behöver beteende som ExecutableConditionAttribute inte kan uttryckas.
Undertryck en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable MSTEST0083
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0083
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0083.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.