Condividi tramite


Opzioni di configurazione delle regole di qualità del codice

Le regole di qualità del codice dispongono di opzioni di configurazione aggiuntive, oltre alla semplice configurazione dei loro livelli di gravità. Ad esempio, ogni analizzatore della qualità del codice può essere configurato per l'applicazione solo a parti specifiche della codebase. È possibile specificare queste opzioni aggiungendo coppie chiave-valore allo stesso file EditorConfig in cui si specificano i livelli di gravità delle regole e le preferenze generali dell'editor.

Nota

Nel presente articolo non viene illustrato in dettaglio come configurare il livello di gravità di una regola. L'opzione .editorconfig per impostare la gravità di una regola ha un prefisso diverso (dotnet_diagnostic) per le opzioni descritte qui (dotnet_code_quality). Inoltre, le opzioni descritte di seguito riguardano solo le regole di qualità del codice, mentre l'opzione del livello di gravità si applica anche alle regole di stile del codice. Come riferimento rapido, è possibile configurare il livello di gravità di una regola usando la seguente sintassi di opzione:

dotnet_diagnostic.<rule ID>.severity = <severity value>

Tuttavia, per ricevere informazioni dettagliate sulla configurazione del livello di gravità delle regole, vedere la sezione Livello di gravità.

Ambiti di opzione

Ogni opzione di affinamento può essere configurata per tutte le regole, per una categoria di regole (ad esempio, Sicurezza o Progettazione) o per una regola specifica.

Tutte le regole

La sintassi per la configurazione di un'opzione per tutte le regole è la seguente:

Sintassi Esempio
dotnet_code_quality.<OptionName> = <OptionValue> dotnet_code_quality.api_surface = public

I valori per <OptionName> sono elencati in Opzioni.

Categoria di regole

La sintassi per la configurazione di un'opzione per una categoria di regole è la seguente:

Sintassi Esempio
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue dotnet_code_quality.Naming.api_surface = public

Nella tabella seguente vengono illustrati i modelli disponibili per <RuleCategory>.

Design
Documentation
Globalization
Interoperability

Maintainability
Naming
Performance
SingleFile

Reliability
Security
Usage

Regola specifica

La sintassi per la configurazione di un'opzione per una regola specifica è la seguente:

Sintassi Esempio
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> dotnet_code_quality.CA1040.api_surface = public

Opzioni

Questa sezione elenca le opzioni di configurazione disponibili per gli analizzatori del codice. Per altre informazioni, vedere configurazione dell'analizzatore .

api_surface

Descrizione Valori consentiti Valore predefinito Regole configurabili
Quale parte della superficie dell'API analizzare public (si applica alle API public e protected)
internal o friend (si applica alle API internal e private protected)
private (si applica alle API private)
all (si applica a tutte le API)

Se si specificano più valori, separarli con virgole (,).
public CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027 CA1028CA1030CA1036CA1040 CA1040 CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051 CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA171717CA1720CA1721 CA1721 CA CA1725 CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231 CA2234

escludi_metodi_async_void

Descrizione Valori consentiti Valore predefinito Regole configurabili
Indica se ignorare i metodi asincroni che non restituiscono valori true
false
false CA2007

Nota

Questa opzione è stata denominata skip_async_void_methods in una versione precedente.

escludi_parametri_di_tipo_a_singola_lettera

Descrizione Valori consentiti Valore predefinito Regole configurabili
Indica se escludere parametri di tipo carattere singolo dalla regola, ad esempio S in Collection<S> true
false
false CA1715

Nota

Questa opzione è stata denominata allow_single_letter_type_parameters in una versione precedente.

tipo_di_output

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica che il codice in un progetto che genera questo tipo di assembly deve essere analizzato Uno o più campi dell'enumerazione OutputKind

Se si specificano più valori, separarli con virgole (,).
Tutti i tipi di output CA1515CA2007

modificatori_richiesti

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica i modificatori necessari per le API da analizzare Uno o più valori dalla tabella dei modificatori consentiti riportata di seguito

Se si specificano più valori, separarli con virgole (,).
Dipende da ogni regola CA1802
Modificatore consentito Riepilogo
none Nessun requisito di modificatore
static oppure Shared Deve essere dichiarato come static (Shared in Visual Basic)
const Deve essere dichiarato come const
readonly Deve essere dichiarato come readonly
abstract Deve essere dichiarato come abstract
virtual Deve essere dichiarato come virtual
override Deve essere dichiarato come override
sealed Deve essere dichiarato come sealed
extern Deve essere dichiarato come extern
async Deve essere dichiarato come async

escludi_parametro_questo_metodo_di_estensione

Descrizione Valori consentiti Valore predefinito Regole configurabili
Indica se ignorare l'analisi per il parametro this dei metodi di estensione true
false
false CA1062

null_check_metodi_di_validazione

Descrizione Valori consentiti Valore predefinito Regole configurabili
Nomi dei metodi di convalida null-check che convalidano che gli argomenti passati al metodo sono diversi da null Formati dei nomi dei metodi consentiti (separati dal carattere |):
- Solo nome metodo (include tutti i metodi con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi)
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo M:
Nessuno CA1062

metodi_aggiuntivi_di_formattazione_di_stringhe

Descrizione Valori consentiti Valore predefinito Regole configurabili
Nomi di metodi aggiuntivi di formattazione delle stringhe Formati dei nomi dei metodi consentiti (separati dal carattere |):
- Solo nome metodo (include tutti i metodi con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi)
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo M:
Nessuno CA2241

nomi_di_tipo_esclusi_con_tipi_derivati

Descrizione Valori consentiti Valore predefinito Regole configurabili
Nomi di tipi, in modo che il tipo e tutti i relativi tipi derivati vengano esclusi dall'analisi Formati dei nomi dei metodi consentiti (separati dal carattere |):
- Solo nome metodo (include tutti i tipi con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi)
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo T:
Nessuno CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA21000CA2100CA2301 CA2301CA2302CA2311CA2312CA2321CA23222CA2327CA2328CA2329 CA2330CA3001CA3002CA3003 CA3004CA3005 CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA53777CA5378CA5380CA5381CA5382CA538383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

nomi_simbolo_esclusi

Descrizione Valori consentiti Valore predefinito Regole configurabili
Nomi di simboli esclusi dall'analisi Formati dei nomi dei metodi consentiti (separati dal carattere |):
- Solo nome metodo (include tutti i simboli con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi)
- Nomi completi nel formato ID della documentazione del simbolo. Ogni nome di simbolo richiede un prefisso del tipo di simbolo, come il prefisso M: per i metodi, il prefisso T: per i tipi e il prefisso N: per gli spazi dei nomi.
- .ctor per costruttori e .cctor per costruttori statici
Nessuno CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA21000CA2100CA2301 CA2301CA2302CA2311CA2312CA2321CA23222CA2327CA2328CA2329 CA2330CA3001CA3002CA3003 CA3004CA3005 CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA53777CA5378CA5380CA5381CA5382CA538383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

nomi_di_simboli_non_consentiti

Descrizione Valori consentiti Valore predefinito Regole configurabili
Nomi di simboli non consentiti nel contesto dell'analisi Formati dei nomi dei metodi consentiti (separati dal carattere |):
- Solo nome metodo (include tutti i simboli con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi)
- Nomi completi nel formato ID della documentazione del simbolo. Ogni nome di simbolo richiede un prefisso del tipo di simbolo, come il prefisso M: per i metodi, il prefisso T: per i tipi e il prefisso N: per gli spazi dei nomi.
- .ctor per costruttori e .cctor per costruttori statici
Nessuno CA1031

exclude_ordefault_methods

Descrizione Valori consentiti Valore predefinito Regole configurabili
Esclude i metodi FirstOrDefault e LastOrDefault dall'analisi. true oppure false false CA1826

ignore_internalsvisibleto

Descrizione Valori consentiti Valore predefinito Regole configurabili
Include gli assembly contrassegnati con InternalsVisibleToAttribute nell'analisi. true oppure false true CA1812CA1852

cerca_di_determinare_metodi_di_formattazione_delle_stringhe_aggiuntive_automaticamente

Descrizione Valori consentiti Valore predefinito Regole configurabili
Opzione booleana per abilitare il rilevamento euristico di metodi di formattazione stringa aggiuntivi.
Un metodo è considerato un metodo di formattazione stringa se ha un parametro string format seguito da un parametro params object[].
true oppure false false CA2241

unsafe_DllImportSearchPath_bits

Descrizione Valori consentiti Valore predefinito Regole configurabili
Configurare quali valori di DllImportSearchPath non sono sicuri per l'analisi Valori interi di System.Runtime.InteropServices.DllImportSearchPath 770 (ovvero AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) CA5393

