Jak pozbyć się komunikatów o naruszeniu reguł nazewnictwa w programie Visual Studio?

98

Właśnie zainstalowałem program Visual Studio 2017. Kiedy otwieram istniejącą witrynę internetową, otrzymuję różnego rodzaju komunikaty ostrzegawcze, takie jak ten:

IDE1006 Naruszenie zasady nazewnictwa: te słowa muszą zaczynać się od wielkich liter: swe_calc

W kodzie definiuje się go jako:

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

Dzieje się tak również w przypadku moich kontrolek ASP.Net. Jako przykład DropDownList:

IDE1006 Naruszenie reguły nazewnictwa: te słowa muszą zaczynać się od wielkich liter: ddlMonth_SelectedIndexChanged

Jak mogę wyeliminować tego typu ostrzeżenia w programie Visual Studio?

SteveFerg
źródło
7
Zdecydowanie prześlij tę opinię do VS. 2017 to nowa wersja z nowymi funkcjami, które czasami mogą zacząć się zbyt agresywnie. Twoja opinia pomoże dostosować domyślne zachowanie.
Jimmy
3
Brzmi jak błąd. Mowa tu nie tylko o starych projektach, ale także o nowych, stworzonych w VS2017rc. VS tworzy nazwy kontrolek, które następnie oznacza jako obraźliwe ..
TaW
3
Napotkałem ten błąd 1006 z programem obsługi kliknięcia przycisku wygenerowanym przez MSVS, „btnList_Click ()”. Innymi słowy, MSVS2017 narzeka na metodę, którą sam stworzył ! Nagle narzeka na konwencję nazewnictwa, która istnieje od .Net 1.0 ! Ech .. ROZWIĄZANIE IDEALNE: #pragma warning disable IDE1006. Ma to tę zaletę, że ponieważ znajduje się w kodzie źródłowym, jest automatycznie uwzględniany w całym projekcie (nie musisz synchronizować żadnych ustawień MSVS na stację roboczą).
paulsm4

Odpowiedzi:

143

Jest to nowa konfigurowalna funkcja, jeśli przejdziesz do

Opcje → Edytor tekstu → Twój język (zrobiłem C #) → Styl kodu → Nazewnictwo

Tam poszedłem do Zarządzaj stylami dodaj Camel Case (jest tam, ale musisz dodać go do swojego wyboru): przejdź do znaku „+”, a następnie dodaj odpowiednio swoją regułę.

Ważne : zamknij rozwiązanie i otwórz je ponownie, aby zmiany zaczęły obowiązywać.

Na przykład używam Camel Case tylko do prywatnych metod. Więc wybrałem metodę prywatną i wymagałem stylu nowego, który utworzyłem „skrzynia wielbłąda” i ustawiłem ją na sugestię wagi (również promowałem ją na górze).

Wbudowane są również „Sugestie”, więc możesz po prostu wyłączyć Wiadomości.

Jason Gabel
źródło
2
To jest dokładnie ta sama konwencja nazewnictwa, której używamy w przypadku metod prywatnych - dzięki! Teraz muszę tylko dowiedzieć się, jak włączyć to dla wszystkich bez konieczności indywidualnego ustawiania tej opcji ...
Matthew Watson,
9
Szybkim sposobem uzyskania dostępu do tych opcji jest kliknięcie żarówki „Szybkie akcje”, umieszczenie wskaźnika myszy na pozycji „Napraw naruszenie nazwy” i kliknięcie przycisku „Zmień opcje stylu”.
Daren
6
Właśnie
usunąłem
2
Aby podzielić się takimi ustawieniami / zasadami / stylami z całym zespołem, przejdź do tego: stackoverflow.com/questions/11684457/ ...
kmote
5
Wydaje się, że cała funkcja nazewnictwa zawiera błędy i nie działa w wersji programu Visual Studio 2019.
gpresland
30

Jeśli chcesz go stłumić tylko w niektórych plikach lub obszarach, możesz użyć:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006
Robert S.
źródło
2
To prawdopodobnie „idealne” rozwiązanie! Rozwiązuje problem dla całego zespołu.
paulsm4
24

Jeśli chcesz pozbyć się tych wiadomości, możesz je po prostu ukryć.

wprowadź opis obrazu tutaj

AJBauer
źródło
1
Jaka jest różnica między ukrywaniem ich „w źródle” a „w pliku pomijania”?
TylerH,
3
@TylerH „W źródle” to plik, w którym jest generowane ostrzeżenie. „In Suppression File” to wygenerowany plik do przechowywania wszystkich ostrzeżeń.
MistaGoustan
14

Możesz zmienić nazwę metody i dodać nazwę do atrybutu z EntryPointwłaściwością.

[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
źródło
Mam również menu rozwijane, które wyświetla ten sam błąd: „ddlMonth_SelectedIndexChanged”. Czy wszystkie kontrolki asp.net również wymagają zmiany?
SteveFerg
@SteveFerg to zależy od Ciebie - to tylko ostrzeżenie.
Daniel A. White
1
Doszedłem do tego. Zastanawiałem się tylko, czy jest jakaś opcja, aby je wyłączyć, inna niż „odblokowanie” pola Komunikaty na liście błędów.
SteveFerg
5

Jeśli chcesz pominąć lub unieważnić komunikat ostrzegawczy w metodzie, możesz użyć SuppressMessage z przestrzeni nazw System.Diagnostics.CodeAnalysis :

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

Właściwość Uzasadnienie jest opcjonalna, ale warto poświęcić chwilę na napisanie powodu, aby poinformować zespół, że kod jest poprawiony i jest w porządku.

Carlos David López
źródło
2

Jeśli najedziesz kursorem na naruszenie reguł nazewnictwa, możesz użyć Alt + Enter, aby wyświetlić style nazewnictwa dla tego języka. Możesz także użyć Narzędzia -> Opcje -> Edytor tekstu -> {język} -> Styl kodu -> Nazewnictwo.

W przypadku reguł camelCase w Metodach możesz dodać nową regułę i ustawić ją na Camel Case. Kiedy zamkniesz plik kodu i otworzysz go ponownie, nie powinieneś już widzieć tego ostrzeżenia. Nie jestem pewien, dlaczego nie jest to opcja domyślna, ale nie było w moim przypadku (przy użyciu Visual Code 15.8). Musiałem edytować style, aby pasowały do ​​standardów naszej firmy.

Przykładowe ustawienia stylów nazewnictwa języka C #

Greg McFalls
źródło
2

Można to zrobić za pomocą zwykłych VS2017 i VS2019, używając .editorconfigpliku ustawień, używając reguł nazewnictwa: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Plik można utworzyć ręcznie lub w VS2019 możesz pobrać program Visual Studio, aby utworzyć go według własnych preferencji (tj. Po skonfigurowaniu ustawień wstępnych jak na https://stackoverflow.com/a/41131563/131701 ), naciskając wygeneruj plik konfiguracyjny edytora z przycisku ustawień.

wygeneruj plik konfiguracyjny edytora z przycisku ustawień

Na przykład następujące zestawy reguł włączą funkcję camelCase dla wszystkich metod niepublicznych i zachowają inne domyślne reguły nazewnictwa, które są dostarczane z 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
źródło
0

wyłącz regułę. kliknij prawym przyciskiem myszy komunikat o błędzie i wybierz poziom ważności na brak

TipVisor
źródło
0

Ta reguła zapewnia, że pola muszą być prywatne.

Możesz przekształcić go w Właściwość , dodając {get; set;} po polu.

To usunęło błąd za mnie.

mosborn1987
źródło