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
) rispetto alle 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
In questa sezione sono elencate alcune delle opzioni disponibili. Per visualizzare l'elenco completo delle opzioni disponibili, vedere Configurazione dell'analizzatore.
- api_surface
- exclude_async_void_methods
- exclude_single_letter_type_parameters
- output_kind
- required_modifiers
- exclude_extension_method_this_parameter
- null_check_validation_methods
- additional_string_formatting_methods
- excluded_type_names_with_derived_types
- excluded_symbol_names
- disallowed_symbol_names
- exclude_ordefault_methods
- ignore_internalsvisibleto
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- exclude_aspnet_core_mvc_controllerbase
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- enum_values_prefix_trigger
- exclude_indirect_base_types
- additional_required_suffixes
- additional_required_generic_interfaces
- additional_inheritance_excluded_symbol_names
- analyzed_symbol_kinds
- use_naming_heuristic
- additional_use_results_methods
- allowed_suffixes
- enable_platform_analyzer_on_pre_net5_target
- exclude_structs
- additional_enum_none_names
- enumeration_methods
- linq_chain_methods
- assume_method_enumerates_parameters
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 |
CA1000 CA1002 CA1003 CA1005 CA1008 CA1010 CA1012 CA1021 CA1024 CA1027 CA1028 CA1030 CA1036 CA1040 CA1041 CA1043 CA1044 CA1045 CA1046 CA1047 CA1051 CA1052 CA1054 CA1055 CA1056 CA1058 CA1062 CA1063 CA1068 CA1070 CA1700 CA1707 CA1708 CA1710 CA1711 CA1714 CA1715 CA1716 CA1717 CA1720 CA1721 CA1725 CA1801 CA1802 CA1815 CA1819 CA1822 CA1859 CA2208 CA2217 CA2225 CA2226 CA2231 CA2234 |
exclude_async_void_methods
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.
exclude_single_letter_type_parameters
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.
output_kind
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 | CA2007 |
required_modifiers
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 |
exclude_extension_method_this_parameter
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_validation_methods
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: |
None | CA1062 |
additional_string_formatting_methods
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: |
None | CA2241 |
excluded_type_names_with_derived_types
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: |
None | CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400 |
excluded_symbol_names
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 |
None | CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400 |
disallowed_symbol_names
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 |
None | 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 |
try_determine_additional_string_formatting_methods_automatically
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 |
dispose_analysis_kind
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 |
dispose_ownership_transfer_at_constructor
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 |
dispose_ownership_transfer_at_method_call
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 |
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 |
exclude_indirect_base_types
Descrizione | Valori consentiti | Valore predefinito | Regole configurabili |
---|---|---|---|
Escludere tipi di base indiretti | true oppure false |
true |
CA1710 |
additional_required_suffixes
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: . |
None | CA1710 |
additional_required_generic_interfaces
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: . |
None | 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 . |
additional_inheritance_excluded_symbol_names
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 |
analyzed_symbol_kinds
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 |
use_naming_heuristic
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 |
additional_use_results_methods
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: . |
None | CA1806 |
allowed_suffixes
Descrizione | Valori consentiti | Valore predefinito | Regole configurabili |
---|---|---|---|
Specifica i suffissi che è possibile consentire | Elenco (separato da |) dei suffissi consentiti. | None | CA1711 |
enable_platform_analyzer_on_pre_net5_target
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 |
additional_enum_none_names
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 |). | None | CA1008 |
enumeration_methods
Descrizione | Valori consentiti | Valore predefinito | Regole configurabili |
---|---|---|---|
Specifica i metodi personalizzati aggiuntivi che enumerano un valore IEnumerable | Nomi completi di metodi aggiuntivi (separati da |). | None | CA1851 |
linq_chain_methods
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 |). | None | CA1851 |
assume_method_enumerates_parameters
Descrizione | Valori consentiti | Valore predefinito | Regole configurabili |
---|---|---|---|
Specifica se assumere che i metodi personalizzati enumerino i parametri IEnumerable |
true oppure false |
false |
CA1851 |