Reglas innecesarias y de lenguaje
Las reglas del lenguaje de estilo de código afectan a la forma en la que se usan varias construcciones de lenguajes de programación de .NET, por ejemplo, los modificadores y los paréntesis.
En esta categoría también se incluyen las reglas que identifican partes de la base de código que no son necesarias y se pueden refactorizar o quitar. La presencia de código innecesario indica uno o varios de los siguientes problemas:
- Legibilidad: código que degrada innecesariamente la legibilidad.
- Mantenimiento: código que ya no se utiliza después de la refactorización y que se mantiene innecesariamente.
- Rendimiento: cálculo innecesario que no tiene efectos secundarios y genera una sobrecarga de rendimiento innecesaria.
- Funcionalidad: problema funcional en el código que hace que el código necesario sea redundante. Por ejemplo, IDE0060 marca los parámetros no usados en los que el método omite accidentalmente un parámetro de entrada.
La reglas de lenguaje se dividen en las siguientes categorías:
- Reglas de estilo de .NET: reglas que se aplican tanto a C# como a Visual Basic. Los nombres de las opciones para estas reglas comienzan por el prefijo
dotnet_style_
. - Reglas de estilo de C#: reglas que son específicas del código C#. Los nombres de las opciones para estas reglas comienzan por el prefijo
csharp_style_
. - Reglas de estilo de Visual Basic: reglas que son específicas del código Visual Basic. Los nombres de las opciones para estas reglas comienzan por el prefijo
visual_basic_style_
.
Formato de opción
La mayoría de las reglas de lenguaje tienen una o varias opciones asociadas para personalizar el estilo preferido. Por ejemplo, Uso de la instrucción "using" simple (IDE0063) tiene la opción csharp_prefer_simple_using_statement
asociada que le permite definir si prefiere una declaración using
o una instrucción using
. La regla aplica las opciones que elija en un nivel especificado (por ejemplo, advertencia o error).
Las opciones de las reglas de lenguaje se pueden especificar en un archivo de configuración con el siguiente formato:
option_name = value
(Visual Studio 2019 y versiones posteriores)
or
option_name = value:severity
Valor
Para cada regla de lenguaje, deberá especificar un valor que defina si se prefiere o no el estilo, o en qué circunstancias. Muchas reglas aceptan un valor de
true
(se prefiere este estilo) ofalse
(no se prefiere este estilo). Otras reglas aceptan valores comowhen_on_single_line
onever
.Gravedad (opcional en Visual Studio 2019 y versiones posteriores)
En la segunda parte de la regla, se especifica el nivel de gravedad de esta. En .NET 9 y versiones posteriores, siempre se respeta la gravedad, es decir, dentro de los IDE de desarrollo y durante las compilaciones de línea de comandos. En .NET 8 y versiones anteriores, esta configuración de gravedad solo se respeta dentro de los IDE de desarrollo, como Visual Studio, y no durante la compilación.
Si usa el SDK de .NET 8 o una versión anterior y quiere que se respete la gravedad en tiempo de compilación, puede hacerlo de una de estas dos maneras:
- Establezca analysisLevel ><o
<AnalysisLevelStyle>
propiedad9.0
en o superior, o en .preview
- Establezca la gravedad mediante la sintaxis de configuración de gravedad basada en el identificador de regla para los analizadores en su lugar. La sintaxis adopta la forma
dotnet_diagnostic.<rule ID>.severity = <severity>
, por ejemplo,dotnet_diagnostic.IDE0040.severity = warning
. Para más información, vea Nivel de gravedad.
- Establezca analysisLevel ><o
Sugerencia
A partir de Visual Studio 2019, puede configurar reglas de estilo de código desde el menú de bombilla Acciones rápidas después de que se produzca una infracción de estilo.
Índice de regla
Las reglas de código innecesarias y de lenguaje se clasifican aún más en subcategorías, como preferencias de nivel de expresión, preferencias de bloque de código y preferencias de modificadores.
- Preferencias de la directiva
using
- Preferencias de bloques de código
- Miembros con forma de expresión
- Preferencias de nivel de expresión
- Preferencias de campo
- Preferencias de palabra clave de lenguaje frente a tipos de marco
- Preferencias de modificadores
- Preferencias de nueva línea
- Preferencias de la comprobación de NULL
- Preferencias de parámetros
- Preferencias de paréntesis
- Preferencias de coincidencia de patrones
- Preferencias de eliminación
- Preferencias
This.
yme.
- Preferencias
var
Preferencias de la directiva using
Reglas de estilo de .NET (C# y Visual Basic):
Reglas de estilo de C#:
Preferencias de bloques de código
Reglas de estilo de C#:
- Adición de llaves (IDE0011)
- Uso de la instrucción "using" simple (IDE0063)
- Preferencias de declaración de espacio de nombres (IDE0160, IDE0161)
- Quitar expresión lambda innecesaria (IDE0200)
- Conversión a instrucciones de nivel superior (IDE0210)
- Convertir al programa de estilo "Program.Main" (IDE0211)
- Uso del constructor principal (IDE0290)
- Se prefiere "System.Threading.Lock" (IDE0330)
Miembros con forma de expresión
Reglas de estilo de C#:
- Uso del cuerpo de expresiones para los constructores (IDE0021)
- Uso del cuerpo de expresiones para los métodos (IDE0022)
- Usar el cuerpo de expresión para los operadores (IDE0023, IDE0024)
- Uso del cuerpo de expresiones para las propiedades (IDE0025)
- Uso del cuerpo de expresiones para los indizadores (IDE0026)
- Uso del cuerpo de expresiones para los descriptores de acceso (IDE0027)
- Uso del cuerpo de expresiones para expresiones lambda (IDE0053)
- Uso del cuerpo de expresiones para las funciones locales (IDE0061)
Preferencias de nivel de expresión
Reglas de estilo de .NET (C# y Visual Basic):
- Simplificar nombre (IDE0001)
- Simplificación del acceso a miembros (IDE0002)
- Eliminación de conversiones innecesarias (IDE0004)
- Adición de los casos que faltan a la instrucción switch (IDE0010)
- Uso de inicializadores de objeto (IDE0017)
- Uso de inicializadores de colección (IDE0028)
- La comprobación de valores null se puede simplificar (IDE0029, IDE0030, IDE0270)
- Uso de la propagación de valores NULL (IDE0031)
- Uso de la propiedad implementada automáticamente (IDE0032)
- Uso del nombre de tupla proporcionado explícitamente (IDE0033)
- Eliminación de código inaccesible (IDE0035)
- Uso de los nombres de miembro inferido (IDE0037)
- Uso de la comprobación de valores NULL (IDE0041)
- Uso de expresiones condicionales para la asignación (IDE0045)
- Uso de expresiones condicionales para la devolución (IDE0046)
- Conversión de un tipo anónimo en una tupla (IDE0050)
- Eliminación de miembros privados no utilizados (IDE0051)
- Eliminación de miembros privados sin leer (IDE0052)
- Uso de la asignación compuesta (IDE0054, IDE0074)
- Eliminación de valores de expresión innecesarios (IDE0058)
- Eliminación de la asignación de valores innecesarios (IDE0059)
- Uso de "System.HashCode.Combine" (IDE0070)
- Simplificación de la interpolación (IDE0071)
- Simplificación de una expresión condicional (IDE0075)
- Conversión de
typeof
anameof
(IDE0082) - Eliminación del operador de igualdad innecesario (IDE0100)
- Simplificación de la expresión LINQ (IDE0120)
- El espacio de nombres no coincide con la estructura de carpetas (IDE0130)
Reglas de estilo de C#:
- Uso de la expresión throw (IDE0016)
- Declaración de variables alineadas (IDE0018)
- Simplificación de la expresión "default" (IDE0034)
- Uso de funciones locales en lugar de expresiones lambda (IDE0039)
- Deconstrucción de la declaración de variables (IDE0042)
- Uso del operador de índice (IDE0056)
- Uso del operador de rango (IDE0057)
- Adición de casos que faltan a la expresión switch (IDE0072)
- Eliminación del operador de supresión innecesario (IDE0080)
- Simplificación de la expresión
new
(IDE0090) - Eliminación de descartes innecesarios (IDE0110)
- Preferencia por la comprobación NULL frente a la comprobación de tipo (IDE0150)
- Uso de la tupla para intercambiar valores (IDE0180)
- Agregar conversión explícita en el bucle foreach (IDE0220)
- Uso del literal de cadena UTF-8 (IDE0230)
- La directiva que admite un valor NULL es redundante (IDE0240)
- La directiva que admite un valor NULL no es necesaria (IDE0241)
- Usar la expresión de colección para una matriz (IDE0300)
- Usar la expresión de colección para un valor vacío (IDE0301)
- Usar la expresión de recolección para la asignación de pila (IDE0302)
- Usar la expresión de colección para
Create()
(IDE0303) - Usar la expresión de colección para el generador (IDE0304)
- Usar la expresión de colección para fluido (IDE0305)
Reglas de estilo de Visual Basic:
- Eliminación de
ByVal
(IDE0081) - Uso de la coincidencia de patrones (operador
IsNot
) (IDE0084) - Simplificación de la creación de objetos (IDE0140)
Preferencias de campo
Reglas de estilo de .NET (C# y Visual Basic):
Preferencias de palabra clave de lenguaje frente a tipos de marco
Reglas de estilo de .NET (C# y Visual Basic):
Preferencias de modificadores
Reglas de estilo de .NET (C# y Visual Basic):
Reglas de estilo de C#:
- Conversión de la función local en estática (IDE0062)
- Conversión de los campos de estructura en grabables (IDE0064)
- La estructura se puede convertir en "readonly" (IDE0250)
- Los miembros pueden establecerse como "solo lectura" (IDE0251)
- Creación de una función anónima estática (IDE0320)
Preferencias de nueva línea
- Permitir varias líneas en blanco (IDE2000)
- Permitir instrucciones insertadas en la misma línea (IDE2001)
- Permitir líneas en blanco entre llaves consecutivas (IDE2002)
- Permitir una instrucción inmediatamente después del bloque (IDE2003)
- Permitir una línea en blanco después de dos puntos en el inicializador del constructor (IDE2004)
- Permitir línea en blanco después del token en la expresión condicional (IDE2005)
- Permitir línea en blanco después del token en la expresión de flecha (IDE2006)
Preferencias de la comprobación de NULL
Reglas de estilo de C#:
Preferencias de parámetros
Reglas de estilo de .NET (C# y Visual Basic):
Preferencias de paréntesis
Reglas de estilo de .NET (C# y Visual Basic):
Preferencias de coincidencia de patrones
Reglas de estilo de C#:
- Uso de la coincidencia de patrones para evitar "as" seguida de una comprobación "null" (IDE0019)
- Uso de la coincidencia de patrones para evitar la comprobación de "is" seguida de una conversión (IDE0020, IDE0038)
- Uso de la expresión "switch" (IDE0066)
- Usar coincidencia de patrones (IDE0078 e IDE0260)
- Uso de la coincidencia de patrones (operador
not
) (IDE0083) - Simplificación del patrón de propiedad (IDE0170)
Preferencias de eliminación
Reglas de estilo de .NET (C# y Visual Basic):
Preferencias This.
y me.
Reglas de estilo de .NET (C# y Visual Basic):
Preferencias var
Reglas de estilo de C#: