Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Property | Value |
|---|---|
| Regel-ID | MSTEST0083 |
| Title | Gebruik '[ExecutableCondition]' in plaats van controles op 'File.Exists' vóór 'Process.Start' |
| Categorie | Usage |
| Fix kan brekend of niet-brekend zijn | Non-breaking |
| standaard ingeschakeld | Ja |
| standaardniveau van ernst | Informatie |
| geïntroduceerd in versie | 4.4.0 (preview) |
| Is er een oplossing voor de code | Ja, alleen voor C# |
Important
Deze analyzer is gepland voor MSTest 4.4 en is alleen beschikbaar in preview-versies totdat MSTest 4.4.0 wordt uitgebracht.
Oorzaak
Een testmethode controleert eerst of er een uitvoerbaar bestand bestaat en retourneert of aanroept Assert.Inconclusive wanneer dit niet gebeurt, en roept Process.Start vervolgens aan met hetzelfde uitvoerbare pad.
Beschrijving van regel
Gebruik [ExecutableCondition] dit om te declareren dat voor een test een uitvoerbaar bestand is vereist. Het kenmerk rapporteert de test als overgeslagen wanneer MSTest het uitvoerbare bestand niet kan oplossen. Een vroege retour rapporteert de test onjuist als geslaagd en een imperatieve controle verbergt de vereiste voor detectie- en rapportagehulpprogramma's.
[TestMethod]
public void RunsTool()
{
if (!File.Exists("tool.exe")) return; // Violation
Process.Start("tool.exe");
}
De analyzer herkent een first-statement guard zonder een zinvolle else vertakking wanneer beide File.Exists en later Process.Start hetzelfde constante uitvoerbare pad gebruiken.
Hoe schendingen op te lossen
Vervang de bewaker door [ExecutableCondition].
[TestMethod]
[ExecutableCondition("tool.exe")]
public void RunsTool() => Process.Start("tool.exe");
Een C#-codefix vervangt de bewaker door het kenmerk. Visual Basic rapporteert de diagnose, maar biedt geen automatische oplossing.
Wanneer waarschuwingen onderdrukken
Onderdrukt de regel wanneer de bestandscontrole gegevens valideert in plaats van een uitvoerbare vereiste, of wanneer de test gedrag nodig heeft dat ExecutableConditionAttribute niet kan worden weergegeven.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable MSTEST0083
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0083
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0083.severity = none
Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.