Comment se débarrasser des messages de violation de règle de dénomination dans Visual Studio?

94

Je viens d'installer Visual Studio 2017. Lorsque j'ouvre un site Web existant, j'obtiens toutes sortes de messages d'avertissement tels que celui-ci:

IDE1006 Violation de la règle de dénomination: ces mots doivent commencer par des majuscules: swe_calc

Dans le code, il est défini comme:

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

Cela se produit également avec mes contrôles ASP.Net. À titre d'exemple de DropDownList:

IDE1006 Violation de la règle de dénomination: ces mots doivent commencer par des majuscules: ddlMonth_SelectedIndexChanged

Comment puis-je éliminer ce type d'avertissements sous Visual Studio?

SteveFerg
la source
7
Envoyez définitivement ces commentaires à VS. 2017 est une nouvelle version avec de nouvelles fonctionnalités, et parfois celles-ci peuvent commencer trop agressives. Vos commentaires vous aideront à ajuster le comportement par défaut.
Jimmy
3
Cela ressemble à un bug. Il ne s'agit pas seulement d'anciens projets, mais également de nouveaux, créés dans VS2017rc. VS crée le contrôle qui le nomme puis le
signale
3
J'ai rencontré cette erreur 1006 avec un gestionnaire de clic de bouton généré par MSVS, "btnList_Click ()". En d'autres termes, MSVS2017 se plaint d'une méthode qu'il a créée lui-même ! Il se plaint soudain d'une convention de dénomination qui existe depuis .Net 1.0 ! Soupir .. SOLUTION IDEALE: #pragma warning disable IDE1006. Cela présente l'avantage que, comme il se trouve dans le code source, il est automatiquement à l'échelle du projet (vous n'avez pas à synchroniser les paramètres MSVS par poste de travail).
paulsm4

Réponses:

140

C'est une nouvelle fonctionnalité configurable, si vous allez à

Options → Éditeur de texte → Votre langue (j'ai fait C #) → Style de code → Dénomination

Là-dedans, je suis allé à Gérer les styles, ajouter un cas de chameau (c'est là, mais vous devez l'ajouter à votre sélectionnable): allez au signe "+", puis ajoutez votre règle en conséquence.

Important : fermez votre solution et rouvrez-la pour que les modifications prennent effet.

Par exemple, j'utilise uniquement Camel Case pour les méthodes privées. J'ai donc choisi la méthode privée et j'ai demandé le style du nouveau. J'ai créé "camel Case" et l'ai réglé sur Severity Suggestion (je l'ai également promu au sommet).

Toutes les "Suggestions" intégrées sont également des "Suggestions", vous pouvez donc simplement désactiver les messages.

Jason Gabel
la source
2
C'est exactement la même convention de dénomination que nous utilisons pour les méthodes privées - merci! Maintenant, j'ai juste besoin de savoir comment activer cela pour tout le monde sans que les gens aient à définir individuellement cette option ....
Matthew Watson
9
Un moyen rapide d'accéder à ces options est de cliquer sur l'ampoule «Actions rapides», de survoler «Corriger la violation de nom» et de cliquer sur le bouton «Modifier les options de style».
Daren
5
Je viens de supprimer les règles
Paulustrious
2
Pour partager de tels paramètres / règles / styles avec une équipe entière, reportez-vous à ceci: stackoverflow.com/questions/11684457/…
kmote
5
L'ensemble de la fonctionnalité de dénomination semble être boguée et non fonctionnelle dans la version Visual Studio 2019.
gpresland
27

Si vous souhaitez le supprimer uniquement dans certains fichiers ou zones, vous pouvez utiliser les éléments suivants:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006
Robert S.
la source
2
C'est probablement la solution «idéale»! Cela résout le problème pour toute l'équipe.
paulsm4
24

Si vous avez besoin de vous débarrasser de ces messages, vous pouvez également les supprimer.

entrez la description de l'image ici

AJBauer
la source
1
Quelle est la différence entre les supprimer «dans la source» et «dans le fichier de suppression»?
TylerH
3
@TylerH "In Source" est le fichier dans lequel l'avertissement est émis. «In Suppression File» est un fichier généré pour stocker tous vos avertissements.
MistaGoustan
14

Vous pouvez renommer la méthode et ajouter le nom à l'attribut avec la EntryPointpropriété.

[System.Runtime.InteropServices.DllImport("swedll32.dll", EntryPoint = "swe_calc")]
public static extern Int32 SweCalc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);
Daniel A. White
la source
J'ai également une liste déroulante qui donne la même erreur: «ddlMonth_SelectedIndexChanged». Tous mes contrôles asp.net doivent-ils également être renommés?
SteveFerg
@SteveFerg c'est à vous - c'est juste un avertissement.
Daniel A. White
1
Je ai pensé autant. Je me demandais juste s'il y avait une option quelque part pour les désactiver autre que "décocher" la boîte de messages dans la liste d'erreurs.
SteveFerg
5

Si vous souhaitez omettre ou annuler le message d'avertissement dans une méthode, vous pouvez utiliser le SuppressMessage de l'espace de noms System.Diagnostics.CodeAnalysis :

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

La propriété Justification est facultative, mais cela vaut la peine de passer un moment à écrire une raison, pour informer votre équipe que le code est révisé et qu'il est correct.

Carlos David López
la source
2

Si vous survolez la violation de la règle de dénomination, vous pouvez utiliser Alt + Entrée pour afficher les styles de dénomination pour cette langue. Vous pouvez également utiliser Outils -> Options -> Éditeur de texte -> {langue} -> Style de code -> Dénomination.

Pour les règles camelCase sur les méthodes, vous pouvez ajouter une nouvelle règle et la définir sur Camel Case. Lorsque vous fermez le fichier de code et que vous l'ouvrez à nouveau, vous ne devriez plus voir cet avertissement. Je ne sais pas pourquoi ce n'est pas une option par défaut, mais ce n'était pas dans mon cas (en utilisant Visual Code 15.8). J'ai dû modifier les styles pour qu'ils correspondent aux normes de notre entreprise.

Exemples de paramètres de styles de dénomination C #

Greg McFalls
la source
2

Cela peut être fait en utilisant VS2017 & VS2019 normal en utilisant le .editorconfigfichier de paramètres, en utilisant les règles de dénomination: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Le fichier peut être créé à la main, ou dans VS2019, vous pouvez demander à Visual Studio de le créer à partir de vos préférences (c'est-à-dire après avoir configuré vos préférences comme dans https://stackoverflow.com/a/41131563/131701 ), en appuyant sur générer le fichier de configuration de l'éditeur à partir du bouton Paramètres.

générer le fichier de configuration de l'éditeur à partir du bouton Paramètres

Par exemple, les ensembles de règles suivants activeront camelCase pour toutes les méthodes non publiques et conserveront les autres règles de dénomination par défaut fournies avec 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
Dave Glassborow
la source
0

désactiver la règle. Cliquez avec le bouton droit sur le message d'erreur et sélectionnez la gravité sur aucune

TipVisor
la source