SonarQube MSBuild runner и scm root

добър ден днес бях настроил sonarqube с ms build runner и mercurial scm доставчик, имам следващата структура на хранилище (схематично):

<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
Къде се намират вашите проекти? BaseDir на основния проект на SonarQube се изчислява като общ предшественик на всички ваши проекти, посочени от вашето решение.   -  person Julien H. - SonarSource Team    schedule 31.03.2017
comment
във всеки prj.* намиращ се csproj файл за всеки модул и също така намерих информация за общ предшественик, но в генерирания файл .properties мога да видя тази настройка на basedir за src\prj.infrastructure, src\prj.domain и така нататък... но събитие общ предшественик не е отговор за моя случай - тъй като общият предшественик е src, а .hg dir се намира в родител на src...   -  person anatoly.kryzhanosky    schedule 31.03.2017


Отговори (1)


Това е ограничение на Приставка за SonarQube Mercurial. В момента очаква да намери папката .hg точно в basedir. Други добавки като 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