¿Cómo deshacerse de los mensajes de infracción de la regla de nomenclatura en Visual Studio?


94

Acabo de instalar Visual Studio 2017. Cuando abro un sitio web existente, recibo todo tipo de mensajes de advertencia como este:

IDE1006 Violación de la regla de nomenclatura: estas palabras deben comenzar con mayúsculas: swe_calc

En el código se define como:

[System.Runtime.InteropServices.DllImport("swedll32.dll")]
public static extern Int32 swe_calc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

Esto también ocurre con mis controles ASP.Net. Como ejemplo de DropDownList:

IDE1006 Violación de la regla de nomenclatura: estas palabras deben comenzar con mayúsculas: ddlMonth_SelectedIndexChanged

¿Cómo puedo eliminar este tipo de advertencias en Visual Studio?


7
Definitivamente presente este comentario a VS. 2017 es una nueva versión con nuevas características y, a veces, estas pueden comenzar de manera demasiado agresiva. Sus comentarios ayudarán a ajustar el comportamiento predeterminado.
Jimmy

3
Suena como un error. No se trata solo de proyectos antiguos, sino también de proyectos nuevos, creados en VS2017rc. VS crea los nombres de control que luego marca como ofensivos ..
TaW

3
Encontré este error 1006 con un controlador de clic de botón generado por MSVS, "btnList_Click ()". En otras palabras, MSVS2017 se queja de un método que creó él mismo . ¡De repente se está quejando de una convención de nomenclatura que existe desde .Net 1.0 ! Suspiro .. SOLUCIÓN IDEAL: #pragma warning disable IDE1006. Esto tiene la ventaja de que, dado que está en el código fuente, se aplica automáticamente a todo el proyecto (no es necesario sincronizar ninguna configuración de MSVS por estación de trabajo).
paulsm4

Respuestas:


140

Es una nueva característica configurable, si va a

Opciones → Editor de texto → Su idioma (hice C #) → Estilo de código → Nombre

Allí fui a Administrar estilos para agregar caso de camello (está allí, pero debe agregarlo a su selección): vaya al signo "+", luego agregue su regla en consecuencia.

Importante : cierre su solución y vuelva a abrirla para que los cambios surtan efecto.

Por ejemplo, solo uso camel Case para métodos privados. Así que elijo el Método privado y el estilo requerido, el nuevo que creé "Camel Case" y lo configuré en Sugerencia de gravedad (también lo ascendí a la parte superior).

Las integradas también son "Sugerencias", por lo que también puede desactivar los Mensajes.


2
Esa es exactamente la misma convención de nomenclatura que usamos para los métodos privados, ¡gracias! Ahora solo necesito averiguar cómo habilitar esto para todos sin que las personas tengan que configurar esta opción individualmente ...
Matthew Watson

9
Una forma rápida de acceder a estas opciones es hacer clic en la bombilla de "Acciones rápidas", colocar el cursor sobre "Corregir infracción de nombre" y hacer clic en el botón "Cambiar opciones de estilo".
Daren

5
Acabo de eliminar las reglas
Paulustrious

2
Para compartir dicha configuración / reglas / estilos con todo un equipo, consulte esto: stackoverflow.com/questions/11684457/…
kmote

5
La función de nomenclatura completa parece tener errores y no es funcional en la versión de Visual Studio 2019.
gpresland

27

Si desea suprimirlo solo en algunos archivos o áreas, puede usar lo siguiente:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
¡Esta es probablemente la solución "ideal"! Resuelve el problema para todo el equipo.
paulsm4

24

Si necesita deshacerse de estos mensajes, también puede simplemente suprimirlos.

ingrese la descripción de la imagen aquí


1
¿Cuál es la diferencia entre Suprimirlos 'En origen' y 'En archivo de supresión'?
TylerH

3
@TylerH "In Source" es el archivo en el que se lanza la advertencia. "En archivo de supresión" es un archivo generado para almacenar todas sus advertencias.
MistaGoustan

14

Puede cambiar el nombre del método y agregar el nombre al atributo con la EntryPointpropiedad.

[System.Runtime.InteropServices.DllImport("swedll32.dll", EntryPoint = "swe_calc")]
public static extern Int32 SweCalc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

También tengo un cuadro desplegable que da el mismo error: 'ddlMonth_SelectedIndexChanged'. ¿Es necesario cambiar el nombre de todos mis controles asp.net?
SteveFerg

@SteveFerg eso depende de usted, es solo una advertencia.
Daniel A. White

1
Me imaginé tanto. Me preguntaba si hay una opción en algún lugar para desactivarlos además de "desmarcar" el cuadro Mensajes en la Lista de errores.
SteveFerg

5

Si desea omitir o anular el mensaje de advertencia en un método, puede usar SuppressMessage del espacio de nombres System.Diagnostics.CodeAnalysis :

[SuppressMessage("Microsoft.Design", "IDE1006", Justification = "Rule violation aceppted due blah blah..")]

La propiedad Justificación es opcional, pero vale la pena dedicar un momento a escribir una razón para que su equipo sepa que el código está revisado y está bien.


2

Si pasa el cursor sobre la infracción de la regla de nomenclatura, puede usar Alt + Enter para que aparezcan los estilos de nomenclatura para ese idioma. También puede usar Herramientas -> Opciones -> Editor de texto -> {idioma} -> Estilo de código -> Nombres.

Para las reglas de camelCase sobre métodos, puede agregar una nueva regla y establecerla en Camel Case. Cuando cierra el archivo de código y lo abre de nuevo, ya no debería ver esa advertencia. No estoy seguro de por qué esta no es una opción predeterminada, pero no lo fue en mi caso (usando Visual Code 15.8). Tuve que editar estilos para que coincidieran con los estándares de nuestra empresa.

Ejemplo de configuración de estilos de nombres de C #


2

Esto se puede hacer usando VS2017 y VS2019 normales usando el .editorconfigarchivo de configuración, usando las reglas de nomenclatura: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

El archivo se puede crear a mano, o en VS2019 puede hacer que Visual Studio lo cree según sus preferencias (es decir, después de seguir configurando sus preferencias como en https://stackoverflow.com/a/41131563/131701 ), presionando generar el archivo de configuración del editor desde el botón de configuración.

generar archivo de configuración del editor desde el botón de configuración

Por ejemplo, los siguientes conjuntos de reglas habilitarán camelCase para todos los métodos no públicos y mantendrán las demás reglas de nomenclatura predeterminadas que vienen con VS.

#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.private_method_should_be_camelcasestyle.severity = suggestion
dotnet_naming_rule.private_method_should_be_camelcasestyle.symbols = private_method
dotnet_naming_rule.private_method_should_be_camelcasestyle.style = camelcasestyle

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.interface.required_modifiers = 

dotnet_naming_symbols.private_method.applicable_kinds = method
dotnet_naming_symbols.private_method.applicable_accessibilities = private, protected, internal, protected_internal
dotnet_naming_symbols.private_method.required_modifiers = 

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.types.required_modifiers = 

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.non_field_members.required_modifiers = 

# Naming styles

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix = 
dotnet_naming_style.begins_with_i.word_separator = 
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.camelcasestyle.required_prefix = 
dotnet_naming_style.camelcasestyle.required_suffix = 
dotnet_naming_style.camelcasestyle.word_separator = 
dotnet_naming_style.camelcasestyle.capitalization = camel_case

0

desactivar la regla. haga clic con el botón derecho en el mensaje de error y seleccione la gravedad a ninguna

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.