Freigeben über


So unterdrücken Sie Codeanalysewarnungen

In diesem Artikel werden die verschiedenen Möglichkeiten beschrieben, wie Sie Warnungen aus der Codeanalyse unterdrücken können, wenn Sie Ihre .NET-App erstellen. Sie können Codequalitätsregeln, Codestilregeln und Analyseregeln von Drittanbietern mithilfe der hier bereitgestellten Informationen unterdrücken.

Tipp

Wenn Sie Visual Studio als Entwicklungsumgebung verwenden, bietet das Glühbirnenmenü Optionen, die den Code generieren, um Warnungen für Sie zu unterdrücken. Weitere Informationen finden Sie unter "Unterdrücken von Verstößen".

Deaktivieren der Regel

Sie können eine Regel deaktivieren, die eine Warnung verursacht, indem Sie den Schweregrad none in einer EditorConfig- oder AnalyzerConfig-Konfigurationsdatei festlegen. Diese Aktion deaktiviert die Regel für die gesamte Datei oder das gesamte Projekt, abhängig vom Umfang der verwendeten Konfigurationsdatei.

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

Weitere Informationen zu Regelschweregraden finden Sie unter Konfigurieren des Regelschweregrads.

Verwenden einer Präprozessordirektive

Verwenden Sie eine #pragma Warnung (C#) oder disable (Visual Basic) -Direktive, um die Warnung nur für eine bestimmte Codezeile zu unterdrücken.

    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

Verwenden Sie SuppressMessageAttribute

Sie können eine SuppressMessageAttribute Warnung entweder in der Quelldatei oder in einer globalen Unterdrückungsdatei für das Projekt unterdrücken (GlobalSuppressions.cs oder GlobalSuppressions.vb). Dieses Attribut bietet eine Möglichkeit, eine Warnung nur in bestimmten Teilen Ihres Projekts oder Ihrer Datei zu unterdrücken.

Die beiden erforderlichen Positionsparameter für das SuppressMessageAttribute Attribut sind die Kategorie der Regel und die Regel-ID. Der folgende Codeausschnitt übergibt "Usage" und "CA2200:Rethrow to preserve stack details" für diese Parameter.

[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;
    }
}

Wenn Sie der Datei mit den global geltenden Unterdrückungsregeln das Attribut hinzufügen, bestimmen Sie die gewünschte Unterdrückungsebene, z. B. "member". Sie geben die API an, in der die Warnung mithilfe der Target Eigenschaft unterdrückt werden soll.

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

Verwenden Sie die Dokumentations-ID für die API, auf die Target Sie im Attribut verweisen möchten. Informationen zu Dokumentations-IDs finden Sie im Dokumentations-ID-Format.

Sie müssen das Unterdrückungsattribut in eine Datei mit globalen Unterdrückungsregeln einfügen, um Warnungen für vom Compiler generierten Code zu unterdrücken, der nicht explizit bereitgestellten Benutzerquellen zugeordnet ist. Der folgende Code unterdrückt beispielsweise einen Verstoß gegen einen vom Compiler ausgegebenen Konstruktor:

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

Siehe auch