Подключаемый модуль SonarQube не сканирует файлы C# во время сборки TFS

Я использую сервер SonarQube v6.4 с v6.1 плагина С#. У нас есть версия 3.0.0 расширения SonarQube TFS, установленного в нашей TFS 2015 ( Обновление 3) экземпляр.

У меня проблемы со сканированием файлов .cs SonarQube. В выходных данных нескольких шагов сборки есть несколько предупреждений, о которых я не совсем уверен, что делать. Я не смог найти много в сообщениях.

Результат этапа Сборка Visual Studio:

        OverrideCodeAnalysisProperties:
          Skipping FxCop analysis: the SonarQube ruleset does not exist. Ruleset: C:\BuildAgents\Agent-01\_work\111\.sonarqube\conf\\SonarQubeFxCop-cs.ruleset

Сканер SonarQube для MSBuild — завершение анализа (новое). Выходные данные шага:

Я вижу это в начале вывода для шага...

SonarQube Scanner for MSBuild 3.0 
Default properties file was found at C:\BuildAgents\Agent-01\tasks\SonarQubeScannerMsBuildBegin\3.0.0\SonarQubeScannerMsBuild\SonarQube.Analysis.xml 
Loading analysis properties from C:\BuildAgents\Agent-01\tasks\SonarQubeScannerMsBuildBegin\3.0.0\SonarQubeScannerMsBuild\SonarQube.Analysis.xml 
Post-processing started. 
17:58:54.965  17:58:54.965  WARNING: Failed to find the code coverage command line tool. Possible cause: Visual Studio is not installed, or the installed version does not support code coverage. 
WARNING: File is not under the project directory and cannot currently be analysed by SonarQube. File: C:\Users\TFS2015Build\AppData\Local\Temp\.NETFramework,Version=v4.5.2.SqlClrAttributes.cs, project: C:\BuildAgents\Agent-01\_work\111\s\FunProject.Db\FunProject.Db.sqlproj
SONAR_SCANNER_OPTS is not configured. Setting it to the default value of -Xmx1024m 
Calling the SonarQube Scanner... 
INFO: Scanner configuration file: C:\BuildAgents\Agent-01\tasks\SonarQubeScannerMsBuildBegin\3.0.0\SonarQubeScannerMsBuild\sonar-scanner-3.0.3.778\bin\..\conf\sonar-scanner.properties 
INFO: Project root configuration file: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\sonar-project.properties 
INFO: SonarQube Scanner 3.0.3.778 
INFO: Java 1.8.0_121 Oracle Corporation (64-bit) 
INFO: Windows Server 2012 R2 6.3 amd64  
INFO: SONAR_SCANNER_OPTS=-Xmx1024m 
INFO: User cache: C:\Users\TFS2015Build\.sonar\cache 
INFO: Load global settings 
INFO: Load global settings (done) | time=125ms 
INFO: User cache: C:\Users\TFS2015Build\.sonar\cache 
INFO: Load plugins index 
INFO: Load plugins index (done) | time=0ms 
INFO: Download sonar-csharp-plugin-6.1.0.2359.jar 
INFO: Download sonar-python-plugin-1.8.0.1496.jar 
INFO: Download sonar-java-plugin-4.11.0.10660.jar 
INFO: Download sonar-flex-plugin-2.3.jar 
INFO: Download sonar-scm-git-plugin-1.2.jar 
INFO: Download sonar-xml-plugin-1.4.3.1027.jar 
INFO: Download sonar-php-plugin-2.10.0.2087.jar 
INFO: Download sonar-scm-svn-plugin-1.4.0.522.jar 
INFO: Download sonar-javascript-plugin-3.1.1.5128.jar 
INFO: SonarQube server 6.4.0 
INFO: Default locale: "en_US", source code encoding: "windows-1252" (analysis is platform dependent) 
INFO: Process project properties 
INFO: Load project repositories 
INFO: Load project repositories (done) | time=141ms 
INFO: Load quality profiles 
INFO: Load quality profiles (done) | time=47ms 
INFO: Load active rules 
INFO: Load active rules (done) | time=281ms 
INFO: Load metrics repository 
INFO: Load metrics repository (done) | time=78ms 
INFO: Publish mode

