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 | Waarde |
|---|---|
| Regel-ID | MSTEST0079 |
| Title | Het kenmerk ArchitectureCondition gebruiken in plaats van runtimecontroles |
| Categorie | Usage |
| Fix kan brekend of niet-brekend zijn | Non-breaking |
| standaard ingeschakeld | Yes |
| standaardniveau van ernst | Informatie |
| geïntroduceerd in versie | 4.4.0 (preview) |
| Is er een oplossing voor de code | Ja, alleen voor C# |
Oorzaak
De eerste instructie van een testmethode vergelijkt ProcessArchitecture met een Architecture waarde en retourneert vervolgens vroeg of aanroepen Assert.Inconclusive, in plaats van het kenmerk te [ArchitectureCondition] gebruiken.
Beschrijving van regel
Testmethoden die het kenmerk vergelijken RuntimeInformation.ProcessArchitecture en vervolgens vroeg retourneren of aanroepen Assert.Inconclusive , moeten in plaats daarvan het [ArchitectureCondition] kenmerk gebruiken. Het kenmerk is declaratief en detecteerbaar en rapporteert de test als overgeslagen in plaats van doorgegeven, wat een vroege terugkeer niet doet.
[TestMethod]
public void TestMethod()
{
if (RuntimeInformation.ProcessArchitecture != Architecture.X64) return; // Violation
}
De analyzer herkent de bewaker alleen wanneer het de eerste instructie van de methode is, zonder else vertakking en wanneer het lid waarnaar wordt verwezen, een overeenkomende TestArchitecturesArchitecture vlag heeft.
Hoe schendingen op te lossen
Vervang de runtimecontrole door het [ArchitectureCondition] kenmerk.
[TestMethod]
[ArchitectureCondition(TestArchitectures.X64)]
public void TestMethod() { }
Een C#-codefix vervangt de beveiliging door het kenmerk voor u. Visual Basic code deze diagnose heeft, maar geen automatische oplossing heeft; pas het kenmerk handmatig toe.
Wanneer waarschuwingen onderdrukken
U kunt deze waarschuwing onderdrukken als uw runtimecontrole complexer is dan een eenvoudige first-statement guard of als u voorwaardelijke logica nodig hebt die [ArchitectureCondition] 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 MSTEST0079
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0079
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.MSTEST0079.severity = none
Zie Hoe u codeanalysewaarschuwingen kunt onderdrukken voor meer informatie.