Come sbarazzarsi dei messaggi di violazione delle regole di denominazione in Visual Studio?


94

Ho appena installato Visual Studio 2017. Quando apro un sito Web esistente, ricevo tutti i tipi di messaggi di avviso come questo:

IDE1006 Violazione delle regole di denominazione: queste parole devono iniziare con caratteri maiuscoli: swe_calc

Nel codice è definito come:

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

Ciò si verifica anche con i miei controlli ASP.Net. Come esempio di DropDownList:

IDE1006 Violazione delle regole di denominazione: queste parole devono iniziare con caratteri maiuscoli: ddlMonth_SelectedIndexChanged

Come posso eliminare questo tipo di avvisi in Visual Studio?


7
Invia sicuramente questo feedback a VS. Il 2017 è una nuova versione con nuove funzionalità, e a volte queste possono iniziare troppo aggressive. Il tuo feedback aiuterà a regolare il comportamento predefinito.
Jimmy

3
Sembra un insetto. Non si tratta solo di vecchi progetti ma anche di nuovi, creati in VS2017rc. VS crea i nomi di controllo che poi contrassegna come offensivi ..
TaW

3
Ho riscontrato questo errore 1006 con un gestore di clic del pulsante generato da MSVS, "btnList_Click ()". In altre parole, MSVS2017 si lamenta di un metodo creato da sé ! Improvvisamente si lamenta di una convenzione di denominazione che esiste da .Net 1.0 ! Sigh .. SOLUZIONE IDEALE: #pragma warning disable IDE1006. Questo ha il vantaggio che, poiché si trova nel codice sorgente, è automaticamente a livello di progetto (non è necessario sincronizzare le impostazioni MSVS per workstation).
paulsm4

Risposte:


140

È una nuova funzionalità configurabile, se vai a

Opzioni → Editor di testo → La tua lingua (ho fatto C #) → Stile codice → Denominazione

Lì sono andato a Gestisci stili aggiungi cammello Case (è lì ma devi aggiungerlo alla tua selezione): vai al segno "+", quindi aggiungi la tua regola di conseguenza.

Importante : chiudere la soluzione e riaprirla affinché le modifiche abbiano effetto.

Ad esempio, utilizzo solo Camel Case per metodi privati. Quindi ho scelto il metodo privato e ho richiesto a Style il nuovo che ho creato "camel Case" e l'ho impostato su Severity Suggestion (l'ho anche promosso in alto).

Anche i "suggerimenti" incorporati sono tutti, quindi puoi anche disattivare i messaggi.


2
È esattamente la stessa convenzione di denominazione che usiamo per i metodi privati ​​- grazie! Ora devo solo capire come abilitarlo per tutti senza che le persone debbano impostare individualmente questa opzione ...
Matthew Watson

9
Un modo rapido per accedere a queste opzioni è fare clic sulla lampadina "Azioni rapide", passare il mouse su "Correggi violazione del nome" e fare clic sul pulsante "Modifica opzioni stile".
Daren

5
Ho appena cancellato le regole
Paulustrious

2
Per condividere tali impostazioni / norme / stili con un intero team, fare riferimento a questo: stackoverflow.com/questions/11684457/...
kmote

5
L'intera funzionalità di denominazione sembra essere difettosa e non funzionante nella versione di Visual Studio 2019.
gpresland

27

Se vuoi sopprimerlo solo in alcuni file o aree puoi usare quanto segue:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
Questa è probabilmente la soluzione "ideale"! Risolve il problema per l'intera squadra.
paulsm4

24

Se hai bisogno di sbarazzarti di questi messaggi, potresti anche semplicemente sopprimerli.

inserisci qui la descrizione dell'immagine


1
Qual è la differenza tra la loro soppressione "In Source" e "In Suppression File"?
TylerH

3
@TylerH "In Source" è il file in cui viene lanciato l'avviso. "In Suppression File" è un file generato per memorizzare tutti gli avvisi.
MistaGoustan

14

È possibile rinominare il metodo e aggiungere il nome all'attributo con la EntryPointproprietà.

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

Ho anche una casella a discesa che restituisce lo stesso errore: "ddlMonth_SelectedIndexChanged". Anche tutti i miei controlli asp.net devono essere rinominati?
SteveFerg

@SteveFerg sta a te - è solo un avvertimento.
Daniel A. White,

1
C'ero arrivato pure io. Mi stavo solo chiedendo se c'è un'opzione da qualche parte per disattivarli oltre a "deselezionare" la casella dei messaggi nell'elenco degli errori.
SteveFerg

5

Se si desidera omettere o annullare il messaggio di avviso in un metodo, è possibile utilizzare SuppressMessage dallo spazio dei nomi System.Diagnostics.CodeAnalysis :

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

La proprietà Giustificazione è facoltativa, ma vale la pena dedicare un momento a scrivere un motivo, per far sapere al tuo team che il codice è stato rivisto ed è ok.


2

Se passi il mouse sulla violazione delle regole di denominazione, puoi utilizzare Alt + Invio per visualizzare gli stili di denominazione per quella lingua. Puoi anche usare Strumenti -> Opzioni -> Editor di testo -> {lingua} -> Stile codice -> Denominazione.

Per le regole camelCase sui metodi, puoi aggiungere una nuova regola e impostarla su Camel Case. Quando chiudi il file di codice e lo riapri, non dovresti più vedere l'avviso. Non sono sicuro del motivo per cui questa non è un'opzione predefinita, ma non lo era nel mio caso (utilizzando Visual Code 15.8). Ho dovuto modificare gli stili per adattarli ai nostri standard aziendali.

Impostazioni degli stili di denominazione di esempio in C #


2

Questo può essere fatto usando VS2017 e VS2019 normali usando il .editorconfigfile delle impostazioni, usando le regole di denominazione: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Il file può essere creato a mano, oppure in VS2019 puoi ottenere Visual Studio per crearlo secondo le tue preferenze (cioè dopo aver configurato le tue preferenze come in https://stackoverflow.com/a/41131563/131701 ), premendo il file di configurazione dell'editor di generazione dal pulsante delle impostazioni.

genera il file di configurazione dell'editor dal pulsante delle impostazioni

Ad esempio, i seguenti set di regole abiliteranno camelCase per tutti i metodi non pubblici e manterranno le altre regole di denominazione predefinite fornite 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

disabilita la regola. fare clic con il pulsante destro del mouse sul messaggio di errore e selezionare la gravità su nessuno

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.