Как избавиться от сообщений о нарушении правил именования в Visual Studio?


97

Я только что установил Visual Studio 2017. Когда я открываю существующий веб-сайт, я получаю всевозможные предупреждающие сообщения, такие как это:

IDE1006 Нарушение правила именования: эти слова должны начинаться с символов верхнего регистра: swe_calc

В коде это определяется как:

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

Это также происходит с моими элементами управления ASP.Net. В качестве примера DropDownList:

IDE1006 Нарушение правила именования: эти слова должны начинаться с символов верхнего регистра: ddlMonth_SelectedIndexChanged

Как я могу устранить подобные предупреждения в Visual Studio?


7
Обязательно отправьте этот отзыв в VS. 2017 - это новая версия с новыми функциями, которые иногда могут начинаться слишком агрессивно. Ваш отзыв поможет настроить поведение по умолчанию.
Джимми

3
Похоже на ошибку. Речь идет не только о старых проектах, но и о новых, созданных в VS2017rc. VS создает контрольные имена, которые затем помечает как оскорбительные ..
TaW

3
Я столкнулся с этой ошибкой 1006 с обработчиком нажатия кнопки, созданным MSVS, «btnList_Click ()». Другими словами, MSVS2017 жалуется на метод, который создал сам ! Он внезапно жалуется на соглашение об именах, которое существует с .Net 1.0 ! Вздох .. IDEAL РЕШЕНИЕ: #pragma warning disable IDE1006. Преимущество этого состоит в том, что, поскольку он находится в исходном коде, он автоматически распространяется на весь проект (вам не нужно синхронизировать какие-либо настройки MSVS для каждой рабочей станции).
paulsm4

Ответы:


143

Это новая настраиваемая функция, если вы перейдете в

Опции → Текстовый редактор → Ваш язык (я сделал C #) → Стиль кода → Именование

Там я перешел в Управление стилями и добавил случай верблюда (он там, но вам нужно добавить его в список для выбора): перейдите к знаку «+», затем добавьте свое правило соответственно.

Важно : закройте решение и снова откройте его, чтобы изменения вступили в силу.

Например, я использую только Camel Case для частных методов. Поэтому я выбрал частный метод и потребовал стилизовать новый, который я создал "Случай верблюда" и установил для него значение Предложения по серьезности (я также поднял его на вершину).

Также есть встроенные «предложения», так что вы также можете просто отключить сообщения.


2
Это точно такое же соглашение об именах, которое мы используем для частных методов - спасибо! Теперь мне просто нужно решить, как включить это для всех, чтобы люди не устанавливали эту опцию индивидуально ....
Мэтью Уотсон

9
Чтобы быстро перейти к этим параметрам, нажмите лампочку «Быстрые действия», наведите указатель мыши на «Исправить нарушение имени» и нажмите кнопку «Изменить параметры стиля».
Дарен

6
Я просто удалил правила
Paulustrious

2
Чтобы поделиться такими настройками / правилами / стилями со всей командой, обратитесь к этому: stackoverflow.com/questions/11684457/…
kmote

5
Вся функция именования кажется ошибочной и не работает в выпуске Visual Studio 2019.
gpresland

29

Если вы хотите подавить его только в некоторых файлах или областях, вы можете использовать следующее:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
Это, наверное, «идеальное» решение! Это решает проблему для всей команды.
paulsm4

24

Если вам нужно избавиться от этих сообщений, вы можете просто подавить их.

введите описание изображения здесь


1
В чем разница между подавлением их «в исходном коде» и «в файле подавления»?
TylerH

3
@TylerH "В исходном коде" - это файл, в котором создается предупреждение. «В файле подавления» - это сгенерированный файл для хранения всех ваших предупреждений.
MistaGoustan

14

Вы можете переименовать метод и добавить имя к атрибуту со EntryPointсвойством.

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

У меня также есть раскрывающийся список с той же ошибкой: «ddlMonth_SelectedIndexChanged». Все мои элементы управления asp.net тоже нужно переименовать?
SteveFerg

@SteveFerg решать вам - это просто предупреждение.
Daniel A. White

1
Я понял, как много. Мне просто было интересно, есть ли где-нибудь возможность отключить их, кроме «снятия щелчка» с поля «Сообщения» в списке ошибок.
SteveFerg

5

Если вы хотите опустить или аннулировать предупреждающее сообщение в методе, вы можете использовать SuppressMessage из пространства имен System.Diagnostics.CodeAnalysis :

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

Свойство Justification необязательно, но стоит потратить немного времени на написание причины, чтобы ваша команда знала, что код исправлен и в порядке.


2

Если вы наведете курсор на нарушение правила именования, вы можете использовать Alt + Enter, чтобы вызвать стили именования для этого языка. Вы также можете использовать Инструменты -> Параметры -> Текстовый редактор -> {язык} -> Стиль кода -> Именование.

Для правил camelCase в методах вы можете добавить новое правило и установить его для Camel Case. Когда вы закроете файл кода и снова откроете его, вы больше не увидите этого предупреждения. Не уверен, почему это не вариант по умолчанию, но этого не было в моем случае (с использованием Visual Code 15.8). Мне пришлось отредактировать стили, чтобы они соответствовали стандартам нашей компании.

Пример настроек стилей именования C #


2

Это можно сделать с помощью обычных VS2017 и VS2019, используя .editorconfigфайл настроек, используя правила именования: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Файл можно создать вручную, или в VS2019 вы можете заставить Visual Studio создать его для вас в соответствии с вашими предпочтениями (то есть после настройки ваших предпочтений, как в https://stackoverflow.com/a/41131563/131701 ), нажав создать файл конфигурации редактора с помощью кнопки настроек.

создать файл конфигурации редактора с помощью кнопки настроек

Например, следующие наборы правил включат camelCase для всех закрытых методов и сохранят другие правила именования по умолчанию, которые поставляются с 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

отключить правило. сообщение об ошибке, щелкнув правой кнопкой мыши, и выберите для уровня серьезности значение "Нет"


0

Это правило утверждает, что поля должны быть закрытыми.

Вы можете преобразовать его в свойство , добавив {get; set;} после поля.

Это устранило ошибку для меня.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.