MSTEST0079: Använd attributet ArchitectureCondition i stället för körningskontroller

Property Value
Regel-ID MSTEST0079
Titel Använda attributet ArchitectureCondition i stället för körningskontroller
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#

Orsak

En testmetods första instruktion jämförs ProcessArchitecture med ett Architecture värde och returnerar sedan antingen tidigt eller anrop Assert.Inconclusivei stället för att använda [ArchitectureCondition] attributet.

Regelbeskrivning

Testmetoder som jämför RuntimeInformation.ProcessArchitecture och sedan tidig retur eller anrop Assert.Inconclusive bör använda attributet [ArchitectureCondition] i stället. Attributet är mer deklarativt och kan identifieras och rapporterar testet som överhoppat i stället för godkänt, vilket en tidig retur inte gör.

[TestMethod]
public void TestMethod()
{
    if (RuntimeInformation.ProcessArchitecture != Architecture.X64) return; // Violation
}

Analysatorn känner bara igen skyddet när det är metodens första instruktion, utan gren else , och när den refererade Architecture medlemmen har en matchande TestArchitectures flagga.

Så här åtgärdar du överträdelser

Ersätt körningskontrollen med attributet [ArchitectureCondition] .

[TestMethod]
[ArchitectureCondition(TestArchitectures.X64)]
public void TestMethod() { }

En C#-kodkorrigering ersätter skyddet med attributet åt dig. Visual Basic kod har den här diagnostiken men har ingen automatisk korrigering. Använd attributet för hand.

När du ska ignorera varningar

Du kan ignorera den här varningen om körningskontrollen är mer komplex än en enkel first-statement guard, eller om du behöver villkorsstyrd logik som [ArchitectureCondition] 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 MSTEST0079
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0079

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.MSTEST0079.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även