exclude_aspnet_core_mvc_controllerbase

Descrizione Valori consentiti Valore predefinito Regole configurabili
Escludere ASP.NET Core MVC ControllerBase quando si considera CSRF true oppure false true CA5391

enum_values_prefix_trigger

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica la soglia per attivare la regola di denominazione per i valori di enumerazione - AnyEnumValue - La regola viene attivata se qualsiasi valore di enumerazione inizia con il nome del tipo di enumerazione.
- AllEnumValues - La regola viene attivata se tutti i valori di enumerazione iniziano con il nome del tipo di enumerazione.
- Heuristic - La regola viene attivata usando il valore euristico predefinito FxCop (ovvero, quando almeno il 75% dei valori di enumerazione inizia con il nome del tipo di enumerazione).
Heuristic CA1712

escludi_tipi_base_indiretti

Descrizione Valori consentiti Valore predefinito Regole configurabili
Escludere tipi di base indiretti true oppure false true CA1710

suffissi_obbligatori_aggiuntivi

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica suffissi obbligatori aggiuntivi Elenco dei nomi di tipo (separati da |) con il suffisso obbligatorio (separato da ->). Formati di nome di tipo consentiti:
- Solo nome tipo (include tutti i tipi con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi).
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo T:.
Nessuno CA1710

interfacce_generic_richieste_aggiuntive

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica interfacce generiche obbligatorie aggiuntive Elenco dei nomi delle interfacce (separati da |) con l'interfaccia completa generica obbligatoria (separati da ->). Formati interfaccia consentiti:
- Solo nome interfaccia (include tutte le interfacce con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi).
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo T:.
Nessuno CA1010

Esempi:

Valore opzione Riepilogo
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 Si prevede che tutti i tipi che implementano ISomething, indipendentemente dal relativo spazio dei nomi, implementino anche System.Collections.Generic.IEnumerable\`1.
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 Si prevede che tutti i tipi che implementano System.Collections.IDictionary implementino anche System.Collections.Generic.IDictionary`2.

nomi_simbolo_esclusi_in_eredità_addizionale

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica i tipi o gli spazi dei nomi da escludere dall'albero di gerarchia di ereditarietà Formati di nome di tipo consentiti:
- Nome del tipo o dello spazio dei nomi XML (include tutti i tipi con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi e tutti i tipi il cui spazio dei nomi contenga il nome).
- Nome del tipo o dello spazio dei nomi che termina con un carattere jolly (include tutti i tipi il cui nome inizia con il nome specificato, indipendentemente dal tipo che li contiene o dallo spazio dei nomi e tutti i tipi il cui spazio dei nomi contenga il nome).
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo T: per i tipi o un prefisso N: per gli spazi dei nomi.
- Tipo completo o nome dello spazio dei nomi con un prefisso facoltativo T: per il tipo o prefisso N: per lo spazio dei nomi e termina con il simbolo jolly (include tutti i tipi il cui nome completo inizia con il nome di tipo specificato o tutti i tipi il cui nome completo inizia con il nome dello spazio dei nomi specificato).
N:System.* (Questo valore viene aggiunto sempre automaticamente al valore specificato) CA1501

tipi_di_simboli_analizzati

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica le tipologie di simboli da analizzare Uno o più campi di SymbolKind come elenco separato da virgola. Namespace, NamedType, Method, Property, Event, Parameter CA1716

usa_heuristica_di_nominazione

Descrizione Valori consentiti Valore predefinito Regole configurabili
Configura se i parametri o i nomi di proprietà contenenti Text, Message o Caption attivano questa regola true oppure false false CA1303

metodi_dei_risultati_uso_addizionale

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica API personalizzate aggiuntive di cui devono essere usati i risultati Nomi di metodi aggiuntivi (separati da |). Formati nome metodo consentiti:
- Solo nome metodo (include tutti i metodi con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi).
- Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo M:.
Nessuno CA1806

suffissi_permesi

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica i suffissi che è possibile consentire Elenco (separato da |) dei suffissi consentiti. Nessuno CA1711

abilitare_analizzatore_piattaforma_su_target_pre_net5

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica se abilitare l'analisi di TFM prima di .NET 5 true oppure false false CA1416

