Отключение определенного правила анализа кода VS (IDE0058) глобально, без записи в файл конкретного проекта?

#c# #visual-studio-2019 #roslyn #roslyn-code-analysis

Вопрос:

Я часто работаю в нескольких основных проектах EF с несколькими решениями. Становится очень неприятно видеть подсказки по анализу IDE0058 везде, когда я сохраняю DbContext :

Предупреждение IDE0058

Из того, что я могу собрать, для подавления этого нарушения стиля кода требуется изменить хотя бы один файл:

  • Добавление локального сброса для каждого вызова database.SaveChangesAsync (выглядит ужасно)
  • Добавление System.Diagnostics.CodeAnalysis.SuppressMessage аннотации для каждого метода (опять же, не идеально)
  • Добавление GlobalSuppressions.cs файла в каждый проект в решении (тоже не идеально)
  • Добавление .editorconfig файла в каждый проект для настройки этого нарушения. Ни в одном из проектов, с которыми я работаю, не используются файлы editorconfig.

По причинам проверки кода я не могу просто продолжать добавлять ненужные файлы/изменения, подобные этому, всякий раз, когда я работаю над другим проектом.

Меня поражает то, что, клянусь, это недавняя проблема. Я работал в EF Core в течение многих лет до сих пор, и это не было проблемой.

В дополнение к этому член команды Roslyn прокомментировал GitHub, сказав, что он «не влияет на пользовательский интерфейс» и «скрыт по умолчанию» (здесь явно не так). Похоже, что нет никакого способа «сбросить» это значение по умолчанию, как следует из связанного комментария.

Есть ли в любом случае способ подавить это нарушение раз и навсегда во всех проектах и решениях, над которыми я работаю?

Комментарии:

1. Вам не нужен файл .editorconfig для каждого проекта, только один в общем базовом каталоге (если только в проектах нет файлов .editorconfig root = true ).

Ответ №1:

Да, вы можете создать глобальный Analyzers.ruleset файл и добавить идентификаторы правил, которые вы хотите игнорировать.

В .csproj файле каждого проекта вам нужно будет добавить в PropertyGroup раздел <CodeAnalysisRuleSet> и указать путь к ruleset файлу.

ruleset Файл есть XML файл, и это пример того, что вы можете сделать:

 <?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Rules for Core Application" Description="Custom Rules" ToolsVersion="16.0">
  <Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.Features" RuleNamespace="Microsoft.CodeAnalysis.CSharp.Features">
    <Rule Id="IDE0058" Action="None" />
  </Rules>
</RuleSet>
 

Вот как выглядит файл:

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

Вы можете решить для каждого из них, является ли это предупреждением/сообщением/ошибкой/скрытым/информацией/нет.

Обновить:

Еще один способ-добавить .editorconfig файл и проигнорировать содержащееся в нем предупреждение.

 dotnet_style_readonly_field = false:none
 

Комментарии:

1. В идеале я ищу какие-то глобальные настройки для этого; необходимость специально изменять каждый проект (их много) в моем случае не является решением. Тем более, что, по-видимому, это не поведение по умолчанию для этого предупреждения ЦС.

2. @JackGreenhill Это глобальное решение. Вам просто нужно подключиться csproj к этому файлу, который является однострочным… Это будет что-то вроде этого: <CodeAnalysisRuleSet>Analyzers.ruleset</CodeAnalysisRuleSet>

3. @JackGreenhill У меня есть еще одна идея, сейчас я обновлю свой ответ.

4. @JackGreenhill Обновлено. Если вам нужна дополнительная информация о .editorconfig файле, дайте мне знать, и я добавлю более подробную информацию.