Jak pominąć ostrzeżenia analizy kodu

W tym artykule opisano różne sposoby pomijania ostrzeżeń z analizy kodu podczas tworzenia aplikacji platformy .NET. Reguły jakości kodu, reguły stylu kodu i reguły analizatora innych firm można pominąć, korzystając z informacji podanych tutaj.

Napiwek

Jeśli używasz programu Visual Studio jako środowiska programistycznego, menu żarówki zawiera opcje, które generują kod w celu pomijania ostrzeżeń. Aby uzyskać więcej informacji, zobacz Pomijanie naruszeń.

Wyłączanie reguły

Regułę powodującą ostrzeżenie można wyłączyć, ustawiając jej ważność na none w pliku konfiguracji EditorConfig lub AnalyzerConfig. Ta akcja wyłącza regułę dla całego pliku lub projektu w zależności od zakresu używanego pliku konfiguracji.

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

Aby uzyskać więcej informacji na temat ważności reguł, zobacz Konfigurowanie ważności reguły.

Używanie dyrektywy preprocesora

Użyj dyrektywy #pragma ostrzeżenie (C#) lub Wyłącz (Visual Basic), aby pominąć ostrzeżenie tylko dla określonego wiersza kodu.

    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

Używanie atrybutu SuppressMessageAttribute

Można użyć elementu , SuppressMessageAttribute aby pominąć ostrzeżenie w pliku źródłowym lub w pliku globalnych pomijania dla projektu (GlobalSuppressions.cs lub GlobalSuppressions.vb). Ten atrybut umożliwia pomijanie ostrzeżenia tylko w niektórych częściach projektu lub pliku.

Dwa wymagane parametry pozycyjne atrybutu SuppressMessageAttributekategorią reguły i identyfikatorem reguły. Poniższy fragment kodu przekazuje "Usage""CA2200:Rethrow to preserve stack details" i dla tych parametrów.

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

W przypadku dodania atrybutu do pliku globalnych pomijania zakres pomijania do żądanego poziomu, na przykład "member". Należy określić interfejs API, w którym powinno zostać pominięte ostrzeżenie przy użyciu Target właściwości .

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

Użyj identyfikatora dokumentacji interfejsu API, do którego chcesz się odwołać w atrybucieTarget. Aby uzyskać informacje na temat identyfikatorów dokumentacji, zobacz Format identyfikatora dokumentacji.

Aby pominąć ostrzeżenia dla kodu generowanego przez kompilator, który nie jest mapowany na jawnie podane źródło użytkownika, należy umieścić atrybut pomijania w pliku globalnych pomijania. Na przykład poniższy kod pomija naruszenie względem konstruktora emitowanego przez kompilator:

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

Zobacz też