Come eliminare gli avvisi di analisi del codice

Questo articolo illustra i vari modi in cui è possibile eliminare gli avvisi dall'analisi del codice quando si compila l'app .NET. È possibile eliminare le regole di qualità del codice, le regole di stile del codice e le regole dell'analizzatore di terze parti usando le informazioni fornite qui.

Suggerimento

Se si usa Visual Studio come ambiente di sviluppo, il menu Lampadina fornisce opzioni che generano il codice per eliminare automaticamente gli avvisi. Per altre informazioni, vedere Eliminare le violazioni.

Disabilitare la regola

È possibile disabilitare una regola che causa un avviso impostandone la gravità su none in un file di configurazione EditorConfig o AnalyzerConfig. Questa azione disabilita la regola per l'intero file o progetto, a seconda dell'ambito del file di configurazione usato.

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

Per altre informazioni sui livelli di gravità delle regole, vedere Configurare la gravità delle regole.

Usare una direttiva per il preprocessore

Usare una direttiva di avviso #pragma (C#) o Disable (Visual Basic) per eliminare l'avviso solo per una riga di codice specifica.

    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

Usare SuppressMessageAttribute

È possibile usare un oggetto SuppressMessageAttribute per eliminare un avviso nel file di origine o in un file di eliminazione globale per il progetto (GlobalSuppressions.cs o GlobalSuppressions.vb). Questo attributo consente di eliminare un avviso solo in determinate parti del progetto o del file.

I due parametri posizionali obbligatori per l'attributo SuppressMessageAttribute sono la categoria della regola e l'ID regola. Il frammento di codice seguente passa "Usage" e "CA2200:Rethrow to preserve stack details" per questi parametri.

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

Se si aggiunge l'attributo al file di eliminazioni globali, si applica l'ambito dell'eliminazione al livello desiderato, ad esempio "member". Specificare l'API in cui eliminare l'avviso usando la proprietà Target.

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

Usare l'ID della documentazione per l'API a cui si vuole fare riferimento nell'attributo Target. Per informazioni sugli ID della documentazione, vedere Formato ID documentazione.

Per eliminare gli avvisi per il codice generato dal compilatore che non esegue il mapping all'origine utente specificata in modo esplicito, è necessario inserire l'attributo di eliminazione in un file di eliminazione globale. Ad esempio, il codice seguente elimina una violazione rispetto a un costruttore generato dal compilatore:

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

Vedi anche