Compartir a través de


Opciones de configuración de reglas de calidad de código

Las reglas de calidad de código tienen opciones de configuración adicionales, además de simplementeconfigurar su gravedad. Por ejemplo, cada analizador de calidad de código puede configurarse para que solo se aplique a partes específicas de su código base. Estas opciones se especifican agregando pares clave-valor al mismo archivo EditorConfig en el que se especifican los niveles de gravedad de las reglas y las preferencias generales del editor.

Note

En este artículo no se detalla cómo configurar la gravedad de una regla. La opción .editorconfig para establecer la gravedad de una regla tiene un prefijo diferente (dotnet_diagnostic) en las opciones descritas aquí (dotnet_code_quality). Además, las opciones que se describen aquí solo pertenecen a las reglas de calidad del código, mientras que la opción de gravedad también se aplica a las reglas de estilo de código. Como referencia rápida, puede configurar la gravedad de una regla mediante la siguiente sintaxis de opción:

dotnet_diagnostic.<rule ID>.severity = <severity value>

Sin embargo, para obtener información detallada sobre cómo configurar la gravedad de la regla, consulte Nivel de gravedad.

Ámbitos de opción

Cada opción de mejora se puede configurar para todas las reglas, para una categoría de reglas (por ejemplo, seguridad o diseño) o para una regla específica.

Todas las reglas

La sintaxis para configurar una opción para todas las reglas es la siguiente:

Syntax Example
dotnet_code_quality.<OptionName> = <OptionValue> dotnet_code_quality.api_surface = public

Los valores de <OptionName> se enumeran en Opciones.

Categoría de reglas

La sintaxis para configurar una opción para una categoría de reglas es la siguiente:

Syntax Example
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue dotnet_code_quality.Naming.api_surface = public

En la tabla siguiente se enumeran los valores disponibles para <RuleCategory>.

Design
Documentation
Globalization
Interoperability

Maintainability
Naming
Performance
SingleFile

Reliability
Security
Usage

Regla específica

La sintaxis para configurar una opción para una regla específica es la siguiente:

Syntax Example
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> dotnet_code_quality.CA1040.api_surface = public

Options

En esta sección se enumeran las opciones de configuración disponibles para los analizadores de código. Para obtener más información, vea Configuración del analizador.

api_surface

Description Valores permitidos Valor predeterminado Reglas configurables
¿Qué parte de la superficie de la API se debe analizar? public (se aplica a API de public y protected)
internal o friend (se aplica a API de internal y private protected)
private (se aplica a API de private)
all (se aplica a todas las API)

Separar varios valores con una coma comma (,)
public CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234

exclude_async_void_methods

Description Valores permitidos Valor predeterminado Reglas configurables
Si se omiten los métodos asincrónicos que no devuelven un valor true
false
false CA2007

Note

Esta opción se denominaba skip_async_void_methods en una versión anterior.

exclude_single_letter_type_parameters

Description Valores permitidos Valor predeterminado Reglas configurables
Si se van a excluir de la regla los parámetros de tipo de un solo carácter, por ejemplo, S en Collection<S> true
false
false CA1715

Note

Esta opción se denominaba allow_single_letter_type_parameters en una versión anterior.

output_kind

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica que debe analizarse el código de un proyecto que genera este tipo de ensamblado. Uno o varios campos de la enumeración OutputKind

Separar varios valores con una coma comma (,)
Todos los tipos de salida CA1515, CA1516, CA2007

required_modifiers

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica los modificadores necesarios para las API que se deben analizar Uno o varios valores de la siguiente tabla de modificadores permitidos

Separar varios valores con una coma comma (,)
Depende de cada regla CA1802
Modificador permitido Summary
none Ningún requisito de modificador
static o Shared Se debe declarar como static (Shared en Visual Basic)
const Se debe declarar como const
readonly Se debe declarar como readonly
abstract Se debe declarar como abstract
virtual Se debe declarar como virtual
override Se debe declarar como override
sealed Se debe declarar como sealed
extern Se debe declarar como extern
async Se debe declarar como async

exclude_extension_method_this_parameter

Description Valores permitidos Valor predeterminado Reglas configurables
Si se omitirá el análisis del parámetro this de los métodos de extensión true
false
false CA1062

null_check_validation_methods

Description Valores permitidos Valor predeterminado Reglas configurables
Los nombres de los métodos de verificación de nulidad que validan que los argumentos pasados al método no son nulos Formatos de nombre de método permitidos (separados por |):
- Solo nombre de método (incluye todos los métodos con el nombre, con independencia del tipo contenedor o el espacio de nombres).
- Nombres completos en el formato de identificador de documentación del símbolo, con un prefijo M: opcional.
None CA1062

additional_string_formatting_methods

Description Valores permitidos Valor predeterminado Reglas configurables
Nombres de métodos de formato de cadena adicionales Formatos de nombre de método permitidos (separados por |):
- Solo nombre de método (incluye todos los métodos con el nombre, con independencia del tipo contenedor o el espacio de nombres).
- Nombres completos en el formato de identificador de documentación del símbolo, con un prefijo M: opcional.
None CA2241

excluded_type_names_with_derived_types

Description Valores permitidos Valor predeterminado Reglas configurables
Nombres de tipos, de modo que el tipo y todos sus tipos derivados se excluyen del análisis Formatos de nombre de símbolo permitidos (separados por |):
- Solo nombre del tipo (incluye todos los tipos con el nombre, independientemente del tipo contenedor o del namespace).
- Nombres completos en el formato de identificador de documentación del símbolo, con un prefijo T: opcional.
None CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

excluded_symbol_names

Description Valores permitidos Valor predeterminado Reglas configurables
Nombres de los símbolos que se excluyen del análisis Formatos de nombre de símbolo permitidos (separados por |):
- Nombre del símbolo únicamente (incluye todos los símbolos con el nombre, independientemente del tipo contenedor o del espacio de nombres).
- Nombres completos en el formato de ID de documentación del símbolo. Cada nombre de símbolo necesita un prefijo de tipo símbolo, como el prefijo M: para los métodos, el prefijo T: para los tipos y el prefijo N: para los espacios de nombres.
- .ctor para los constructores y .cctor para los constructores estáticos.
None CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

disallowed_symbol_names

Description Valores permitidos Valor predeterminado Reglas configurables
Nombres de los símbolos que no se permiten en el contexto del análisis Formatos de nombre de símbolo permitidos (separados por |):
- Nombre del símbolo únicamente (incluye todos los símbolos con el nombre, independientemente del tipo contenedor o el espacio de nombres).
- Nombres completamente cualificados en el formato de ID de documentación del símbolo. Cada nombre de símbolo necesita un prefijo de tipo símbolo, como el prefijo M: para los métodos, el prefijo T: para los tipos y el prefijo N: para los espacios de nombres.
- .ctor para los constructores y .cctor para los constructores estáticos.
None CA1031

exclude_ordefault_methods

Description Valores permitidos Valor predeterminado Reglas configurables
Excluye los métodos FirstOrDefault y LastOrDefault del análisis. true o false false CA1826

ignore_internalsvisibleto

Description Valores permitidos Valor predeterminado Reglas configurables
Incluye ensamblados marcados con InternalsVisibleToAttribute en el análisis. true o false true CA1812CA1852

try_determine_additional_string_formatting_methods_automatically

Description Valores permitidos Valor predeterminado Reglas configurables
Opción booleana para habilitar la detección heurística de métodos de formato de cadena adicionales.
Un método se considera de formato de cadena si tiene un parámetro string format seguido de un parámetro params object[].
true o false false CA2241

unsafe_DllImportSearchPath_bits

Description Valores permitidos Valor predeterminado Reglas configurables
Configurar qué valor de DllImportSearchPath no es seguro para el análisis Valores enteros de System.Runtime.InteropServices.DllImportSearchPath 770 (es decir, AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) CA5393

exclude_aspnet_core_mvc_controllerbase

Description Valores permitidos Valor predeterminado Reglas configurables
Excluir ASP.NET Core MVC ControllerBase al considerar CSRF true o false true CA5391

enum_values_prefix_trigger

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica el umbral para desencadenar la regla de nomenclatura de valores de enumeración - AnyEnumValue: la regla se desencadena si alguno de los valores de enumeración empieza por el nombre del tipo de enumeración.
- AllEnumValues: la regla se desencadena si todos los valores de enumeración empieza por el nombre del tipo de enumeración.
- Heuristic: la regla se desencadena con la heurística de FxCop predeterminada (es decir, cuando al menos el 75 % de los valores de enumeración empieza por el nombre del tipo de enumeración).
Heuristic CA1712

exclude_indirect_base_types

Description Valores permitidos Valor predeterminado Reglas configurables
Exclusión de tipos base indirectos true o false true CA1710

additional_required_suffixes

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica los sufijos necesarios adicionales Lista de nombres de tipo (separados por |) con su sufijo necesario (separados por ->). Formatos de nombre de tipo permitidos:
: solo nombre de tipo (incluye todos los tipos con el nombre, independientemente del tipo contenedor o el espacio de nombres).
: nombres totalmente cualificados en el formato de ID de documentación del símbolo, con un prefijo T: opcional.
None CA1710

additional_required_generic_interfaces

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica interfaces genéricas necesarias adicionales Lista de nombres de interfaz (separados por |) con la interfaz genérica completa necesaria (separada por ->). Formatos de interfaz permitidos:
: solo nombre de interfaz (incluye todas las interfaces con el nombre, con independencia del tipo contenedor o el espacio de nombres).
- Nombres totalmente cualificados en el formato de identificador de documentación del símbolo, con un prefijo T: opcional.
None CA1010

Examples:

Valor de la opción Summary
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 Se espera que todos los tipos que implementan ISomething, con independencia de su espacio de nombres, implementen también System.Collections.Generic.IEnumerable\`1.
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 Se espera que todos los tipos que implementan System.Collections.IDictionary también implementen System.Collections.Generic.IDictionary`2.

additional_inheritance_excluded_symbol_names

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica tipos o espacios de nombres que se van a excluir del árbol de jerarquía de herencia Formatos de nombre de tipo permitidos:
: tipo o nombre de espacio de nombres (incluye todos los tipos con el nombre, independientemente del tipo o espacio de nombres que lo contenga y todos los tipos cuyo espacio de nombres contenga el nombre).
: nombre de tipo o espacio de nombres que termina con un símbolo comodín (incluye todos los tipos cuyo nombre comienza con el nombre especificado, independientemente del tipo contenedor o espacio de nombres, y todos los tipos cuyo espacio de nombres contenga el nombre).
: nombres completos en el formato de identificador de documentación del símbolo con un prefijo opcional T: para los tipos o bien un prefijo N: para los espacios de nombres.
: tipo completo o nombre de espacio de nombres con un prefijo T: opcional para el tipo o un prefijo N: para el espacio de nombres y que termina con el símbolo comodín (incluye todos los tipos cuyo nombre completo comienza por el nombre de tipo especificado o todos los tipos cuyo nombre completo comienza por el nombre del espacio de nombres especificado).
N:System.* (este valor siempre se agrega automáticamente al valor proporcionado) CA1501

analyzed_symbol_kinds

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica los tipos de símbolos que se van a analizar Uno o varios campos de SymbolKind como una lista separada por comas. Namespace, NamedType, Method, Property, Event, Parameter CA1716

use_naming_heuristic

Description Valores permitidos Valor predeterminado Reglas configurables
Configura si los parámetros o los nombres de propiedad que contienen Text, Message o Caption desencadenan esta regla true o false false CA1303

additional_use_results_methods

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica API personalizadas adicionales cuyos resultados deben usarse Nombres de métodos adicionales (separados por |). Formatos de nombre de método permitidos:
: solo nombre de método (incluye todos los métodos con el nombre, con independencia del tipo contenedor o el espacio de nombres).
- Nombres completos calificados en el formato de ID de documentación del símbolo, con un prefijo M: opcional.
None CA1806

allowed_suffixes

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica los sufijos permitidos Lista (separada por |) de sufijos permitidos. None CA1711

