Como se livrar das mensagens de violação de regra de nomenclatura no Visual Studio?


92

Acabei de instalar o Visual Studio 2017. Quando abro um site existente, recebo todos os tipos de mensagens de aviso, como esta:

IDE1006 Violação da regra de nomenclatura: Estas palavras devem começar com caracteres maiúsculos: swe_calc

No código, é definido como:

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

Isso também ocorre com meus controles ASP.Net. Como um exemplo de DropDownList:

IDE1006 Violação da regra de nomenclatura: Estas palavras devem começar com caracteres maiúsculos: ddlMonth_SelectedIndexChanged

Como posso eliminar esse tipo de aviso no Visual Studio?


7
Definitivamente, envie este feedback para a VS. 2017 é uma nova versão com novos recursos e, às vezes, eles podem começar muito agressivos. Seu feedback ajudará a ajustar o comportamento padrão.
Jimmy

3
Parece um bug. Não se trata apenas de projetos antigos, mas também de novos, criados no VS2017rc. O VS cria os nomes de controle e, em seguida, sinaliza como ofensivo.
TaW

3
Encontrei este erro 1006 com um manipulador de clique de botão gerado por MSVS, "btnList_Click ()". Em outras palavras, o MSVS2017 está reclamando de um método que ele mesmo criou ! De repente, ele está reclamando de uma convenção de nomenclatura que existe desde o .Net 1.0 ! Sigh .. IDEAL SOLUÇÃO: #pragma warning disable IDE1006. Isso tem a vantagem de que, por estar no código-fonte, é automaticamente em todo o projeto (você não precisa sincronizar nenhuma configuração MSVS por estação de trabalho).
paulsm4

Respostas:


138

É um novo recurso configurável, se você for para

Opções → Editor de texto → Seu idioma (eu fiz C #) → Estilo de código → Nomenclatura

Lá, fui para Gerenciar Estilos adicionar caixa de camelo (está lá, mas você precisa adicioná-la ao seu selecionável): vá para o sinal "+" e adicione sua regra de acordo.

Importante : feche sua solução e reabra-a para que as alterações tenham efeito.

Por exemplo, eu só uso Camel Case para métodos privados. Então, eu escolhi Método Privado e solicitei Estilo o novo que criei "Caixa de Camelo" e defini-o como Sugestão de Severidade (também promovi ao topo).

Os embutidos também são "Sugestões", então você também pode desligar o Mensagens.


2
Essa é exatamente a mesma convenção de nomenclatura que usamos para métodos privados - obrigado! Agora só preciso descobrir como habilitar isso para todos, sem que as pessoas tenham que definir essa opção individualmente ....
Matthew Watson

9
Uma maneira rápida de obter essas opções é clicar na lâmpada "Ações rápidas", passar o mouse sobre "Corrigir violação de nome" e clicar no botão "Alterar opções de estilo".
Daren

5
Acabei de deletar as regras
Paulustrious,

2
Para compartilhar essas configurações / regras / estilos com uma equipe inteira, consulte: stackoverflow.com/questions/11684457/…
kmote

5
Todo o recurso de nomenclatura parece estar com bug e não funcional na versão Visual Studio 2019.
gpresland

27

Se quiser suprimi-lo apenas em alguns arquivos ou áreas, você pode usar o seguinte:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
Esta é provavelmente a solução "ideal"! Isso resolve o problema para toda a equipe.
paulsm4

24

Se você precisar se livrar dessas mensagens, também pode simplesmente suprimi-las.

insira a descrição da imagem aqui


1
Qual é a diferença entre suprimi-los 'In Source' e 'In Suppression File'?
TylerH de

3
@TylerH "In Source" é o arquivo no qual o aviso está sendo lançado. "In Suppression File" é um arquivo gerado para armazenar todos os seus avisos.
MistaGoustan

14

Você pode renomear o método e adicionar o nome ao atributo com a EntryPointpropriedade.

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

Também tenho uma caixa suspensa que apresenta o mesmo erro: 'ddlMonth_SelectedIndexChanged'. Todos os meus controles do asp.net também precisam ser renomeados?
SteveFerg

@SteveFerg cabe a você - é apenas um aviso.
Daniel A. White

1
Eu percebi isso. Gostaria de saber se existe uma opção em algum lugar para desligá-los, além de "desmarcar" a caixa Mensagens na Lista de Erros.
SteveFerg

5

Se quiser omitir ou anular a mensagem de aviso em um método, você pode usar o SuppressMessage do namespace System.Diagnostics.CodeAnalysis :

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

A propriedade Justificação é opcional, mas vale a pena gastar um momento escrevendo um motivo, para que sua equipe saiba que o código foi revisado e está ok.


2

Se você passar o mouse sobre a violação da regra de nomenclatura, poderá usar Alt + Enter para exibir os estilos de nomenclatura desse idioma. Você também pode usar Ferramentas -> Opções -> Editor de Texto -> {idioma} -> Estilo de Código -> Nomenclatura.

Para regras de camelCase em métodos, você pode adicionar uma nova regra e defini-la como Camel Case. Ao fechar o arquivo de código e abri-lo novamente, você não verá mais esse aviso. Não sei por que essa não é uma opção padrão, mas não era no meu caso (usando o Visual Code 15.8). Tive que editar estilos para corresponder aos padrões de nossa empresa.

Exemplo de configurações de estilos de nomenclatura C #


2

Isso pode ser feito usando VS2017 e VS2019 normais usando o .editorconfigarquivo de configurações, usando as regras de nomenclatura: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

O arquivo pode ser criado manualmente ou no VS2019 você pode obter o Visual Studio para criá-lo para você a partir de suas preferências (ou seja, após configurar suas preferências como em https://stackoverflow.com/a/41131563/131701 ), clicando em o arquivo de configuração do editor de geração a partir do botão de configurações.

gerar o arquivo de configuração do editor a partir do botão de configurações

Por exemplo, os seguintes conjuntos de regras habilitarão camelCase para todos os métodos não públicos e manterão as outras regras de nomenclatura padrão que vêm com o 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

desabilite a regra. clique com o botão direito na mensagem de erro e selecione gravidade para nenhuma

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.