Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le opzioni seguenti controllano il modo in cui il compilatore segnala errori e avvisi.
Sintassi di MSBuild | sintassi csc.exe | Descrizione |
---|---|---|
WarningLevel |
-warn |
Impostare il livello di avviso. Altre informazioni. |
AnalysisLevel |
/ | Impostare il livello di avviso facoltativo. Altre informazioni. |
TreatWarningsAsErrors |
-warnaserror |
Considera tutti gli avvisi come errori. Altre informazioni. |
WarningsAsErrors |
-warnaserror+ |
Considerare uno o più avvisi come errori. Altre informazioni. |
WarningsNotAsErrors |
-warnaserror- |
Considerare uno o più avvisi non come errori. Altre informazioni. |
NoWarn |
-nowarn |
Impostare un elenco di avvisi disattivati. Altre informazioni. |
CodeAnalysisRuleSet |
-ruleset |
Specificare un file del set di regole che disabilita le diagnostiche specifiche. Altre informazioni. |
ErrorLog |
-errorlog |
Specificare un file per registrare tutti i dati di diagnostica del compilatore e dell'analizzatore. Altre informazioni. |
ReportAnalyzer |
-reportanalyzer |
Segnalare informazioni aggiuntive sull'analizzatore, ad esempio il tempo di esecuzione. Altre informazioni. |
Nota
Per altre informazioni sulla configurazione di queste opzioni per il progetto, vedere Le opzioni del compilatore. Per ulteriori informazioni sugli interruttori disponibili, consultare l'articolo interruttori della riga di comando di MSBuild nella documentazione di Visual Studio.
LivelloDiAvviso
L'opzione WarningLevel specifica il livello di avviso da visualizzare nel compilatore.
<WarningLevel>3</WarningLevel>
Il valore dell'elemento è il livello di avviso da visualizzare per la compilazione: i numeri più bassi mostrano solo gli avvisi con un livello di gravità elevato, i valori più alti mostrano più avvisi. Il valore deve essere zero o un numero intero positivo:
Livello avvisi | Significato |
---|---|
0 | Disattiva l'emissione di tutti i messaggi di avviso. |
1 | Visualizza i messaggi di avviso gravi. |
2 | Visualizza gli avvisi di livello 1 oltre ad alcuni avvisi meno gravi, ad esempio gli avvisi relativi ai membri di classi nascosti. |
3 | Visualizza gli avvisi di livello 2 oltre ad alcuni avvisi meno gravi, ad esempio gli avvisi relativi alle espressioni che restituiscono sempre true o false . |
4 (valore predefinito) | Visualizza tutti gli avvisi di livello 3 oltre ad avvisi informativi. |
Avviso
La riga di comando del compilatore accetta valori maggiori di 4 per abilitare gli avvisi del ciclo di avvisi.
Per ottenere informazioni su un errore o un avviso, è possibile cercare il codice errore nell'indice della Guida. Per altri modi per ottenere informazioni su un errore o un avviso, vedere Errori del compilatore C#. Usare TreatWarningsAsErrors per considerare tutti gli avvisi come errori. Usare DisabledWarnings per disabilitare determinati avvisi.
Livello di analisi
L'opzione AnalysisLevel specifica onde di avviso e analizzatori più elevati da abilitare nei progetti .NET 7 e versioni successive. Gli avvisi di allerta avanzati sono controlli aggiuntivi che migliorano il tuo codice o assicurano che rimanga compatibile con le versioni future. Gli analizzatori offrono funzionalità simili a lint per migliorare il codice.
A partire da .NET 7 SDK, AnalysisLevel e WarningLevel sono impostati in base alle regole seguenti:
- Il valore predefinito AnalysisLevel corrisponde al moniker del framework di destinazione (TFM) dal file di progetto.
- Il valore predefinito WarningLevel corrisponde al valore di AnalysisLevel.
- Il valore predefinito warningLevel è 4 per i progetti .NET Framework.
Prima dell'SDK di .NET 7, AnalysisLevel sovrascriveva WarningLevel.
<AnalysisLevel>preview</AnalysisLevel>
Livello di analisi | Significato |
---|---|
5 | Visualizza tutti gli avvisi del ciclo di avvisi 5. |
6 | Visualizza tutti gli avvisi del ciclo di avvisi 6. |
7 | Visualizza tutti gli avvisi del ciclo di avvisi 7. |
latest (valore predefinito) | Visualizza tutti gli avvisi informativi fino alla versione corrente inclusa. |
anteprima | Visualizza tutti gli avvisi informativi fino alla versione di anteprima più recente inclusa. |
Nessuno | Disattiva tutti gli avvisi informativi. |
Per altre informazioni sugli avvisi facoltativi, vedere Cicli di avviso.
Per ottenere informazioni su un errore o un avviso, è possibile cercare il codice di errore nell'indice della Guida. Per altri modi per ottenere informazioni su un errore o un avviso, vedere Errori del compilatore C#. Usare TreatWarningsAsErrors per considerare tutti gli avvisi come errori. Usare NoWarn per disabilitare avvisi specifici.
TrattaAvvisiComeErrori
L'opzione TreatWarningsAsErrors considera tutti gli avvisi come errori. È anche possibile usare WarningsAsErrors per impostare solo alcuni avvisi come errori. Se si attiva TreatWarningsAsErrors, è possibile usare WarningsNotAsErrors per elencare gli avvisi che non devono essere considerati come errori.
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
Tutti i messaggi di avviso vengono invece segnalati come errori. Il processo di compilazione si interrompe (non vengono compilati file di output). Per impostazione predefinita, l'opzione TreatWarningsAsErrors non è attiva, quindi gli avvisi non impediscono la generazione di un file di output. Facoltativamente, se si desidera considerare come errori solo alcuni avvisi specifici, è possibile specificare un elenco delimitato da virgole di numeri di avviso da considerare come errori. È possibile specificare il set di tutti gli avvisi con supporto dei valori Null con la sintassi abbreviata Nullable. Usare WarningLevel per specificare il livello degli avvisi da visualizzare nel compilatore. Usare NoWarn per disabilitare avvisi specifici.
Importante
Esistono due piccole differenze tra l'uso dell'elemento <TreatWarningsAsErrors>
nel file csproj e l'uso dell'opzione della riga di comando warnaserror
MSBuild.
TreatWarningsAsErrors influisce solo sul compilatore C#, non su altre attività di MSBuild nel file csproj. L'opzione della riga di comando warnaserror
influisce su tutte le attività. In secondo luogo, il compilatore non genera alcun output in alcun avviso quando viene usata l'opzione TreatWarningsAsErrors. Il compilatore genera output quando viene usata l'opzione della riga di comando warnaserror
.
WarningsAsErrors e WarningsNotAsErrors
Le opzioni WarningsAsErrors e WarningsNotAsErrors sostituiscono l'opzione TreatWarningsAsErrors per un elenco di avvisi. Questa opzione può essere usata con tutti gli avvisi CS. Il prefisso "CS" è facoltativo. È possibile usare il numero o "CS" seguito dal numero di errore o di avviso. Per altri elementi che influiscono sugli avvisi, vedere le proprietà comuni di MSBuild. Oltre all'elenco degli ID di avviso, è anche possibile specificare la stringa nullable
, che considera tutti gli avvisi correlati al supporto dei valori Null come errori.
Abilitare gli avvisi 0219, 0168 e tutti gli avvisi che ammettono i valori Null come errori:
<WarningsAsErrors>0219;CS0168;nullable</WarningsAsErrors>
Disabilitare gli stessi avvisi come errori:
<WarningsNotAsErrors>0219;CS0168;nullable</WarningsNotAsErrors>
Usare WarningsAsErrors per configurare un set di avvisi come errori. Usare WarningsNotAsErrors per configurare un insieme di avvisi che non devono essere errori quando si impostano tutti gli avvisi come errori.
NoWarn
L'opzione NoWarn consente di evitare che il compilatore visualizzi uno o più avvisi, in cui warningnumber1
, warningnumber2
sono numeri di avviso che il compilatoree deve eliminare. Separare più numeri di avviso con una virgola. È possibile specificare nullable
per disabilitare tutti gli avvisi correlati al supporto dei valori Null.
<NoWarn>warningnumber1,warningnumber2</NoWarn>
È sufficiente specificare la parte numerica dell'identificatore dell'avviso. Ad esempio, per eliminare l'avviso CS0028 è possibile specificare <NoWarn>28</NoWarn>
. Il compilatore ignora automaticamente i numeri di avviso passati a NoWarn validi nelle versioni precedenti, ma non generati dal compilatore corrente. Ad esempio, CS0679 era valido nel compilatore in Visual Studio .NET 2002 ma è stato rimosso successivamente.
Gli avvisi seguenti non possono essere eliminati dall'opzione NoWarn:
- Avviso del compilatore (livello 1) CS2002
- Avviso del compilatore (livello 1) CS2023
- Avviso del compilatore (livello 1) CS2029
Gli avvisi sono destinati a essere un'indicazione di un potenziale problema con il codice, pertanto è necessario comprendere i rischi di disabilitazione di qualsiasi avviso specifico. Usare NoWarn solo quando si è certi che un avviso sia un falso positivo e non possa essere un bug del runtime.
È possibile usare un approccio più mirato per disabilitare gli avvisi:
- La maggior parte dei compilatori consente di disabilitare gli avvisi solo per determinate righe di codice, in modo da poter comunque esaminare gli avvisi se si presentano altrove nello stesso progetto. Per eliminare un avviso solo in una parte specifica del codice in C#, usare la sintassi #pragma warning.
- Se l'obiettivo è visualizzare un output più conciso e mirato nel log di compilazione, è possibile modificare il livello di dettaglio del log di compilazione. Per altre informazioni, vedere Procedura: Visualizzare, salvare e configurare file di log di compilazione.
Per aggiungere numeri di avviso a qualsiasi valore impostato in precedenza per NoWarn senza sovrascriverlo, fare riferimento a $(NoWarn)
come illustrato nell'esempio seguente:
<NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>
Set di Regole di Analisi del Codice
Specifica un file di set di regole che configura la diagnostica specifica.
<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>
Dove MyConfiguration.ruleset
è il percorso del file del set di regole. Per altre informazioni sull'uso dei set di regole, vedere l'articolo nella documentazione di Visual Studio sui set di regole.
Registro degli errori
Specificare un file per registrare tutti i dati di diagnostica del compilatore e dell'analizzatore.
<ErrorLog>compiler-diagnostics.sarif</ErrorLog>
Se si seleziona l'opzione ErrorLog, il compilatore restituisce un log SARIF (Static Analysis Results Interchange Format). Gli strumenti che analizzano i risultati del compilatore e dell'analizzatore leggono i log SARIF.
È possibile specificare il formato SARIF usando l'argomento version
per l'elemento ErrorLog
:
<ErrorLog>logVersion21.json,version=2.1</ErrorLog>
Il separatore può essere una virgola (,
) o un punto e virgola (;
). I valori validi per la versione sono: "1", "2" e "2.1". Il valore predefinito è 1. "2" e "2.1" indicano entrambi SARIF versione 2.1.0.
ReportAnalyzer
Segnalare informazioni aggiuntive sull'analizzatore, ad esempio il tempo di esecuzione.
<ReportAnalyzer>true</ReportAnalyzer>
Se si seleziona l'opzione ReportAnalyzer, il compilatore crea informazioni aggiuntive sul log MSBuild che mostrano i dettagli delle caratteristiche delle prestazioni degli analizzatori nella compilazione. Viene in genere usata dagli autori dell'analizzatore come parte della convalida dell'analizzatore.
Importante
Le informazioni aggiuntive sul log generate da questo flag vengono generate solo quando viene usata l'opzione della riga di comando -verbosity:detailed
. Per altre informazioni, vedere l'articolo opzioni nella documentazione di MSBuild.