Средство запуска SonarQube MSBuild и корень scm

Добрый день, сегодня я настроил sonarqube с помощью ms build runner и mercurial scm provider. У меня есть следующая структура репозитория (схема):

<ROOT>
-.hg
-src
----prj.infrastructure 
----prj.domain
----prj.application
----prj.sln

и я использовал следующую команду для анализа запуска:

"%env.SonarMsBuildRunner%\MSBuild.SonarQube.Runner" begin /n:prj /k:prj /v:1.0
"%env.MsBuildLocation%\msbuild" src\prj.sln /p:Configuration=Debug
"%env.SonarMsBuildRunner%\msbuild.sonarqube.runner" end

весь анализ работает хорошо, но scm не работает (я вижу сообщение типа «Отсутствует информация об авторстве для следующих файлов:»)

когда я вижу сгенерированный sonar-project.properties, я вижу, что проблема находится в projectBaseDir - он генерируется для каждого проекта в решении отдельно

я пытаюсь указать в командной строке, как /d:sonar.projectBaseDir=... но никаких изменений - он полностью игнорируется

поэтому мой вопрос: могу ли я использовать ms build runner и поставщика scm вместе со структурой моего репозитория?

ОБНОВЛЕНИЕ 1. Я добавил подробный флаг в свой скрипт. Теперь я запускаю анализ с помощью следующей команды:

MSBuild.SonarQube.Runner begin /n:projectName /k:projectKey /v:1.0 /d:sonar.scm.enabled=true /d:sonar.scm.provider=hg /d:sonar.projectBaseDir=d:\work\project1 /d:sonar.verbose=true
msbuild project1\src\solution.sln /p:Configuration=Debug
msbuild.sonarqube.runner end

в журнале я вижу эти сообщения:

[14:18:20] :     [Step 4/4] 14:18:20.403 DEBUG: Working directory: D:\work\project1\src\
[14:18:20] :     [Step 4/4] 14:18:20.416 DEBUG: Executing: hg blame -w -v --user --date --changeset API/AssignmentsController.cs
[14:18:20] :     [Step 4/4] 14:18:20.423 DEBUG: Executing: hg blame -w -v --user --date --changeset API/Commands/ImportCommand.cs
[14:18:20] :     [Step 4/4] 14:18:20.424 DEBUG: Executing: hg blame -w -v --user --date --changeset API/Dto/Assignment.cs
[14:18:20] :     [Step 4/4] 14:18:20.600 DEBUG: The mercurial blame command [hg blame -w -v --user --date --changeset API/AssignmentsController.cs] failed: abort: no repository found in 'D:\work\project1\src\' (.hg not found)!
[14:18:20] :     [Step 4/4] 

и это правильно - в папке d:\work\project1\src нет каталога .hg, потому что он находится в d:\work\project1

ОБНОВЛЕНИЕ2

хорошо, наконец, я нахожу свою ошибку... в папке сборки машины .hg пропущен по некоторым причинам...


person anatoly.kryzhanosky    schedule 30.03.2017    source источник
comment
Где находятся ваши проекты? Базовый каталог корневого проекта SonarQube вычисляется как общий предок всех ваших проектов, на которые ссылается ваше решение.   -  person Julien H. - SonarSource Team    schedule 31.03.2017
comment
в каждом файле prj.* находится файл csproj для каждого модуля, и я также нашел информацию об общем предке, но в сгенерированном файле .properties я вижу, что базовая установка настроена на src\prj.infrastructure, src\prj.domain и так далее... но общий предок события не является ответом для моего случая - потому что общий предок - это src, а .hg dir находится в родительском элементе src...   -  person anatoly.kryzhanosky    schedule 31.03.2017


Ответы (1)


Это ограничение Плагин SonarQube Mercurial. В настоящее время он ожидает найти папку .hg именно в базовом каталоге. Другие плагины, такие как SVN, где обновлен для рекурсивного поиска в родительских папках.

Мы больше не занимаемся активной разработкой плагина Mercurial, но не стесняйтесь отправить запрос на включение, чтобы исправить проблему.

В качестве обходного пути вы можете принудительно использовать SCM, используя /d:sonar.scm.provider=hg на начальном этапе.

person Julien H. - SonarSource Team    schedule 03.04.2017
comment
я уже добавляю этот аргумент в команду, но получаю информацию об отсутствующей вине для следующих файлов: сообщения... - person anatoly.kryzhanosky; 03.04.2017
comment
Полные журналы анализа (с /d:sonar.verbose=true) помогут - person Julien H. - SonarSource Team; 04.04.2017