2017-02-17 26 views
0

Я только начинаю с SonarQube, и он работает до сих пор. ИТ-отдел настроил SonarQube 6.2 для нашего Team Foundation Server, и я установил и настроил сканер msbuild на моем BuildAgent.WARN: файл Protobuf не найден, при использовании SonarQube

Я вызываю сканер msbuild в XAML-шаблоне определения моей сборки и запускает его, но он дает мне предупреждение, что делает мою сборку «частично успешной». Это сообщение об ошибке:

07:53:01.658 WARN: Protobuf file not found: d:\b\210\474.sonarqube\out\ReferenceManager_x86_Release_6561\output-cs\issues.pb

Файл issues.pb действительно не хватает, но почему я получаю сообщение об ошибке/предупреждение для этого? Я не понимаю этого, когда запускаю сканер и msbuild из командной строки, только когда он запускается в командной сборке. Но при запуске в командной строке также нет файла problem.pb.

При запуске сканера из командной строки, я получаю этот выход:

09:34:05.959 INFO: 97 files indexed 
09:34:05.985 INFO: Quality profile for cs: Sonar way 
09:34:05.992 DEBUG: Code colorizer, supported languages: 
09:34:07.008 DEBUG: 'Generic Coverage Report' skipped because one of the required properties is missing 
09:34:07.009 DEBUG: 'Generic Test Executions Report' skipped because one of the required properties is missing 
09:34:07.018 DEBUG: 'SurefireSensor' skipped because there is no related file in current project 
09:34:07.023 DEBUG: 'JaCoCoSensor' skipped because there is no related file in current project 
09:34:07.025 DEBUG: 'JavaSquidSensor' skipped because there is no related file in current project 
09:34:07.025 DEBUG: 'JavaScript Squid Sensor' skipped because there is no related file in current project 
09:34:07.027 DEBUG: Sensors : Lines Sensor -> SCM Sensor -> C# -> Coverage Report Import -> Coverage Report Import -> Unit Test Results Import -> XmlFileSensor -> Zero Coverage Sensor -> Code Colorizer Sensor -> CPD Block Indexer 
09:34:07.029 INFO: Sensor Lines Sensor 
09:34:07.279 INFO: Sensor Lines Sensor (done) | time=250ms 
09:34:07.279 INFO: Sensor SCM Sensor 
09:34:07.279 INFO: SCM Publisher is disabled 
09:34:07.281 INFO: Sensor SCM Sensor (done) | time=2ms 
09:34:07.281 INFO: Sensor C# 
09:34:07.292 INFO: SonarAnalyzer.Scanner needs to be executed: false 
09:34:07.292 INFO: Importing analysis results from C:\Users\Build-SW-Dev\Desktop\.sonarqube\out\ReferenceManager_x86_Release_5730\output-cs 
09:34:08.749 INFO: Importing Roslyn report 
09:34:08.998 INFO: Sensor C# (done) | time=1717ms 

При запуске сканера во время сборки команды, я получаю этот выход:

11:12:51.390 INFO: 97 files indexed 
11:12:51.422 INFO: Quality profile for cs: Sonar way 
11:12:51.422 DEBUG: Code colorizer, supported languages: 
11:12:52.468 DEBUG: 'Generic Coverage Report' skipped because one of the required properties is missing 
11:12:52.468 DEBUG: 'Generic Test Executions Report' skipped because one of the required properties is missing 
11:12:52.468 DEBUG: 'SurefireSensor' skipped because there is no related file in current project 
11:12:52.468 DEBUG: 'JaCoCoSensor' skipped because there is no related file in current project 
11:12:52.468 DEBUG: 'JavaSquidSensor' skipped because there is no related file in current project 
11:12:52.468 DEBUG: 'JavaScript Squid Sensor' skipped because there is no related file in current project 
11:12:52.484 DEBUG: Sensors : Lines Sensor -> SCM Sensor -> C# -> Coverage Report Import -> Coverage Report Import -> Unit Test Results Import -> XmlFileSensor -> Zero Coverage Sensor -> Code Colorizer Sensor -> CPD Block Indexer 
11:12:52.484 INFO: Sensor Lines Sensor 
11:12:52.562 INFO: Sensor Lines Sensor (done) | time=78ms 
11:12:52.562 INFO: Sensor SCM Sensor 
11:12:52.562 INFO: SCM Publisher is disabled 
11:12:52.562 INFO: Sensor SCM Sensor (done) | time=0ms 
11:12:52.562 INFO: Sensor C# 
11:12:52.562 INFO: SonarAnalyzer.Scanner needs to be executed: false 
11:12:52.562 INFO: Importing analysis results from d:\b\210\474\.sonarqube\out\ReferenceManager_x86_Release_1481\output-cs 
11:12:53.078 WARN: Protobuf file not found: d:\b\210\474\.sonarqube\out\ReferenceManager_x86_Release_1481\output-cs\issues.pb 
11:12:53.718 INFO: Sensor C# (done) | time=1156ms 

Не нашел ничего об этой ошибке с помощью google. Любая помощь ценится!

+0

Какую версию TFS вы используете? Как правило, предупреждение не приведет к частичному выполнению вашей сборки, есть ли у вас конкретная настройка? –

+0

Мы используем TFS 2015 и шаблон сборки xaml. Я называю «MSBuild.SonarQube.Runner.exe end» в частях пост-сборки тестового раздела шаблона XAML, как описано ей: https://github.com/SonarSource-VisualStudio/sonar-.net- документация/blob/master/doc/analysis-from-tfs.md TFS преобразует это предупреждение в сообщение об ошибке: Запустить дополнительный скрипт после тестового запуска 09: 41: 38.799 WARN: файл Protobuf не найден: d: \ b \ 210 \ 474 \ .sonarqube \ out \ ReferenceManager_x86_Release_4068 \ output-cs \ issues.pb Это отмечено красной ошибкой при просмотре журналов в VS ... – PainElemental

ответ

0

Глядя на код в CSharpSencor.java, я думаю, что разница между командной строки сборки и команды сборки вызвано RoslynReportPath:

void executeInternal(SensorContext context) { 
    boolean requiresAnalyzerScannerExecution = !config.isReportsComingFromMSBuild(); 

    LOG.info("SonarAnalyzer.Scanner needs to be executed: " + requiresAnalyzerScannerExecution); 

    String roslynReportPath = settings.getString(config.getRoslynJsonReportPathProperty()); 
    boolean hasRoslynReportPath = roslynReportPath != null; 

    Path protobufReportsDirectory; 
    if (requiresAnalyzerScannerExecution) { 
    // MSBuild 12 or MSBuild 14 with old scanner 
    analyze(!hasRoslynReportPath, context); 
    protobufReportsDirectory = protobufReportPathForMSBuild12(context); 
    } else { 
    protobufReportsDirectory = config.protobufReportPathFromScanner(); 
    } 

    LOG.info("Importing analysis results from " + protobufReportsDirectory.toAbsolutePath().toString()); 
    importResults(context, protobufReportsDirectory, !hasRoslynReportPath); 

    if (hasRoslynReportPath) { 
    LOG.info("Importing Roslyn report"); 
    importRoslynReport(roslynReportPath, context); 
    } 
} 

командной строки сборки:

... 
Generating SonarQube project properties file to C:\Users\Build-SW-Dev\Desktop\.sonarqube\out\sonar-project.properties 
The supplied Code Analysis ErrorLog file is a valid json file and does not need to be fixed: d:\b\210\474\src\TPA\DevTools_Source\internal\ReferenceManager\main\ReferenceManager\bin\Release\ReferenceManager.exe.RoslynCA.json 
... 
08:41:57.276 INFO: Sensor C# 
08:41:57.291 INFO: SonarAnalyzer.Scanner needs to be executed: false 
08:41:57.291 INFO: Importing analysis results from C:\Users\Build-SW-Dev\Desktop\.sonarqube\out\ReferenceManager_x86_Release_6194\output-cs 
08:41:59.948 INFO: Importing Roslyn report 
08:42:00.448 INFO: Sensor C# (done) | time=3172ms 

команда сборка:

... 
Generating SonarQube project properties file to d:\b\210\474\.sonarqube\out\sonar-project.properties 
No Code Analysis ErrorLog file found at d:\b\210\474\bin\ReferenceManager.exe.RoslynCA.json. 
... 
11:12:52.562 INFO: Sensor C# 
11:12:52.562 INFO: SonarAnalyzer.Scanner needs to be executed: false 
11:12:52.562 INFO: Importing analysis results from d:\b\210\474\.sonarqube\out\ReferenceManager_x86_Release_1481\output-cs 
11:12:53.078 WARN: Protobuf file not found: d:\b\210\474\.sonarqube\out\ReferenceManager_x86_Release_1481\output-cs\issues.pb 
11:12:53.718 INFO: Sensor C# (done) | time=1156ms 

Хотя у меня пока нет решения, обходной путь i s, чтобы просто перенаправить вывод сканера msbuild в файл. TFS затем не видит предупреждения и не делает сборку частично успешной.

Редактировать: Теперь я нашел основную причину :) Во время сборки команды все выходные файлы перемещаются в подпапку по сценарию. Вот почему SonarQube не может найти файл 'd: \ b \ 210 \ 474 \ bin \ ReferenceManager.exe.RoslynCA.json'. Файл находится в подпапке ...