Dela via


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.

Tips/Råd

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änd ett förprocessordirektiv

Använd ett #pragma varningsdirektiv (C#) eller Inaktivera (Visual Basic) om du bara vill ignorera varningen för 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änd 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 använder "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