Как настроить поддержку SCM для MSBuild SonarQube Runner?

Я использую SonarQube 5.1 с MSBuild SonarQube Runner для проверки качества. В настоящее время поддержки SCM нет, хотя я уже установил плагин TFVC. Я получаю следующий журнал из процесса анализа

07:18:22  07:18:22.352 INFO  - Sensor SCM Sensor
07:18:22  07:18:22.352 INFO  - No SCM system was detected. You can use the 'sonar.scm.provider' property to explicitly specify it.
07:18:22  07:18:22.352 INFO  - Sensor SCM Sensor (done) | time=0ms

Затем я устанавливаю следующие свойства в общем файле «sonar.properites», расположенном в папке \sonarqube-5.1.2\conf (что, возможно, я делаю неправильно):

sonar.scm.enabled=true
sonar.scm.provider=tfvc
sonar.tfvc.username=myTFSusername
sonar.tfvc.password.secured=myTFSpassword

Я предполагаю, что эти свойства должны быть установлены в файле "sonar-project.properties" и переданы во время анализа (поправьте меня, если я ошибаюсь). Но проблема в том, что, поскольку я использую MSBuild SonarQube Runner, файл sonar-project.properties больше не используется, а свойства проекта передаются во время анализа. Если это так, как я должен передать их?

Я много искал, но не смог найти правильного решения таким образом, и я был бы очень рад, если бы кто-то мог помочь.

Заранее спасибо.


person ChatSamee    schedule 25.08.2015    source источник


Ответы (1)


Дополнительные свойства передаются MSBuild SonarQube Runner на этапе begin с использованием следующего синтаксиса: /d:key=value.

Итак, вы можете пройти их все:

MSBuild.SonarQube.Runner begin /k:... /n:... /v:... /d:sonar.scm.enabled=true /d:sonar.scm.provider=tfvc /d:sonar.tfvc.username=... /d:sonar.tfvc.password.secured=....

Автоматическое определение SCM будет работать, если на уровне «базового каталога проекта» есть $tf. Этот каталог вычисляется как первый путь предка, общий для всех ваших файлов *.csproj. Вы можете увидеть его значение в файле, сгенерированном на этапе end: .sonarqube\out\sonar-project.properties. Найдите значение свойства sonar.projectBaseDir в конце файла. Подробнее см. на странице https://jira.sonarsource.com/browse/SONARMSBRU-8.

person Dinesh Bolkensteyn    schedule 25.08.2015
comment
моя первоначальная проблема была решена :) но простите меня, я не получил последнюю часть ответа. значение sonar.projectBaseDir — это папка решения, которая также является рабочей областью, но теперь в журнале указано Unable to TFS annotate the following file which is not in a mapped TFS workspace: ~file name with the absolute path, и это происходит для всех файлов в решении, поэтому ни один из них не анализируется. - person ChatSamee; 26.08.2015
comment
Последняя часть посвящена автоматическому обнаружению того, что TFS используется в качестве SCM, и поэтому вам не нужно явно устанавливать sonar.scm.provider=tfvc - person Dinesh Bolkensteyn; 26.08.2015
comment
Ваша новая проблема может быть связана с github.com/SonarCommunity/sonar-scm-tfvc/ pull/7 — я создам моментальную версию плагина SonarQube SCM TFVC, чтобы вы могли проверить, устраняет ли он эту проблему. - person Dinesh Bolkensteyn; 26.08.2015
comment
Вы можете установить эту предварительную версию (т. е. НЕ ГОТОВУЮ К ПРОИЗВОДСТВУ) версию подключаемого модуля SonarQube SCM TFVC, чтобы протестировать этот запрос на вытягивание и сообщить нам, поможет ли он решить вашу проблему. : github .com/SonarCommunity/sonar-scm-tfvc/releases/download/PR7/ - person Dinesh Bolkensteyn; 26.08.2015
comment
спасибо @Dinesh за помощь :) с обновленным снимком TFVC TfsAnnotate выдает исключение NullReferenceException :( - person ChatSamee; 27.08.2015
comment
Я пытался не передавать sonar.scm.provider=tfvc, и тогда он не обнаруживает TFVC автоматически. - person ChatSamee; 27.08.2015
comment
Problem signature: Problem Event Name: CLR20r3 Problem Signature 01: sonartfsannotate1440654397653-0 Problem Signature 02: 2.0.0.0 Problem Signature 03: 55ddc35e Problem Signature 04: SonarTfsAnnotate Problem Signature 05: 2.0.0.0 Problem Signature 06: 55ddc35e Problem Signature 07: 1d Problem Signature 08: d1 Problem Signature 09: System.NullReferenceException OS Version: 6.1.7601.2.1.0.16.7 Locale ID: 1044 извините за форматирование - person ChatSamee; 27.08.2015
comment
Хорошо, не могли бы вы попробовать запустить SonarTfsAnnotate.exe вручную? Введите в первой строке имя пользователя (или пустое), пароль во 2-й строке (или пустой), а затем абсолютные пути к файлам, которые нужно аннотировать? Возможно, это, по крайней мере, даст лучшую трассировку стека. - person Dinesh Bolkensteyn; 27.08.2015
comment
Вы найдете файл SonarTfsAnnotate.exe в архиве sonar-scm-tfvc-plugin-2.1-SNAPSHOT.jar, переименуйте .jar в .zip - person Dinesh Bolkensteyn; 27.08.2015
comment
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at SonarSource.TfsAnnotate.Program.Main(String[] args) Это единственная трассировка стека, которую мне удалось зафиксировать. :( Я также пытался использовать отладчик Visual Studio, но не смог найти более подробной информации, чем эта - person ChatSamee; 31.08.2015
comment
Так что кажется, что PR как таковой не решает вашу проблему, по крайней мере, пока - я бы предложил продолжить обсуждение на GitHub, так как там будет проще отслеживать комментарии и сотрудничать с командой разработчиков. - person Dinesh Bolkensteyn; 07.09.2015
comment
Я удалил кеш, зарегистрировался и попробовал, все сработало отлично :) спасибо @Dinesh - person ChatSamee; 09.09.2015