【发布时间】:2015-04-27 03:40:37
【问题描述】:
我在做什么? 我目前正在为前端应用程序设置持续集成/交付管道。我们计划使用 SonarQube 作为代码质量工具,并希望在 SONAR 中导入 junit 测试结果/代码覆盖率以进行进一步分析。
我能够成功地将 javascript 代码覆盖率报告导入 SONAR。我们正在使用 Gulp / Karma / PhantomJS / Jasmine 等,并使用 Karma 覆盖率 / Junit 记者来生成测试结果。 Junit 测试文件名为 TEST-xunit.xml。
我被困在哪里了? 关于将 Javascript 测试结果导入 SONAR,我需要您的帮助/专家指导。我尝试了不同的方法,但不知何故无法将单元测试源/结果导入 SONAR。
我都尝试过什么? 早些时候,我们使用的是 SONAR Runner 2.3、SONAR Qube 4.5 / Javascript 插件 2.2,并且能够导入 Junit 高级统计信息,例如测试通过/失败等。但是,我们无法导航到单个测试以查看哪个测试通过/失败。
在进一步研究中,注意到如果 Javascript 插件 2.3 没有找到测试源,它会为该场景添加更多消息传递。此外,还有一些其他依赖项,因此将 SONAR qube 升级到 5.0。使用 SONAR runner 2.4 进行测试并观察到以下消息。目前,还没有导入高级统计数据。
JSTestDriverSensor.java 代码来自github上的SONAR Javascript插件)
LOG.warn("Test result will not be saved for test class \"{}\", because SonarQube associated resource has not been found using file name: \"{}\"",
getUnitTestClassName(classKey), getUnitTestFileName(classKey));
SONAR gulp 插件生成的sonar-runner.properties(使用SONAR Runner 2.3)
sonar.projectBaseDir=C:/xxxxx/homepage2
sonar.host.url=http://xxxxx:9000/sonarqube/
sonar.jdbc.url=jdbc:mysql:// xxxxx:3306/sonar
sonar.jdbc.username= xxxxx
sonar.jdbc.password= xxxxx
sonar.projectKey=homepage:0.0.0
sonar.projectName=homepage
sonar.projectVersion=0.0.0
sonar.sources=src/app,src/components
sonar.exclusions=src/**/*spec.js
sonar.tests=test
sonar.language=js
sonar.sourceEncoding=UTF-8
sonar.javascript.lcov.reportPath=reports/coverage/lcov.info
sonar.javascript.jstestdriver.reportsPath=reports/unit
我什至尝试单独安装 SONAR runner 2.4,但始终收到相同的错误消息。
问题? 1. 一定有一些东西我忽略了,并且不知何故无法确定是什么原因造成的。我认为要么我设置测试目录路径错误,要么 JSTestDriverSensor 解释测试目录文件错误。建议? 2. 首先,我只想导入一个示例 junit xml 文件,看看它是否导入成功。之后,我可以修改业力 junit 生成器输出以匹配输入 junit xml。这里需要一些参考示例。
附加一些日志。我修改了 junit xml 以设置不同的类名,以查看 JsTestDriverSensor 是否找到它。但事实并非如此!
[23:31:24] 23:31:24.122 DEBUG - Language of file 'src/app/main/textOverride.controller.js' is detected to be 'js'
23:31:24.122 DEBUG - Language of file 'src/app/main/main.routes.js' is detected to be 'js'
23:31:24.123 DEBUG - Language of file 'test/app/main/testSpec.js' is detected to be 'js'
[23:31:24] 23:31:24.138 DEBUG - Language of file 'src/components/navbar/navbar.controller.js' is detected to be 'js'
[23:31:24] 23:31:24.169 INFO - 7 files indexed
[23:31:26] 23:31:26.632 INFO - Quality profile for js: Sonar way
[23:31:26] 23:31:26.670 DEBUG - Sensors : QProfileSensor -> JavaScriptSquidSensor -> JsTestDriverSensor -> CoverageSensor -> InitialOpenIssuesSensor -> ProjectLinksSensor -> VersionEventsSensor -> FileHashSensor -> SCM Sensor (wrapped) -> CPD Sensor (wrapped)
23:31:26.671 INFO - Sensor QProfileSensor...
[23:31:26] 23:31:26.680 INFO - Sensor QProfileSensor done: 9 ms
23:31:26.680 INFO - Sensor JavaScriptSquidSensor...
[23:31:26] 23:31:26.950 INFO - 6 source files to be analyzed
[23:31:27] 23:31:27.081 INFO - 6/6 source files analyzed
[23:31:27] 23:31:27.113 INFO - Sensor JavaScriptSquidSensor done: 433 ms
[23:31:27] 23:31:27.114 INFO - Sensor JsTestDriverSensor...
23:31:27.114 INFO - Parsing Unit Test run results in Surefire format from folder C:\xxxxx\homepage2\reports\unit
[23:31:27] 23:31:27.176 WARN - Test result will not be saved for test class "app.main.testSpec", because SonarQube associated resource has not been found using file name: "app/main/testSpec.js"
[23:31:27] 23:31:27.177 WARN - Test result will not be saved for test class "src.app.main.testSpec", because SonarQube associated resource has not been found using file name: "src/app/main/testSpec.js"
【问题讨论】:
-
测试文件在哪里?这些是否存在于声纳正在搜索的位置,即 app/main/testSpec.js?
-
是的,它存在于 app/main/testSpec.js...
-
我遇到了类似的问题,发现当测试资源不在测试位置的根目录中并且在 Windows 上运行分析时,插件似乎无法正确定位测试资源。你也在 Windows 上运行吗?
-
是的@ioscode,我在windows..它在unix上对你有用吗?你找到解决方法了吗?
-
是的,它基于 unix 工作。确实没有解决方法,似乎只检测到指定为测试文件夹的文件夹根目录中的测试。由于路径中的正斜杠和反斜杠字符比较不正确,因此找不到子文件夹中的任何测试文件。我将它发布到用户列表中,但目前还没有回复。
标签: sonarqube sonar-runner sonarqube-5.0