Как избавиться от сообщений о нарушении правил именования в 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

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

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

AJBauer
источник
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

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

TipVisor
источник
0

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

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

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

mosborn 1987
источник