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 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.
Note
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à.
Option scopes
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.
All rules
La sintassi per la configurazione di un'opzione per tutte le regole è la seguente:
| Syntax | Example |
|---|---|
| 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:
| Syntax | Example |
|---|---|
| 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
Specific rule
La sintassi per la configurazione di un'opzione per una regola specifica è la seguente:
| Syntax | Example |
|---|---|
| dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
Options
Questa sezione elenca le opzioni di configurazione disponibili per gli analizzatori del codice. Per altre informazioni, vedere configurazione dell'analizzatore .
- additional_enum_none_names
- additional_inheritance_excluded_symbol_names
- additional_required_generic_interfaces
- additional_required_suffixes
- additional_use_results_methods
- additional_string_formatting_methods
- allowed_suffixes
- analyzed_symbol_kinds
- api_surface
- assume_method_enumerates_parameters
- opzioni di analisi dei flussi di dati
- disallowed_symbol_names
- enable_platform_analyzer_on_pre_net5_target
- enum_values_prefix_trigger
- enumeration_methods
- exclude_aspnet_core_mvc_controllerbase
- exclude_indirect_base_types
- exclude_structs
- exclude_async_void_methods
- exclude_extension_method_this_parameter
- exclude_ordefault_methods
- exclude_single_letter_type_parameters
- excluded_symbol_names
- excluded_type_names_with_derived_types
- ignore_internalsvisibleto
- linq_chain_methods
- null_check_validation_methods
- output_kind
- points_to_analysis_kind
- required_modifiers
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- use_naming_heuristic
api_surface
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 |
exclude_async_void_methods
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Indica se ignorare i metodi asincroni che non restituiscono valori | truefalse |
false |
CA2007 |
Note
Questa opzione è stata denominata skip_async_void_methods in una versione precedente.
exclude_single_letter_type_parameters
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
Indica se escludere parametri di tipo carattere singolo dalla regola, ad esempio S in Collection<S> |
truefalse |
false |
CA1715 |
Note
Questa opzione è stata denominata allow_single_letter_type_parameters in una versione precedente.
output_kind
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 | CA1515, CA1516, CA2007 |
required_modifiers
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 |
| Allowed Modifier | Summary |
|---|---|
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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
Indica se ignorare l'analisi per il parametro this dei metodi di estensione |
truefalse |
false |
CA1062 |
null_check_validation_methods
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
excluded_symbol_names
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
disallowed_symbol_names
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
Esclude i metodi FirstOrDefault e LastOrDefault dall'analisi. |
true oppure false |
false |
CA1826 |
ignore_internalsvisibleto
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Include gli assembly contrassegnati con InternalsVisibleToAttribute nell'analisi. |
true oppure false |
true |
CA1812CA1852 |
try_determine_additional_string_formatting_methods_automatically
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Escludere ASP.NET Core MVC ControllerBase quando si considera CSRF |
true oppure false |
true |
CA5391 |
enum_values_prefix_trigger
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Escludere tipi di base indiretti |
true oppure false |
true |
CA1710 |
additional_required_suffixes
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 |
Examples:
| Option Value | Summary |
|---|---|
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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica i suffissi che è possibile consentire | Elenco (separato da |) dei suffissi consentiti. | None | CA1711 |
enable_platform_analyzer_on_pre_net5_target
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica se abilitare l'analisi di TFM prima di .NET 5 |
true oppure false |
false |
CA1416 |
exclude_structs
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica se escludere gli struct dall'analisi |
true oppure false |
false |
CA1051 |
additional_enum_none_names
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica nomi aggiuntivi che è possibile consentire per un campo di enumerazione a valore zero | Elenco di nomi aggiuntivi (separato da |). | None | CA1008 |
enumeration_methods
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica i metodi personalizzati aggiuntivi che enumerano un valore IEnumerable | Nomi completi di metodi aggiuntivi (separati da |). | None | CA1851 |
linq_chain_methods
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
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:
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- interprocedural_analysis_kind
- max_interprocedural_lambda_or_local_function_call_chain
- max_interprocedural_method_call_chain
- copy_analysis
- sufficient_IterationCount_for_weak_KDF_algorithm
Per ulteriori informazioni sull'analisi dei flussi di dati, vedere Creazione di analizzatori basati sull'analisi dei flussi di dati.
dispose_analysis_kind
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Configurare il trasferimento della proprietà Dispose per gli oggetti eliminabili passati come argomenti alle chiamate a un metodo |
true oppure false |
false |
CA2000 |
interprocedural_analysis_kind
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 |
max_interprocedural_method_call_chain
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica la lunghezza massima della catena di chiamate al metodo da analizzare per l'analisi interprocedurale del flusso di dati | Unsigned integer | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
max_interprocedural_lambda_or_local_function_call_chain
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica la lunghezza massima della catena di chiamate di funzione lambda o locale da analizzare per l'analisi interprocedurale del flusso di dati | Unsigned integer | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
points_to_analysis_kind
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Specifica se deve eseguire PointsToAnalysis |
None, PartialWithoutTrackingFieldsAndProperties, Complete |
Specifico di ogni regola | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
copy_analysis
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| 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 |
sufficient_IterationCount_for_weak_KDF_algorithm
| Description | Allowable values | Default value | Configurable rules |
|---|---|---|---|
| Configura un numero di iterazioni sufficiente quando si usa un algoritmo KDF (Weak Key Derivation Function) | Integer | 100000 per la maggior parte delle regole | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |