Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Nota:
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:
Sintaxis | Ejemplo |
---|---|
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:
Sintaxis | Ejemplo |
---|---|
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:
Sintaxis | Ejemplo |
---|---|
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
Opciones
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.
- nombres_enum_adicional_ninguno
- nombres_de_símbolos_excluidos_de_herencia_adicional
- interfaces_genéricas_adicionales_requeridas
- sufijos_requeridos_adicionales
- resultados_metodos_de_uso_adicional
- métodos adicionales de formato de cadena
- sufijos_permitidos
- analyzed_symbol_kinds
- api_surface
- Presumir que el método enumera los parámetros
- opciones de análisis de flujo de datos
- nombres_de_símbolos_no_permitidos
- enable_platform_analyzer_on_pre_net5_target
- enum_values_prefix_trigger
- métodos_de_enumeración
- exclude_aspnet_core_mvc_controllerbase
- excluir_tipos_base_indirectos
- exclude_structs
- excluir_métodos_asíncronos_void
- excluir_parámetro_extensión_método_este
- excluir_ométodos_por_defecto
- exclude_single_letter_type_parameters
- nombres_de_símbolos_excluidos
- nombres_de_tipo_excluidos_con_tipos_derivados
- ignore_internalsvisibleto
- linq_chain_methods
- null_check_validation_methods
- tipo_de_salida
- points_to_analysis_kind
- modificadores_requeridos
- intentar_determinar_métodos_adicionales_de_formato_de_cadena_automáticamente
- unsafe_DllImportSearchPath_bits
- use_naming_heuristic
ApiSurface
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Qué parte de la superficie de API se va a 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 |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1030 CA1036CA1040CA1041CA1043CA1044CA1045CA1046 CA1047CA1051CA1052CA1054CA1055CA10556CA1058CA1062 CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721 CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 CA2234 |
excluir_métodos_asíncronos_void
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Si se omiten los métodos asincrónicos que no devuelven un valor | true false |
false |
CA2007 |
Nota:
Esta opción se denominaba skip_async_void_methods
en una versión anterior.
excluir_parámetros_de_tipo_de_una_sola_letra
Descripción | 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 |
Nota:
Esta opción se denominaba allow_single_letter_type_parameters
en una versión anterior.
tipo_de_salida
Descripción | 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 | CA1515CA2007 |
modificadores necesarios
Descripción | 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 | Resumen |
---|---|
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
Descripción | 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 |
métodos_de_validación_de_comprobación_de_nulo
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Los nombres de métodos de validación de comprobación de valores NULL que validan que los argumentos pasados al método no son NULL | 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. |
Ninguno | CA1062 |
métodos_adicionales_de_formato_de_cadena
Descripción | 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. |
Ninguno | CA2241 |
nombres_de_tipos_excluidos_con_tipos_derivados
Descripción | 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 de tipo (incluye todos los tipos 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 T: opcional. |
Ninguno | CA1001CA1054CA1055CA1056CA1062 CA1068CA1303CA1304CA1305CA1508CA2000CA21000CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003 CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5380CA5381 CA5382CA5383 CA5384CA5387CA5388CA5389CA5390 CA5399CA5400 |
nombres_de_símbolos_excluidos
Descripción | 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 |): - Solo nombre de símbolo (incluye todos los símbolos con el nombre, con independencia del tipo contenedor o el 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. |
Ninguno | CA1001CA1054CA1055CA1056CA1062 CA1068CA1303CA1304CA1305CA1508CA2000CA21000CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003 CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5380CA5381 CA5382CA5383 CA5384CA5387CA5388CA5389CA5390 CA5399CA5400 |
nombres_de_símbolos_no_permitidos
Descripción | 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 |): - Solo nombre de símbolo (incluye todos los símbolos con el nombre, con independencia del tipo contenedor o el 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. |
Ninguno | CA1031 |
exclude_ordefault_methods
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Excluye los métodos FirstOrDefault y LastOrDefault del análisis. |
true o false |
false |
CA1826 |
ignore_internalsvisibleto
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Incluye ensamblados marcados con InternalsVisibleToAttribute en el análisis. |
true o false |
true |
CA1812CA1852 |
intentar_determinar_métodos_adicionales_de_formateo_de_cadenas_automáticamente
Descripción | 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
Descripción | 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
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Excluir ASP.NET Core MVC ControllerBase al considerar CSRF |
true o false |
true |
CA5391 |
disparador_de_prefijo_de_valores_enum
Descripción | 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 |
excluir_tipos_base_indirectos
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Exclusión de tipos base indirectos |
true o false |
true |
CA1710 |
sufijos_requeridos_adicionales
Descripción | 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 completos en el formato de identificador de documentación del símbolo, con un prefijo T: opcional. |
Ninguno | CA1710 |
interfaces_genéricas_adicionales_requeridas
Descripción | 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 completos en el formato de identificador de documentación del símbolo, con un prefijo T: opcional. |
Ninguno | CA1010 |
Ejemplos:
Valor de la opción | Resumen |
---|---|
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 . |
nombres_de_símbolos_excluidos_de_herencia_adicional
Descripción | 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 T: opcional para los tipos o 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 |
tipos_de_símbolos_analizados
Descripción | 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 |
utilizar_heurística_de_nombres
Descripción | 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 |
uso_adicional_resultados_métodos
Descripción | 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 en el formato de identificador de documentación del símbolo, con un prefijo M: opcional. |
Ninguno | CA1806 |
sufijos_permitidos
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Especifica los sufijos permitidos | Lista (separada por |) de sufijos permitidos. | Ninguno | CA1711 |
enable_platform_analyzer_on_pre_net5_target
Descripción | 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
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Especifica si se van a excluir estructuras del análisis |
true o false |
false |
CA1051 |
nombres_adicionales_de_enumeración_ninguno
Descripción | 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 |). | Ninguno | CA1008 |
métodos_de_enumeración
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Especifica métodos personalizados adicionales que enumeran un IEnumerable | Nombres completos de métodos adicionales (separados por |). | Ninguno | CA1851 |
linq_chain_methods
Descripción | 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 de métodos adicionales (separados por |). | Ninguno | CA1851 |
asumir_método_enumera_parámetros
Descripción | 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:
- tipo_de_análisis_de_eliminación
- dispose_ownership_transfer_at_constructor
- transferir_propiedad_en_llamada_de_método
- tipo_de_análisis_interprocedural
- cadena_de_llamada_a_función_local_o_lambda_interprocedimental_máxima
- max_interprocedural_method_call_chain
- copy_analysis
- conteo_suficiente_de_iteraciones_para_algoritmo_KDF_débil
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.
tipo_de_análisis_de_disposición
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Especifica las rutas de acceso que se van a analizar para las infracciones de eliminación |
-
AllPaths : realice un seguimiento e informe de las infracciones de eliminación que faltan en todas las rutas de acceso (de excepción y de no excepción). Además, marque también el uso de patrones de eliminación no recomendados que podrían provocar posibles pérdidas de eliminación.
- AllPathsOnlyNotDisposed : realice un seguimiento e informe de las infracciones de eliminación que faltan en todas las rutas de acceso (de excepción y de no excepción). No marque el uso de patrones de eliminación no recomendados que podrían provocar posibles pérdidas de eliminación.
- NonExceptionPaths : realice un seguimiento e informe de las infracciones de eliminación que faltan solo en las rutas de acceso del programa que no son de excepción. Además, marque también el uso de patrones de eliminación no recomendados que podrían provocar posibles pérdidas de eliminación.
- NonExceptionPathsOnlyNotDisposed : realice un seguimiento e informe de las infracciones de eliminación que faltan solo en las rutas de acceso del programa que no son de excepción. 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
Descripción | 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 |
eliminar_transferencia_de_propiedad_en_la_llamada_del_método
Descripción | Valores permitidos | Valor predeterminado | Reglas configurables |
---|---|---|---|
Configuración de la transferencia de propiedad de eliminación de objetos descartables pasados como argumentos a llamadas de método |
true o false |
false |
CA2000 |
tipo_de_análisis_interprocedimental
Descripción | 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 |
cadena_de_llamadas_a_métodos_interprocedurales_máxima
Descripción | 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_cadena_de_llamadas_interprocedurales_de_lambda_o_función_local
Descripción | 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 |
analiza_tipo_de_puntos
Descripción | 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 |
análisis de contenido
Descripción | 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 |
Conteo_de_iteraciones_suficiente_para_algoritmo_KDF_débil
Descripción | 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). | Entero | 100000 para la mayoría de las reglas | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |