Analisi del codice con analizzatori della piattaforma del compilatore .NET (Roslyn)

Gli analizzatori della piattaforma del compilatore .NET (Roslyn) controllano il codice C# o Visual Basic per individuare stili, qualità, manutenibilità, progettazione e altri problemi. Questa ispezione o analisi avviene durante la fase di progettazione in tutti i file aperti.

Gli analizzatori sono suddivisi nei gruppi seguenti:

  • Analizzatori dello stile del codice

    Questi analizzatori sono incorporati in Visual Studio. L'ID di diagnostica dell'analizzatore o il formato di codice è IDExxxx, ad esempio IDE0001. È possibile configurare le preferenze nella pagina delle opzioni dell'editor di testo o in un file EditorConfig. A partire da .NET 5.0, gli analizzatori dello stile di codice sono inclusi in .NET SDK e possono essere applicati rigorosamente come avvisi o errori di compilazione. Per altre informazioni, vedere Panoramica dell'analisi del codice sorgente .NET.

  • Analizzatori della qualità del codice

    Questi analizzatori sono inclusi in .NET 5.0 e versioni successive SDK e abilitati per impostazione predefinita. L'ID di diagnostica dell'analizzatore o il formato di codice è CAxxxx, ad esempio CA1822. Per altre informazioni, vedere Panoramica dell'analisi della qualità del codice .NET.

  • Analizzatori esterni

    Esempi di analizzatori esterni sono StyleCop, Roslynator, xUnit Analyzers e Sonar Analyzer. È possibile installare questi analizzatori come pacchetto NuGet o un'estensione di Visual Studio.

Livelli di gravità degli analizzatori

Ogni regola dell'analizzatore Roslyn, o diagnostica, ha uno stato di gravità e eliminazione predefinito che è possibile personalizzare per il progetto.

I livelli di gravità includono: Error, Warning, Suggestion, Silent, None e Default. Per informazioni dettagliate e comportamento, vedere Configurare i livelli di gravità.

Violazioni delle regole

Se un analizzatore rileva eventuali violazioni delle regole dell'analizzatore, le segnala nella finestra Elenco errori e nell'editor di codice.

Lo screenshot seguente mostra le violazioni delle regole segnalate nella finestra Elenco errori . Le violazioni dell'analizzatore segnalate nell'elenco degli errori corrispondono all'impostazione del livello di gravità della regola:

Screenshot che mostra le violazioni dell'analizzatore nella finestra Elenco errori.

Le violazioni delle regole dell'analizzatore vengono visualizzate anche nell'editor di codice come linee ondulate sotto il codice che causa l'errore. Ad esempio, lo screenshot seguente mostra tre violazioni: un errore (linea ondulata rossa), un avviso (linea ondulata verde) e un suggerimento (tre punti grigi):

Screenshot che mostra gli indicatori di errore, avviso e suggerimento nell'editor di codice.

Correzioni del codice

Molte operazioni di diagnostica includono una o più correzioni di codice associate che è possibile applicare per correggere la violazione della regola. Le correzioni del codice vengono visualizzate nel menu con l'icona a forma di lampadina insieme ad altri tipi di azioni rapide. Per altre informazioni sulle correzioni del codice, vedere Azioni rapide comuni.

Screenshot che mostra una violazione dell'analizzatore e una correzione del codice azione rapida nell'editor di codice.

Configurare i livelli di gravità dell'analizzatore

È possibile configurare la gravità delle regole dell'analizzatore in un file EditorConfig o dal menu lampadina.

È anche possibile configurare gli analizzatori per controllare il codice in fase di compilazione e durante la digitazione. È possibile configurare l'ambito dell'analisi del codice in tempo reale da eseguire solo per il documento corrente, tutti i documenti aperti o l'intera soluzione. Per altre informazioni, vedere Configurare l'analisi del codice live per .NET.

Suggerimento

Gli errori e gli avvisi in fase di compilazione degli analizzatori del codice vengono visualizzati solo se gli analizzatori sono installati come pacchetto NuGet. Gli analizzatori predefiniti (ad esempio, IDE0067 e IDE0068) non vengono mai eseguiti durante la compilazione.

Installare analizzatori di codice esterni

Visual Studio include un set di base di analizzatori Roslyn, che sono sempre attivi. Se sono necessari più analizzatori di codice, è possibile installare analizzatori esterni per ogni progetto tramite un pacchetto NuGet. Alcuni analizzatori sono disponibili anche come estensione vsix di Visual Studio, nel qual caso si applicano a qualsiasi soluzione aperta in Visual Studio. Per informazioni sull'installazione di questi due diversi tipi di analizzatori, vedere Installare gli analizzatori del codice.

Ambito

Se si installa un analizzatore come pacchetto NuGet, il metodo preferito si applica solo al progetto in cui è installato il pacchetto NuGet. In caso contrario, se si installa un analizzatore come estensione di Visual Studio, viene applicato a livello di soluzione e a tutte le istanze di Visual Studio. Negli ambienti del team, un analizzatore installato come pacchetto NuGet è nell'ambito di tutti gli sviluppatori che lavorano su tale progetto.

Nota

Gli analizzatori proprietari vengono forniti all'interno di .NET SDK. È preferibile abilitare questi analizzatori da .NET SDK anziché installarli come Microsoft.CodeAnalysis.NetAnalyzerspacchetto NuGet. L'abilitazione degli analizzatori da .NET SDK garantisce di ottenere automaticamente correzioni di bug dell'analizzatore e nuovi analizzatori non appena si aggiorna l'SDK. Per altre informazioni sugli analizzatori, vedere Abilitare o installare analizzatori .NET di prima parte.

Errori di compilazione

Per applicare le regole in fase di compilazione, usando una riga di comando o compilazioni di integrazione continua (CI), scegliere una delle opzioni seguenti:

  • Creare un progetto .NET 5.0 o versione successiva, che abilita l'analisi del codice per impostazione predefinita. Per abilitare l'analisi del codice nei progetti destinati alle versioni precedenti di .NET, impostare la proprietà EnableNETAnalyzers su true.

  • Installare gli analizzatori come pacchetto NuGet. Se si installano gli analizzatori come estensione di Visual Studio, gli avvisi e gli errori dell'analizzatore non vengono visualizzati nel report di compilazione.

Nello screenshot seguente viene illustrato l'output di compilazione da riga di comando proveniente dalla compilazione di un progetto con una violazione della regola dell'analizzatore:

Screenshot che mostra un output MSBuild con una violazione della regola in un prompt dei comandi per gli sviluppatori.

Gravità della regola

Se si vuole configurare la gravità della regola dell'analizzatore, è necessario installare l'analizzatore come pacchetto NuGet. Non è possibile configurare la gravità della regola dagli analizzatori installati come estensione di Visual Studio.

Passaggi successivi