2016-06-01 4 views
0

У меня есть проект C#, который использует StyleCop.Analyzers (на основе Roslyn). Когда мы составляем этот проект с использованием MSBuild 14, мы видим следующее предупреждение поднятого StyleCop.Analyzers:SonarQube перезаписывает набор правил и анализаторы

warning SA1005: Single line comment must begin with a space. 

До сих пор, так хорошо. Это то, чего мы ожидаем.

Затем мы создали простой скрипт, который делает эту компиляцию в SonarQube MSBuild пуска/остановки:

cd MyProjectRoot 
"D:\MSBuild.SonarQube.Runner-2.0\MSBuild.SonarQube.Runner.exe" begin /k:test /n:test /v:1.0.0 /d:sonar.host.url=https://mysonar.com/ /d:sonar.login=abc 
"C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe" /p:Configuration=Debug /t:Rebuild 
"D:\MSBuild.SonarQube.Runner-2.0\MSBuild.SonarQube.Runner.exe" end 

Когда мы запустим это, у нас есть что-то странное: мы не видим предыдущее предупреждение SA1005.

Глядя на выходе MsBuild мы видим, что, когда MSBuild является не называется в SonarQube старт/стоп, мы имеем следующее:

C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe ... /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\Newtonsoft.Json.dll /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\StyleCop.Analyzers.CodeFixes.dll /analyzer:..\packages\StyleCop.Analyzers.1.0.0\analyzers\dotnet\cs\StyleCop.Analyzers.dll 

Но когда StyleCop используется в SonarQube старт/стоп , у нас есть:

C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe ... /analyzer:C:\Users\myuser\AppData\Local\Temp\1\.sonarqube\.static\csharp_1.11.0\SonarAnalyzer.zip\SonarAnalyzer.CSharp.dll /analyzer:C:\Users\myuser\AppData\Local\Temp\1\.sonarqube\.static\csharp_1.11.0\SonarAnalyzer.zip\SonarAnalyzer.dll 

Так как вы можете видеть, мы не используем те же анализаторы! На самом деле, я не использую мои настроенные анализы вообще. Кроме того, мы не используем один и тот же набор правил. Я не показал его на выходе MSBuild, но вы можете мне доверять;)

Так два вопроса:

  • Как мы можем сохранить наши сконфигурированные анализаторы кода при компиляции с SonarQube включен?
  • Как мы можем сохранить настроенный RuleSet при компиляции с включенным SonarQube?

Обратите внимание, что я использую:

  • SonarQube MSBuild бегун сервер 2.0
  • SonarQube 5.3
  • SonarQube C# плагин 5.2

ответ

1

SonarQube переопределяет набор правил, используемый в процессе анализа. Если вы хотите, чтобы ваш набор правил был одинаковым, вам необходимо настроить профиль качества в SonarQube в соответствии с вашим текущим набором правил. Существует плагин VS, который будет синхронизировать ваш набор правил с сервера SonarQube с вашими локальными проектами, если вы хотите его использовать.

Что касается анализатора StyleCop вам нужно упаковать анализатор с помощью следующей SDK: https://github.com/SonarSource-VisualStudio/sonarqube-roslyn-sdk/blob/master/README.md

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

+1

Ничего себе это сложно и сложно сохранить в синхронизации с источником управления! В нашем реальном использовании мы используем пользовательские анализаторы, которые обнаруживают нарушение правил кодирования. Затем мы используем набор правил для отключения некоторых правил для частей кода. Анализатор находится в одном из наших пакетов nuget. Мастер конфигурации просто ** не может быть сонарным. Это должен быть исходный код, так как люди будут изменять набор правил + версию анализатора по мере изменения своего кода. Поэтому рабочий процесс, который накладывает SonarQube, не работает для нас ....это должно быть наоборот: Source control является ведущим, а SonarQube - подчиненным. – mabead

+1

После того, как вы соколировали в целевые файлы, включенные Sonar, я пришел к выводу, что компиляция с Sonar изменяет параметры msbuild (например: обработать предупреждение, поскольку ошибки установлены на «false», хотя мой проект задал значение «true»). Это очень нежелательно. Мой процесс сборки теперь не ведет себя одинаково, когда метрики quan-сонара захватываются :(Проект с использованием SonarQube должен быть скомпилирован дважды. 1) Скомпилируйте его, как правило, для создания артефакта сборки (например: msi). 2) Восстановите его с включенным SonarQube. Это гарантирует, что все параметры компиляции, установленные вашими разработчиками, не будут изменены SonarQube. – mabead

+0

Мы не используем сонар так же, как вы. У нас есть ночная сборка, которая просто запускает сборку сонара и не создает никаких артефактов. У нас есть дополнительные сборки, которые генерируют артефакты и т. Д. (В основном сонар сам по себе) –

Смежные вопросы