enable_platform_analyzer_on_pre_net5_target

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica si se va a habilitar el análisis de TFM antes de .NET 5 true o false false CA1416

exclude_structs

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica si se van a excluir estructuras del análisis true o false false CA1051

additional_enum_none_names

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica nombres permitidos adicionales para un campo de enumeración de valor cero Lista de nombres adicionales (separados por |). None CA1008

enumeration_methods

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica métodos personalizados adicionales que enumeran un IEnumerable Nombres completos de métodos adicionales (separados por |). None CA1851

linq_chain_methods

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica métodos de cadena LINQ personalizados adicionales (es decir, los métodos toman un argumento IEnumerable y devuelven una nueva instancia de IEnumerable) Nombres completos y calificados de métodos adicionales (separados por |). None CA1851

assume_method_enumerates_parameters

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica si se supone que los métodos personalizados enumeran sus parámetros de IEnumerable true o false false CA1851

Opciones de análisis de flujo de datos

Las opciones de esta sección configuran reglas de análisis de flujo de datos. Las opciones son:

Para obtener más información sobre el análisis de flujos de datos, consulte Escritura de analizadores basados en análisis de flujo de datos.

dispose_analysis_kind

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica las rutas que se van a analizar para las violaciones de eliminación - AllPaths: realice un seguimiento e informe de las violaciones de disposición que faltan en todos los caminos (de excepción y de no excepción). Además, marque también el uso de patrones de liberación no recomendados que podrían provocar potenciales fugas de recursos.
- AllPathsOnlyNotDisposed: realice un seguimiento e informe de las infracciones de disposición ausentes en todos los caminos (de excepción y normales). No señale el uso de patrones de liberación de recursos no recomendados que podrían provocar posibles fugas de recursos.
- NonExceptionPaths: rastrear e informar sobre las violaciones de disposición faltantes solo en las rutas de programa que no son de excepción. Además, señale también el uso de patrones de liberación de recursos no recomendados que pueden causar posibles fugas de gestión de recursos.
- NonExceptionPathsOnlyNotDisposed: Realice un seguimiento e informe solo de los incumplimientos de disposición en las rutas normales del programa. No marque el uso de patrones de eliminación no recomendados que podrían provocar posibles pérdidas de eliminación.
NonExceptionPaths CA2000

dispose_ownership_transfer_at_constructor

Description Valores permitidos Valor predeterminado Reglas configurables
Configuración de la transferencia de propiedad de eliminación de los argumentos pasados a la invocación del constructor true o false false CA2000

dispose_ownership_transfer_at_method_call

Description Valores permitidos Valor predeterminado Reglas configurables
Configurar la transferencia de propiedad de desecho de los objetos descartables pasados como argumentos a las llamadas de método. true o false false CA2000

interprocedural_analysis_kind

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica si se va a realizar un análisis interprocedural para las invocaciones del método de origen. None, , NonContextSensitive, ContextSensitive Específico de cada regla configurable CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_interprocedural_method_call_chain

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica la longitud máxima de la cadena de llamadas de método que se va a analizar para el análisis de flujo de datos interprocedural. Entero sin signo 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_interprocedural_lambda_or_local_function_call_chain

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica la longitud máxima de la cadena de llamadas de función local o lambda que se va a analizar para el análisis del flujo de datos interprocedural. Entero sin signo 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

points_to_analysis_kind

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica si se va a realizar PointsToAnalysis None, , PartialWithoutTrackingFieldsAndProperties, Complete Específico de cada regla CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

copy_analysis

Description Valores permitidos Valor predeterminado Reglas configurables
Especifica si se debe realizar análisis de copia (realiza un seguimiento del valor y las copias de referencia). true o false true para la mayoría de las reglas CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

sufficient_IterationCount_for_weak_KDF_algorithm

Description Valores permitidos Valor predeterminado Reglas configurables
Configura un recuento de iteraciones suficiente cuando se usa un algoritmo de derivación de claves débil (KDF). Integer 100000 para la mayoría de las reglas CA1062, CA1303, CA1508, CA2000, CA2100, CA2213