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) 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

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