Domande frequenti per l'analisi del codice in Visual Studio

Questa pagina contiene le risposte ad alcune domande frequenti sull'analisi del codice basata sulla piattaforma del compilatore .NET in Visual Studio.

Analisi del codice e EditorConfig

È consigliabile usare l'analisi del codice o EditorConfig per controllare lo stile del codice?

L'analisi del codice e i file EditorConfig funzionano a portata di mano. Quando si definiscono gli stili di codice in un file EditorConfig o nella pagina Opzioni dell'editor di testo, si configurano effettivamente gli analizzatori del codice incorporati in Visual Studio. I file EditorConfig possono essere usati per abilitare o disabilitare le regole dell'analizzatore e anche per configurare i pacchetti dell'analizzatore NuGet.

EditorConfig e set di regole

È necessario configurare gli analizzatori usando un set di regole o un file EditorConfig?

I set di regole e i file EditorConfig possono coesistere e possono essere usati entrambi per configurare gli analizzatori. Sia i file EditorConfig che i set di regole consentono di abilitare e disabilitare le regole e di impostarne la gravità.

Tuttavia, i file EditorConfig offrono modi aggiuntivi per configurare anche le regole:

Oltre ai set di regole e ai file EditorConfig, alcuni analizzatori vengono configurati tramite l'uso di file di testo contrassegnati come file aggiuntivi per i compilatori C# e VB.

Nota

  • I file EditorConfig possono essere usati solo per abilitare le regole e impostarne la gravità in Visual Studio 2019 versione 16.3 e successive.
  • I file EditorConfig non possono essere usati per configurare l'analisi legacy, mentre i set di regole possono.

Analisi del codice nelle compilazioni di integrazione continua

L'analisi del codice basata sulla piattaforma del compilatore .NET funziona nelle compilazioni di integrazione continua (CI) ?

Sì. Per gli analizzatori installati da un pacchetto NuGet, tali regole vengono applicate in fase di compilazione, incluse durante una compilazione CI. Gli analizzatori usati nelle compilazioni CI rispettano la configurazione delle regole sia dai set di regole che dai file EditorConfig. Attualmente, gli analizzatori di codice incorporati in Visual Studio non sono disponibili come pacchetto NuGet e pertanto queste regole non sono applicabili in una compilazione CI.

Analizzatori IDE e StyleCop

Qual è la differenza tra gli analizzatori del codice dell'IDE di Visual Studio e gli analizzatori StyleCop?

L'IDE di Visual Studio include analizzatori predefiniti che cercano sia lo stile del codice che i problemi di qualità. Queste regole consentono di usare nuove funzionalità del linguaggio man mano che vengono introdotte e migliorano la gestibilità del codice. Gli analizzatori IDE vengono continuamente aggiornati con ogni versione di Visual Studio.

Gli analizzatori StyleCop sono analizzatori di terze parti installati come pacchetto NuGet che controllano la coerenza dello stile nel codice. In generale, le regole StyleCop consentono di impostare preferenze personali per una codebase senza consigliare uno stile rispetto a un altro.

Analizzatori di codice e analisi legacy

Qual è la differenza tra l'analisi legacy e l'analisi del codice basata sulla piattaforma del compilatore .NET?

L'analisi del codice basata sulla piattaforma del compilatore .NET analizza il codice sorgente in tempo reale e durante la compilazione, mentre l'analisi legacy analizza i file binari dopo il completamento della compilazione. Per altre informazioni, vedere Analisi basata sulla piattaforma del compilatore .NET e analisi legacy.

Analizzatori FxCop e analizzatori .NET

Qual è la differenza tra gli analizzatori FxCop e gli analizzatori .NET?

Sia gli analizzatori FxCop che gli analizzatori .NET fanno riferimento alle implementazioni dell'analizzatore .NET Compiler Platform ("Roslyn") delle regole della CA FxCop. Prima di Visual Studio 2019 16.8 e .NET 5.0, questi analizzatori vengono forniti come Microsoft.CodeAnalysis.FxCopAnalyzerspacchetto NuGet. A partire da Visual Studio 2019 16.8 e .NET 5.0, questi analizzatori sono inclusi in .NET SDK. Sono disponibili anche come Microsoft.CodeAnalysis.NetAnalyzerspacchetto NuGet. Prendere in considerazione la migrazione dagli analizzatori FxCop agli analizzatori .NET.

Considera avvisi come errori

Il progetto usa l'opzione di compilazione per considerare gli avvisi come errori. Dopo la migrazione dall'analisi legacy all'analisi del codice sorgente, tutti gli avvisi di analisi del codice vengono visualizzati come errori. Come posso prevenire questa operazione?

Per evitare che gli avvisi di analisi del codice vengano considerati come errori, seguire questa procedura:

  1. Creare un file con estensione props con il contenuto seguente:

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. Aggiungere una riga al file di progetto con estensione csproj o vbproj per importare il file props creato nel passaggio precedente. Questa riga deve essere posizionata prima di tutte le righe che importano i file con estensione props dell'analizzatore. Ad esempio, se il file con estensione props è denominato codeanalysis.props:

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

Pagina delle proprietà della soluzione di analisi del codice

Dove si trova la pagina delle proprietà Analisi codice per la soluzione?

La pagina delle proprietà Analisi codice a livello di soluzione è stata rimossa a favore del gruppo di proprietà condiviso più affidabile. Per la gestione dell'analisi del codice a livello di progetto, la pagina delle proprietà Analisi codice è ancora disponibile. Per i progetti gestiti, è consigliabile anche eseguire la migrazione da set di regole a EditorConfig per la configurazione delle regole. Per la condivisione di set di regole tra più progetti in una soluzione o in un repository, è consigliabile definire un gruppo di proprietà con la proprietà CodeAnalysisRuleSet in un file props/targets condiviso o in un file Directory.props/Directory.targets . Se non si dispone di oggetti prop o destinazioni di questo tipo comuni importati da tutti i progetti, è consigliabile aggiungere tale gruppo di proprietà a un file Directory.props o Directory.targets in una directory della soluzione di primo livello, che viene importato automaticamente in tutti i file di progetto definiti nella directory o nelle relative sottodirectory.