Så här utelämnar du kodanalysvarningar

Den här artikeln beskriver de olika sätt som du kan förhindra varningar från kodanalys när du skapar .NET-appen. Du kan förhindra kodkvalitetsregler, kodformatregler och analysregler från tredje part med hjälp av informationen här.

Dricks

Om du använder Visual Studio som utvecklingsmiljö innehåller menyn med glödlampor alternativ som genererar koden för att förhindra varningar åt dig. Mer information finns i Utelämna överträdelser.

Inaktivera regeln

Du kan inaktivera en regel som orsakar en varning genom att ange allvarlighetsgraden i none en EditorConfig- eller AnalyzerConfig-konfigurationsfil. Den här åtgärden inaktiverar regeln för hela filen eller projektet, beroende på omfånget för den konfigurationsfil som du använder.

[*.{cs,vb}]
dotnet_diagnostic.<rule-ID>.severity = none

Mer information om allvarlighetsgraderna för regler finns i Konfigurera allvarlighetsgrad för regeln.

Använda ett förprocessordirektiv

Använd ett #pragma varningsdirektiv (C#) eller Inaktivera (Visual Basic) för att ignorera varningen för endast en viss kodrad.

    try { ... }
    catch (Exception e)
    {
#pragma warning disable CA2200 // Rethrow to preserve stack details
        throw e;
#pragma warning restore CA2200 // Rethrow to preserve stack details
    }
    Try
        ...
    Catch e As Exception
#Disable Warning CA2200 ' Rethrow to preserve stack details
        Throw e
#Enable Warning CA2200 ' Rethrow to preserve stack details
    End Try

Använda SuppressMessageAttribute

Du kan använda en SuppressMessageAttribute för att ignorera en varning i källfilen eller i en global undertryckningsfil för projektet (GlobalSuppressions.cs eller GlobalSuppressions.vb). Det här attributet är ett sätt att förhindra en varning i vissa delar av projektet eller filen.

De två obligatoriska positionsparametrarna för SuppressMessageAttribute attributet är kategorin för regeln och regel-ID:t. Följande kodfragment skickas "Usage" och "CA2200:Rethrow to preserve stack details" för dessa parametrar.

[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.")]
private static void IgnorableCharacters()
{
    try
    {
        ...
    }
    catch (Exception e)
    {
        throw e;
    }
}

Om du lägger till attributet i filen med globala undertryckningar omfångsbegränsar du undertryckningen till önskad nivå, till exempel "member". Du anger det API där varningen ska ignoreras med hjälp av Target egenskapen .

[assembly: SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.", Scope = "member", Target = "~M:MyApp.Program.IgnorableCharacters")]

Använd dokumentations-ID :t för det API som du vill referera till i attributet Target . Information om dokumentations-ID finns i dokumentations-ID-format.

Om du vill förhindra varningar för kompilatorgenererad kod som inte mappas till uttryckligen angivna användarkällor måste du placera undertryckningsattributet i en global undertryckningsfil. Följande kod undertrycker till exempel en överträdelse mot en kompilator-genererad konstruktor:

[module: SuppressMessage("Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="MyTools.Type..ctor()")]

Se även