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à.
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:
| 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.<CategoriaRegola>.<NomeOpzione> = ValoreOpzione | dotnet_code_quality.Naming.api_surface = public |
Nella tabella seguente sono elencati i valori 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:
| 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 | 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 |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 |
exclude_async_void_methods
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| 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 | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
Indicare se escludere dalla regola i parametri di tipo costituiti da un singolo carattere, 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 | 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 | CA1515, CA1516, CA2007 |
required_modifiers
| Description | 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 | 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 | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
Indica se ignorare l'analisi per il parametro this dei metodi di estensione |
truefalse |
false |
CA1062 |
null_check_validation_methods
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Nomi dei metodi di convalida null-check che convalidano il fatto che gli argomenti passati al metodo non sono 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 completamente qualificati nel formato ID della documentazione del simbolo, con un prefisso facoltativo M: |
None | CA1062 |
additional_string_formatting_methods
| Description | 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 e qualificati nel formato ID della documentazione dei simboli, con un prefisso facoltativo M: |
None | CA2241 |
excluded_type_names_with_derived_types
| Description | 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 di simboli consentiti (separati da |): - Solo nome tipo (include tutti i tipi con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi) - Nomi completamente qualificati nel formato ID della documentazione del simbolo, con un prefisso opzionale T: |
None | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
excluded_symbol_names
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Nomi di simboli esclusi dall'analisi | Formati dei nomi dei simboli consentiti (separati dal carattere |): - Solo nome simbolo (include tutti i simboli con il nome, indipendentemente dal tipo che li contiene o dallo spazio dei nomi) - Nomi pienamente qualificati 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 | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Nomi di simboli non consentiti nel contesto dell'analisi | Formati dei nomi dei simboli consentiti (separati dal carattere |): - Solo nome simbolo (include tutti i simboli con il nome, indipendentemente dal tipo o dallo spazio dei nomi che li contengono) - Nomi completi nel formato dell'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 | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
Esclude i metodi FirstOrDefault e LastOrDefault dall'analisi. |
true oppure false |
false |
CA1826 |
ignore_internalsvisibleto
| Description | 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
| Description | 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
| Description | 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
| Description | 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
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Specifica il parametro soglia per attivare la regola di denominazione dei 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 | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Escludere tipi di base indiretti |
true oppure false |
true |
CA1710 |
additional_required_suffixes
| Description | 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 completamente qualificati nel formato ID della documentazione del simbolo, con un prefisso facoltativo T:. |
None | CA1710 |
additional_required_generic_interfaces
| Description | 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 |
Examples:
| Valore opzione | 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 | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Specifica i tipi o i namespace da escludere dall'albero gerarchico 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 di tipo o 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 contiene il nome). - Nomi completi nel formato ID della documentazione del simbolo, con un prefisso facoltativo T: per i tipi o un prefisso N: per i namespace.
- Nome completamente qualificato di un tipo o di uno spazio dei nomi, con un prefisso facoltativo T: per il tipo o un prefisso N: per lo spazio dei nomi, e che termina con il simbolo jolly (includendo tutti i tipi il cui nome completamente qualificato inizia con il nome di tipo specificato, o tutti i tipi il cui nome completamente qualificato inizia con il nome del namespace specificato). |
N:System.* (Questo valore viene aggiunto sempre automaticamente al valore specificato) |
CA1501 |
analyzed_symbol_kinds
| Description | 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
| Description | 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
| Description | 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
| Description | 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
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Specifica se abilitare l'analisi di TFM prima di .NET 5 |
true oppure false |
false |
CA1416 |
exclude_structs
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Specifica se escludere gli struct dall'analisi |
true oppure false |
false |
CA1051 |
additional_enum_none_names
| Description | 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
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Specifica metodi personalizzati aggiuntivi che enumerano un IEnumerable | Nomi completi di metodi aggiuntivi (separati da |). | None | CA1851 |
linq_chain_methods
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
Specifica metodi personalizzati aggiuntivi della catena LINQ (ovvero i metodi prendono un argomento IEnumerable e restituiscono una nuova istanza IEnumerable) |
Nomi completi di metodi aggiuntivi (separati da |). | None | CA1851 |
assume_method_enumerates_parameters
| Description | 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:
- 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 | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Specifica quali percorsi di codice analizzare per le violazioni del metodo Dispose |
-
AllPaths - Monitorare le violazioni di mancato Dispose e creare report su di esse su tutti i percorsi, sia quelli di eccezione che di non eccezione. Inoltre, contrassegnare l'uso di pattern di Dispose non consigliati che potrebbero causare possibili perdite di memoria.
- AllPathsOnlyNotDisposed - Tracciare e riportare le violazioni di eliminazione su tutti i percorsi (percorsi normali ed eccezionali). Non contrassegnare l'uso di modelli di Dispose non consigliati che potrebbero causare potenziali perdite di risorse.
- NonExceptionPaths - Monitorare le violazioni di Dispose mancanti e creare report su di esse solo nei percorsi del programma che non generano eccezioni. Inoltre, contrassegnare l'uso di pattern Dispose non consigliati che potrebbero causare perdite di risorse.
- NonExceptionPathsOnlyNotDisposed - Monitorare le violazioni di dispose mancanti e creare report solo in percorsi di programma privi di eccezioni. Non contrassegnare l'uso di modelli Dispose non consigliati che potrebbero causare potenziali perdite Dispose. |
NonExceptionPaths |
CA2000 |
dispose_ownership_transfer_at_constructor
| Description | 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
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Configurare il trasferimento della proprietà di Dispose per gli oggetti eliminabili passati come argomenti alle chiamate ai metodi |
true oppure false |
false |
CA2000 |
interprocedural_analysis_kind
| Description | 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 |
max_interprocedural_method_call_chain
| Description | 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_interprocedural_lambda_or_local_function_call_chain
| Description | 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 |
points_to_analysis_kind
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| Specifica se deve eseguire PointsToAnalysis |
None, PartialWithoutTrackingFieldsAndProperties, Complete |
Specifico di ogni regola | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
copy_analysis
| Description | 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 |
sufficient_IterationCount_for_weak_KDF_algorithm
| Description | Valori consentiti | Valore predefinito | Regole configurabili |
|---|---|---|---|
| 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 |