... затем я вижу такой набор выходных данных для каждого проекта в моем решении:

 INFO: -------------  Scan FunProject.Shared 
 INFO: Load server rules 
 INFO: Load server rules (done) | time=156ms 
 INFO: Initializer GenericCoverageSensor 
 INFO: Initializer GenericCoverageSensor (done) | time=0ms 
 INFO: Base dir: C:\BuildAgents\Agent-01\_work\111\s\FunProject.Shared 
 INFO: Working dir: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\.sonar\mod13 
 INFO: Source paths: FunProjectFolder1/FunProjectClassFile1.cs, FunProjectFolder2/FunProjectClassFile2.cs, ... Properties/AssemblyInfo.cs, packages.config 
 INFO: Source encoding: UTF-8, default locale: en_US 
 INFO: Index files 
 INFO: Analyzer working directory does not exist 
 INFO: 12 files indexed 
 INFO: Quality profile for cs: Sonar way 
 INFO: Sensor C# [csharp] 
 INFO: Importing analysis results from C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\encoding.pb 
 INFO: Importing Roslyn report 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\metrics.pb 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\token-type.pb 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\symrefs.pb 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\token-cpd.pb 
 INFO: Sensor C# [csharp] (done) | time=78ms 
 INFO: Sensor SonarJavaXmlFileSensor [java] 
 INFO: Sensor SonarJavaXmlFileSensor [java] (done) | time=0ms 
 INFO: Sensor Analyzer for "php.ini" files [php] 
 INFO: Sensor Analyzer for "php.ini" files [php] (done) | time=0ms

Есть ли что-то очевидное, что я упускаю?

Изменить:

Я использую Visual Studio Professional, поэтому предупреждение о покрытии кода вызвано тем, что у меня не установлена ​​Visual Studio Enterprise на сервере сборки.


person aoggz    schedule 12.07.2017    source источник


Ответы (2)


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

Запустите анализ, выполнив следующие команды из корневого каталога проекта:

SonarQube.Scanner.MSBuild.exe begin /k:"org.sonarqube:sonarqube-scanner-msbuild" /n:"Project Name" /v:"1.0"
MSBuild.exe /t:Rebuild
SonarQube.Scanner.MSBuild.exe end

Это сузит круг проблем, связанных с вашей средой, или просто с настройками определения сборки.

Согласно сообщению об ошибке:

ПРЕДУПРЕЖДЕНИЕ. Не удалось найти инструмент командной строки покрытия кода. Возможная причина: Visual Studio не установлена ​​или установленная версия не поддерживает покрытие кода.

Дважды проверьте версию VS в агенте сборки. Примечание. вам потребуется Visual Studio Enterprise edition для охвата кода. Просмотрите эту страницу и разверните 'инструменты тестирования< /em>». Покрытие кода указано только для версии Enterprise.

Кроме того, вы также можете включить подробный режим отладки с system.debug=true, чтобы получить более подробный журнал сборки для устранения неполадок.

person PatrickLu-MSFT    schedule 13.07.2017
comment
Спасибо за отзыв. Я попробовал ваше предложение и добился того же результата, к сожалению. Что касается вашего вопроса о покрытии кода, мы используем VS Professional, поэтому последняя часть сообщения применима. Я обновил свой исходный вопрос, чтобы отразить это понимание. - person aoggz; 13.07.2017
comment
@aoggz Если это так, похоже, эта проблема связана не с TFS, а с вашей средой агента сборки. Также запустите анализ SonarQube в вашей локальной среде, если это удастся, сравните среды друг с другом. Вы создаете свое решение с помощью msbuild12 или msbuild14,15? Попробуйте использовать последнюю версию msbuild, а также дважды проверьте путь к msbuild. Кроме того, проверьте, что файл .cs доступен только для чтения или нет? Протестируйте его с удалением статуса только для чтения. - person PatrickLu-MSFT; 13.07.2017
comment
Я сделал то же упражнение на своей локальной машине. Я использовал MSBuild 14 локально, который установлен на сервере. Я также пытался использовать MSBuild 15 локально, хотя VS 2017 еще не установлен на нашем сервере сборки. Я также запустил attrib -R ./* /S, чтобы снять флаг только для чтения. Все попытки привели к одному и тому же результату. - person aoggz; 14.07.2017

Я понизил версию плагина C# с 6.1 (сборка 2359) до 5.11 (сборка 1721), и проблема исчезла. Должна быть какая-то проблема с этим выпуском, которая вызывала проблему.

person aoggz    schedule 17.07.2017
comment
Я думаю, что у меня может быть такая же проблема. Как вы понизили версию плагина. Я не видел возможности сделать это, и когда я попытался переустановить его, я не смог найти способ выбрать версию. - person Ashwin Chandran; 22.08.2017
comment
Все, что вам нужно сделать, это удалить плагин, загрузить нужную версию плагина и поместить ее в каталог плагинов вашего сервера SonarQube. Пользовательский интерфейс сервера не поддерживает способ установки не последних версий плагинов. Дополнительные сведения см. на странице docs.sonarqube.org/display/SONAR/Installing+a+Plugin. . - person aoggz; 24.08.2017