Код-анализаторы
Запись от HF размещена 17.04.2021 в 18:01
Показов 5403
Комментарии 1
Метки codequality, codestyle, netanalyzers, netframework, stylecop
|
Описание Анализаторы кода следят за качеством написанного кода. К этому относятся
Анализаторы доступны в таких реализациях:
Анализаторы, на уровне платформы, подключаются в проект в виде библиотек. Общепринятое пространство имён (namespace) "Microsoft.CodeAnalysis.*". Внешние могут иметь другие названия, но имеют слово "Analyzers". Анализаторы есть для разных языков и типов приложений. Например, CSharp вставка есть у анализаторов со спецификой C#. Есть такие как WPF, VisualBasic и т.п. Общепринятые коды ошибок - например CS0000, первые две буквы - код анализатора, а цифры - код ошибки. У VisualStudio коды - IDE0000. Найденные ошибки отображаются в панели "Error List". Уровень ошибок Уровень критичности ошибки влияет на компиляцию приложения. Компиляция считается ошибочной при наличии хотя бы одного Error. Исключение - IDE0000 ошибки, они не влияют на сборку. Имеется 5 видов:
Использование Список текущих анализаторов можно посмотреть в VisualStudio: "Solution Explorer" - "References" - "Analyzers". Каждый анализатор раскрывается на список правил, входящий в этот анализатор. Устаревший подход Старый подход осуществлялся через настройку проекта. "Project Properties" - "Code Analysis".
Ruleset Анализаторы использовали конфигурационные файлы с расширением ".ruleset". По умолчанию, использовался набор "Microsoft Managed Recommended Rules" (MinimumRecommendedRules.ruleset). Эти настройки находятся в папках VisualStudio и не доступны для редактирования. Если нужно изменить набор правил, то студия заставит сохранить файл в доступном каталоге и использовать его при сборке проекта. Пример файла конфигурации
При билде проекта в закладке "Warning" будет появляться сообщение:
Совет - избавиться от FxCop анализаторов в пользу .NET Compiler Platform ("Roslyn") анализаторов. Рекомендуемым пакетом считается "Microsoft.CodeAnalysis.NetAnalyzers " (текущая версия 5.0.2). Новый подход Подключение анализатора
Устанавливаем рекомендуемый NuGet пакет "Microsoft.CodeAnalysis.NetAnalyzers" В свойствах проекта (редактор csproj) появится ссылка на пакет. В настройках ссылки можно увидеть набор правил при которых работает этот анализатор. Он включает в себя много режимов, а не только build.
После подключения, через какое-то время мы увидим обновлённую статистику ошибок в "Error List". Теперь нужно или исправить код или сконфигурировать уровень важности ошибки, чтобы не влиять на процесс разработки. В списке присутствует код ошибки и его описание. Можно нажать на ошибку, чтобы перейти в место возникновения и проанализировать. Варианты изменения конфигурации
.editorconfig Новая возможность в "VisualStudio 2019" - управление конфигурацией анализаторов через конфигурационный файл. Аналог общего файла Resharper с настройками для командной разработки. В нём могут содержаться настройки CodeStyle из настроек VS ("Text Editor" - "C#" - "CodeStyle") и управление уровнем правил анализаторов. Файлы имеют возможность наследоваться в проектах. Если положить файл во внутренние каталоги с другими проектами, то правила из него автоматически применяются поверх конфигурации верхнего уровня (исключение, см. документацию "root = true"). Пример нового вида настроек правил в файле конфигурации:
При переходе на место возникновения ошибки, мы видим подсказку студии (или волнистая линия, или светлые точки). При нахождении курсора в строке, появляется возможность открыть контекстное меню (нажатие Ctrl+. или клик на "лампочку"). Внутри предоставлена возможность конфигурировать ошибку(-и) (или ошибки при наличии в строке больше одной рекомендации) - "Suppress or Configure issues"
Разное Параметры компилятора C# для информирования об ошибках и предупреждениях (см. ссылку "Параметры компилятора C# для информирования об ошибках и предупреждениях"). Можно управлять фильтрацией ошибок и изменением уровня критичности для конкретного проекта, а так же для конкретных видов сообщений. Выявляя любые потенциальные проблемы, или же наоборот для игнорирования ошибок, которые действительно не влияют на работу вашего приложения, а только "мусорят" логи компилятора. Например, параметр "TreatWarningsAsErrors". Можно использовать для выявления любых потенциальных проблем.
Анализ требует генерации файла документации Многие анализаторы используют генерацию XML файла, со списком всех членов сборки. Включая xdoc описание.
Проблемы Компиляция успешна при наличии фатальных ошибок Решение: Если это ошибки с кодом IDE****, то они не влияют на сборку. См. выше, общее описание. Компиляция успешна при наличии фатальных ошибок "Visual Studio" отображает фатальные ошибки, но компиляция успешна. Решение: см. "Анализ требует генерации файла документации" Компиляция успешна при наличии фатальных ошибок Если не помогло изменение выше. Скорее всего компиляция проекта происходит в других режимах, на которые не установлены настройки анализатора. Например форсируется режим "x86", а конфигурация доступна только для "AnyCPU". Решение: сделать правильные изменения в конфигурации. В ErrorList критические ошибки, но в настройках ".editorconfig" они отключены Вариант: Только начиная с "Visual Studio 2019 version 16.3" стало доступно конфигурирование анализаторов через ".editorconfig". До этой версии в конфиг файле можно было только хранить настройки code-style. Ссылки
Миграция. Старые версии Configuring StyleCop Analyzers | ||||||||||||||||||||||||||||
Метки codequality, codestyle, netanalyzers, netframework, stylecop
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
-
Статья была навеяна длительными разборками причины этой ошибки и перехом со старого подхода на новый.
Если кому-то инетерсно, то можно будет добавить статью по миграции.
Конвертирование старого StyleCop.Settings на ruleset. Замена ruleset на конфиг. Обновление legacy StyleCop на вариант совместимый с NetAnalyzers.Запись от HF размещена 17.04.2021 в 18:10


