Wie entferne ich Meldungen über Verstöße gegen Namensregeln in Visual Studio?


92

Ich habe gerade Visual Studio 2017 installiert. Wenn ich eine vorhandene Website öffne, erhalte ich alle möglichen Warnmeldungen wie diese:

IDE1006 Verletzung der Namensregel: Diese Wörter müssen mit Großbuchstaben beginnen: swe_calc

Im Code ist definiert als:

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

Dies tritt auch bei meinen ASP.Net-Steuerelementen auf. Als Beispiel für eine DropDownList:

IDE1006 Verletzung der Namensregel: Diese Wörter müssen mit Großbuchstaben beginnen: ddlMonth_SelectedIndexChanged

Wie kann ich diese Art von Warnungen unter Visual Studio entfernen?


7
Senden Sie dieses Feedback auf jeden Fall an VS. 2017 ist eine neue Version mit neuen Funktionen, und manchmal können diese zu aggressiv beginnen. Ihr Feedback hilft dabei, das Standardverhalten anzupassen.
Jimmy

3
Klingt nach einem Fehler. Hier geht es nicht nur um alte, sondern auch um neue Projekte, die in VS2017rc erstellt wurden. VS erstellt die Kontrollnamen, die es dann als anstößig
kennzeichnet

3
Ich habe diesen 1006-Fehler mit einem von MSVS generierten Schaltflächenklick-Handler "btnList_Click ()" festgestellt. Mit anderen Worten, MSVS2017 beschwert sich über eine Methode, die es selbst erstellt hat ! Es beschwert sich plötzlich über eine Namenskonvention, die es seit .Net 1.0 gibt ! Seufz .. IDEALE LÖSUNG : #pragma warning disable IDE1006. Dies hat den Vorteil, dass es, da es im Quellcode enthalten ist, automatisch projektweit ist (Sie müssen keine MSVS-Einstellungen pro Workstation synchronisieren).
Pauls4

Antworten:


138

Es ist eine neue konfigurierbare Funktion, wenn Sie zu gehen

Optionen → Texteditor → Ihre Sprache (ich habe C # gemacht) → Codestil → Benennung

Dort ging ich zu Stile verwalten Kamelfall hinzufügen (es ist dort, aber Sie müssen es zu Ihrer auswählbaren hinzufügen): Gehen Sie zum "+" - Zeichen und fügen Sie Ihre Regel entsprechend hinzu.

Wichtig : Schließen Sie Ihre Lösung und öffnen Sie sie erneut, damit die Änderungen wirksam werden.

Zum Beispiel verwende ich Camel Case nur für private Methoden. Also wähle ich die private Methode und benötige den neuen Stil, den ich für "Kamelkoffer" erstellt habe, und setze ihn auf Schweregradvorschlag (ich habe ihn auch nach oben befördert).

Die eingebauten sind auch alle "Vorschläge", so dass Sie auch Nachrichten einfach ausschalten können.


2
Das ist genau die gleiche Namenskonvention, die wir für private Methoden verwenden - danke! Jetzt muss ich nur noch herausfinden, wie ich dies für alle aktivieren kann, ohne dass die Leute diese Option individuell einstellen müssen ...
Matthew Watson

9
Eine schnelle Möglichkeit, zu diesen Optionen zu gelangen, besteht darin, auf die Glühbirne "Schnelle Aktionen" zu klicken, den Mauszeiger über "Namensverletzung beheben" zu klicken und auf die Schaltfläche "Stiloptionen ändern" zu klicken.
Daren

5
Ich habe gerade die Regeln gelöscht
Paulustrious


5
Die gesamte Namensfunktion scheint fehlerhaft und in der Visual Studio 2019-Version nicht funktionsfähig zu sein.
Gpresland

27

Wenn Sie es nur in einigen Dateien oder Bereichen unterdrücken möchten, können Sie Folgendes verwenden:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
Dies ist wahrscheinlich die "ideale" Lösung! Es löst das Problem für das gesamte Team.
Pauls4

24

Wenn Sie diese Nachrichten entfernen müssen, können Sie sie auch einfach unterdrücken.

Geben Sie hier die Bildbeschreibung ein


1
Was ist der Unterschied zwischen der Unterdrückung von "In Source" und "In Suppression File"?
TylerH

3
@TylerH "In Source" ist die Datei, in der die Warnung ausgelöst wird. "In Unterdrückungsdatei" ist eine generierte Datei, in der alle Ihre Warnungen gespeichert werden.
MistaGoustan

14

Sie können die Methode umbenennen und dem Attribut mit der EntryPointEigenschaft den Namen hinzufügen .

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

Ich habe auch ein Dropdown-Feld, das den gleichen Fehler gibt: 'ddlMonth_SelectedIndexChanged'. Müssen auch alle meine asp.net-Steuerelemente umbenannt werden?
SteveFerg

@SteveFerg das liegt an dir - es ist nur eine Warnung.
Daniel A. White

1
Das habe ich mir gedacht. Ich habe mich nur gefragt, ob es irgendwo eine andere Möglichkeit gibt, sie zu deaktivieren, als das Feld Nachrichten in der Fehlerliste zu "deaktivieren".
SteveFerg

5

Wenn Sie die Warnmeldung in einer Methode weglassen oder ungültig machen möchten, können Sie die SuppressMessage aus dem Namespace System.Diagnostics.CodeAnalysis verwenden :

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

Die Justification- Eigenschaft ist optional, aber es lohnt sich, einen Moment damit zu verbringen, einen Grund zu schreiben, um Ihr Team darüber zu informieren, dass der Code überarbeitet wurde und in Ordnung ist.


2

Wenn Sie mit der Maus über die Verletzung der Namensregel fahren, können Sie mit Alt + Eingabetaste die Namensstile für diese Sprache aufrufen. Sie können auch Extras -> Optionen -> Texteditor -> {Sprache} -> Codestil -> Benennung verwenden.

Für camelCase-Regeln für Methoden können Sie eine neue Regel hinzufügen und diese auf Camel Case setzen. Wenn Sie die Codedatei schließen und erneut öffnen, sollte diese Warnung nicht mehr angezeigt werden. Ich bin mir nicht sicher, warum dies keine Standardoption ist, aber in meinem Fall nicht (mit Visual Code 15.8). Ich musste Stile bearbeiten, um unseren Unternehmensstandards zu entsprechen.

Beispieleinstellungen für C # -Namensstile


2

Dies kann mit normalem VS2017 und VS2019 unter Verwendung der .editorconfigEinstellungsdatei unter Verwendung der Benennungsregeln erfolgen: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Die Datei kann von Hand erstellt werden, oder Sie können Visual Studio in VS2019 veranlassen, sie nach Ihren Wünschen zu erstellen (dh nachdem Sie Ihre Einstellungen wie unter https://stackoverflow.com/a/41131563/131701 konfiguriert haben ), indem Sie auf klicken Die Schaltfläche zum Generieren der Editor-Konfigurationsdatei aus den Einstellungen.

Generieren Sie eine Editor-Konfigurationsdatei über die Schaltfläche Einstellungen

Die folgenden Regelsätze aktivieren beispielsweise camelCase für alle nicht öffentlichen Methoden und behalten die anderen Standard-Namensregeln bei, die mit VS geliefert werden.

#### 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

Deaktivieren Sie die Regel. Klicken Sie mit der rechten Maustaste auf Fehlermeldung und wählen Sie Schweregrad auf Keine

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.