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 | 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.