Ответ 1
Короткий ответ: нет поддерживаемого способа сделать это. Но вы можете попытаться немного взломать, чтобы решить эту проблему.
Длинный ответ
Существует несколько проблем, которые вам необходимо решить:
- Сканер SonarQube для MsBuild, который вы, вероятно, используете для вывода результатов анализа на сервер SonarQube, сбрасывает активные правила с сервера SQ. Затем он передается в задачу
CoreCompile
в msbuild с помощью параметраruleset
. Таким образом, даже если вы создали свой собственный, который будет удален из параметров и изменен на Sonar один. - Конечный шаг вызывает проблемы на сервере SQ, но SQ-сервер игнорирует любой идентификатор правила, который неизвестен. Поэтому в вашем случае все проблемы
CS*
будут проигнорированы.
В настоящий момент я не думаю, что это простое решение этих проблем. Общее предложение было бы создать ваш плагин SQ, который определяет все правила CS*
. Получите эти правила в файле набора правил (возможно, между фазой begin и build), проанализируйте выходной файл json и отправьте результаты на сервер. Это сработает, но это довольно большая задача, и есть много мест, где это может пойти на уступки.
Другой подход - взглянуть на SonarQube Roslyn SDK. Этот SDK позволяет создавать плагин SonarQube от анализаторов Roslyn nuget. Если вы создадите такой плагин, вы увидите, что он содержит 2-3 XML файла. Эти файлы описывают правила плагина. Чтобы поддержать ваше дело, я бы:
- Создайте пакет анализатора Roslyn с одним правилом. (Который не сообщает о каких-либо проблемах.)
- Измените встроенные файлы, чтобы определить правила
CS*
. Вероятно, не так легко получить список всех правилCS*
, но this может стать хорошим началом. - Разверните плагин SQ на сервере SQ и надейтесь, что он будет работать.