#c# #visual-studio-2019 #roslyn #roslyn-code-analysis
Вопрос:
Я часто работаю в нескольких основных проектах EF с несколькими решениями. Становится очень неприятно видеть подсказки по анализу IDE0058 везде, когда я сохраняю DbContext
:
Из того, что я могу собрать, для подавления этого нарушения стиля кода требуется изменить хотя бы один файл:
- Добавление локального сброса для каждого вызова
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
файле, дайте мне знать, и я добавлю более подробную информацию.