Как я могу создать свои собственные правила C# для SonarQube?

Я проводил некоторые исследования по этому поводу. Я нашел список довольно хороших примеров, но для других языков здесь.

Я также просмотрел sonar-dotnet. Но это не похоже на другие реализации.

Наконец, и, если честно, вероятно, это был мой последний шанс, я быстро просмотрел Пользовательские правила FxCop и не уверен, что будет правильным.

То, что я пытаюсь сделать, это просто базовое правило С#, которое можно просмотреть, например, это предопределено сонаром .

Я имею в виду Несовместимый код и Соответствующее решение.


person Edson Flores Palma    schedule 20.12.2018    source источник


Ответы (2)


Все примеры сонарных-настраиваемых-правил, на которые вы указали, написаны на Java и используют синтаксические анализаторы, написанные на Java для различных целевых языков. Анализаторы sonar-dotnet для C# и VB.NET написаны на C# с использованием инфраструктура Roslyn, предоставленная Microsoft.

Если вы хотите написать свои собственные правила для C#, то написание анализатора Roslyn, безусловно, самый простой способ сделать это (Roslyn заменил FxCop, который сейчас устарел). Однако доступны десятки бесплатных анализаторов Roslyn сторонних производителей, так что вполне возможно, что кто-то уже написал по крайней мере некоторые из правил, которые вам нужны. Просмотрите NuGet, чтобы узнать, что доступно.

Затем вы хотите, чтобы проблемы, поднятые анализатором Roslyn, отображались в SonarQube. Если вы используете новые версии SonarQube (v7.4+), SonarScanner for MSBuild (v4.4+) и подключаемый модуль SonarC# (v7.6+), то проблемы, поднятые сторонними анализаторами Roslyn, будут автоматически быть импортированы как общие задачи. Дополнительные сведения см. в документах.

Общие проблемы имеют несколько существенных ограничений, например, невозможность выбрать, какие правила запускать в пользовательском интерфейсе SonarQube. Если вам нужен более полнофункциональный опыт (или если вы используете более старую версию SonarQube), вы можете использовать SonarQube Roslyn SDK для создания пользовательского подключаемого модуля SonarQube, который является оболочкой для анализатора Roslyn. Использовать SDK просто: это исполняемый файл, который вы запускаете с анализатором Roslyn, и он создает для вас jar-файл плагина SonarQube.

person duncanp    schedule 21.12.2018
comment
Не могли бы вы исправить ссылки на документацию SonarQube? - person Jeroen Heier; 25.12.2018
comment
@JeroenHeier, теперь ссылки в порядке? (страница, на которую ссылаются документы выше, не была общедоступной, но теперь должна быть доступна - спасибо, что указали на это) - person duncanp; 03.01.2019
comment
Спасибо за обновление вашего вопроса. - person Jeroen Heier; 04.01.2019

Смотря как. Если вы хотите создать свои собственные правила, я бы сказал, что Настраиваемые правила FxCop — правильный путь. Хотя, я как-то озадачен. Какое правило вы имеете в виду, которого еще не существует. Если вас не устраивает предустановленный вариант, вы можете использовать StyleCop и/или ReSharper дополнительно устанавливает правила. Оба плагина настраиваются. Однако, когда я настраиваю SQ, я обычно отключаю значительную часть существующего правила, поскольку они скорее загрязняют результаты всевозможными проблемами со стилем.

person Alex    schedule 21.12.2018
comment
Спасибо за Ваш ответ! Правило, которое я хочу создать, может быть любым из известных образцов. Я просто смотрю на это как на доказательство концепции, потому что это то, о чем меня просили. Я также проверил устаревшие плагины здесь: docs.sonarqube.org/display/PLUG/Deprecated+ Плагины - person Edson Flores Palma; 21.12.2018