exclude_structs

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica se escludere gli struct dall'analisi true oppure false false CA1051

enum_addizionale_nessun_nome

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica nomi aggiuntivi che è possibile consentire per un campo di enumerazione a valore zero Elenco di nomi aggiuntivi (separato da |). Nessuno CA1008

metodi_di_enumerazione

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica i metodi personalizzati aggiuntivi che enumerano un valore IEnumerable Nomi completi di metodi aggiuntivi (separati da |). Nessuno CA1851

linq_chain_metodi

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica metodi catena LINQ aggiuntivi personalizzati (ovvero, i metodi acquisiscono un argomento IEnumerable e restituiscono una nuova istanza IEnumerable) Nomi completi di metodi aggiuntivi (separati da |). Nessuno CA1851

assume_metodo_elenca_parametri

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica se assumere che i metodi personalizzati enumerino i parametri IEnumerable true oppure false false CA1851

Opzioni di analisi del flusso di dati

Le opzioni in questa sezione configurano le regole di analisi del flusso di dati. Le opzioni sono:

Per ulteriori informazioni sull'analisi dei flussi di dati, vedere Creazione di analizzatori basati sull'analisi dei flussi di dati.

tipo_disposizione_analisi

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica quali percorsi analizzare per le violazioni Dispose - AllPaths - Monitorare le violazioni Dispose e creare report su di esse in tutti i percorsi (percorsi di eccezione e non eccezione). Inoltre, contrassegnare l'uso di modelli Dispose non consigliati che potrebbero causare potenziali perdite Dispose.
- AllPathsOnlyNotDisposed - Monitorare le violazioni Dispose e creare report su di esse in tutti i percorsi (percorsi con e senza eccezione). Non contrassegnare l'uso di modelli Dispose non consigliati che potrebbero causare potenziali perdite Dispose.
- NonExceptionPaths - Monitorare le violazioni Dispose e creare report su di esse solo in percorsi di programmi senza eccezione. Inoltre, contrassegnare l'uso di modelli Dispose non consigliati che potrebbero causare potenziali perdite Dispose.
- NonExceptionPathsOnlyNotDisposed - Monitorare le violazioni Dispose e creare report su di esse solo in percorsi di programmi senza eccezione. Non contrassegnare l'uso di modelli Dispose non consigliati che potrebbero causare potenziali perdite Dispose.
NonExceptionPaths CA2000

gestione_trasferimento_di_proprietà_al_costruttore

Descrizione Valori consentiti Valore predefinito Regole configurabili
Configurare il trasferimento della proprietà Dispose per gli argomenti passati alla chiamata a un costruttore true oppure false false CA2000

trasferimento_proprietà_alla_chiamata_del_metodo

Descrizione Valori consentiti Valore predefinito Regole configurabili
Configurare il trasferimento della proprietà Dispose per gli oggetti eliminabili passati come argomenti alle chiamate a un metodo true oppure false false CA2000

tipo_analisi_interprocedurale

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica se eseguire l'analisi interprocedurale per le chiamate al metodo di origine None, NonContextSensitive, ContextSensitive Specifica di ogni regola configurabile CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

massimo_catena_di_chiamate_di_metodo_interprocedurale

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica la lunghezza massima della catena di chiamate al metodo da analizzare per l'analisi interprocedurale del flusso di dati Intero senza segno 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_catena_di_chiamate_lambda_o_funzione_locale_interprocedurale

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica la lunghezza massima della catena di chiamate di funzione lambda o locale da analizzare per l'analisi interprocedurale del flusso di dati Intero senza segno 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

punti_a_tipo_di_analisi

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica se deve eseguire PointsToAnalysis None, PartialWithoutTrackingFieldsAndProperties, Complete Specifico di ogni regola CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

analisi_copia

Descrizione Valori consentiti Valore predefinito Regole configurabili
Specifica se eseguire l'analisi della copia (tiene traccia delle copie di valori e riferimenti) true oppure false true per la maggior parte delle regole CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

conteggioIterazioni_sufficiente_per_algoritmo_KDF_debole

Descrizione Valori consentiti Valore predefinito Regole configurabili
Configura un numero di iterazioni sufficiente quando si usa un algoritmo KDF (Weak Key Derivation Function) Numero intero 100000 per la maggior parte delle regole CA1062, CA1303, CA1508, CA2000, CA2100, CA2213