Share via


CA1511: Använd Hjälp om ArgumentException-kast

Property Värde
Regel-ID CA1511
Title Använda hjälpen för ArgumentException-utkast
Kategori Underhåll
Korrigeringen är icke-bakåtkompatibel Icke-breaking
Aktiverad som standard i .NET 8 Som förslag

Orsak

Koden kontrollerar om ett argument är null eller en tom sträng och sedan villkorligt genererar en ArgumentException.

Regelbeskrivning

Argumentkontroller har en betydande inverkan på kodstorleken och dominerar ofta koden för små funktioner och egenskapsuppsättningar. Dessa kontroller förhindrar inlining och orsakar betydande förorening av instruktionscache. Throw-helper-metoder som ArgumentException.ThrowIfNullOrEmpty(String, String) är enklare och effektivare än if block som konstruerar en ny undantagsinstans.

Exempel

Följande kodfragment visar ett brott mot CA1511:

void M(string arg)
{
    if (string.IsNullOrEmpty(arg))
        throw new ArgumentException("", "arg");
}

Följande kodfragment visar korrigeringen:

void M(string arg)
{
    ArgumentException.ThrowIfNullOrEmpty(arg);
}

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

Ersätt blocket if som utlöser undantaget med ett anrop till ArgumentException.ThrowIfNullOrEmpty(String, String). I Visual Studio kan du också använda glödlampans meny för att korrigera koden automatiskt.

När du ska ignorera varningar

Det är säkert att förhindra en överträdelse av den här regeln om du inte bryr dig om kodens underhållbarhet. Det är också bra att förhindra överträdelser som identifieras som falska positiva identifieringar.

Ignorera 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 CA1511
// The code that's violating the rule is on this line.
#pragma warning restore CA1511

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

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