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.

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 .

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 true
false
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> true
false
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 true
false
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:

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