Udostępnij za pośrednictwem


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.

Wskazówka

Jeśli używasz programu Visual Studio jako środowiska programistycznego, menu żarówki zawiera opcje, które generują kod do wyłączania ostrzeżeń. Aby uzyskać więcej informacji, zobacz Tłumienie naruszeń.

Wyłącz regułę

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 warning (C#) lub Disable (Visual Basic), aby pominąć warning 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żyj atrybutu SuppressMessageAttribute

Można użyć elementu SuppressMessageAttribute, aby pominąć ostrzeżenie w pliku źródłowym lub w pliku globalnych pominięć 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" i "CA2200:Rethrow to preserve stack details" 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 pominięć, określasz zakres pominięcia do żądanego poziomu (na przykład "member"). Należy określić interfejs API, przy użyciu właściwości Target, w którym powinno zostać pominięte ostrzeżenie.

[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 atrybucie Target . Aby uzyskać informacje na temat identyfikatorów dokumentacji, zobacz format identyfikatora dokumentacji.

Aby pominąć ostrzeżenia dotyczące kodu generowanego przez kompilator, który nie odnosi się do jawnie podanego źródła użytkownika, należy umieścić atrybut wyciszania w pliku globalnych wyciszeń. 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 także