Sonarqube не может увидеть мой отчет cppunit

Я пытаюсь использовать SonarQube в очень простом проекте C++. Я использую CppUnit для своих тестов, которые генерируют отчет в формате xml.
Я использую подключаемый модуль сообщества SonarQube C++, но мне не удалось показать результаты моих тестов в SonarQube.

Вот мой файл sonar-project.properties

# Required metadata
sonar.projectKey=test
sonar.projectName=C++ Project Test
sonar.projectVersion=1.0

# Comma-separated paths to directories with sources (required)
sonar.sources=./

# Language
sonar.language=c++

# Encoding of the source files
sonar.sourceEncoding=UTF-8

# Path to the directory containing the CPPUnit reports

sonar.cxx.xunit.xsltURL=report/cppunit/cppunit-1.x-to-junit-1.0.xsl
sonar.cxx.xunit.reportPath=report/cppunit/cppunit-report.xml

Я узнал в Интернете, что для SonarQube необходимо преобразование xslt, чтобы он мог читать отчеты CppUnit.
Я запускаю sonar-runner -X в папке моего проекта, чтобы начать анализ.
- Когда я пытаюсь использовать его без преобразование xslt, у меня нет ошибок, но ничего не упоминается о тестах на веб-интерфейсе SonarQube (как будто он не выполнялся).
- Когда я использую преобразование xslt, у меня есть эта ошибка:

Transforming the report using xslt 'report/cppunit/cppunit-1.x-to-junit-1.0.xsl'
10:21:36.793 DEBUG - Transforming: try to access external XSLT via URL
10:21:36.794 ERROR - Cannot feed the data into SonarQube, details: 'java.net.MalformedURLException: no protocol: report/cppunit/cppunit-1.x-to-junit-1.0.xsl'
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 7.589s
Final Memory: 21M/292M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.sonar.runner.Main.executeTask(Main.java:70)
at org.sonar.runner.Main.execute(Main.java:59)
at org.sonar.runner.Main.main(Main.java:53)
Caused by: java.lang.IllegalStateException: Cannot feed the data into SonarQube, details: 'java.net.MalformedURLException: no protocol: report/cppunit/cppunit-1.x-to-junit-1.0.xsl'
at org.sonar.plugins.cxx.tests.xunit.CxxXunitSensor.analyse(CxxXunitSensor.java:159)
at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:58)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:50)
at org.sonar.batch.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:83)
at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:192)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:241)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:236)
at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:226)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
at org.sonar.batch.task.ScanTask.execute(ScanTask.java:47)
at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:106)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:79)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
... 9 more
Caused by: java.net.MalformedURLException: no protocol: report/cppunit/cppunit-1.x-to-junit-1.0.xsl
at java.net.URL.<init>(URL.java:593)
at java.net.URL.<init>(URL.java:490)
at java.net.URL.<init>(URL.java:439)
at org.sonar.plugins.cxx.tests.xunit.CxxXunitSensor.transformReport(CxxXunitSensor.java:265)
at org.sonar.plugins.cxx.tests.xunit.CxxXunitSensor.analyse(CxxXunitSensor.java:135)
... 33 more

У кого-нибудь есть идея, как решить эту проблему? Или учебник или что-то еще, которое показывает, как использовать отчеты CppUnit в SonarQube? Я искал несколько часов, но не нашел ничего, что можно было бы исправить.


person Whin3    schedule 23.06.2016    source источник


Ответы (1)


Моя проблема исправлена. Похоже, путь к файлу конвертации xslt начинается там, где находится xml-файл cppunit.

В моем случае мне пришлось заменить это:

sonar.cxx.xunit.xsltURL=report/cppunit/cppunit-1.x-to-junit-1.0.xsl

этим :

sonar.cxx.xunit.xsltURL=cppunit-1.x-to-junit-1.0.xsl
person Whin3    schedule 23.06.2016