我有一个名为Customer的java项目,在这个项目下我还有另外8个模块,在这5个模块中有junit测试类,每个模块都有单独的ant构建文件。我已经为每个项目创建了(生成的单元测试报告) jacoco.exec,现在,我喜欢将这5个模块的单元测试报告合并到一个报告中,并在sona coverage部分中显示(或)显示每个模块的单元测试报告。你能对此提出任何建议吗?
谢谢,约瑟夫
发布于 2016-04-14 01:26:51
您要做的是阅读每个模块的测试报告。您可以使用多模块项目配置来做到这一点。如果你全部从你的主build.xml来处理,这可能会是最直接的。我还没有在Ant中测试过这一点,但是这样的东西应该可以工作
<property name="sonar.projectKey" ...
<!-- all normal properties here -->
<property name="sonar.modules" value="module1,module2..." />
<property name="module1.sonar.jacoco.reportPath" value="...
请注意,如果Jacoco报告都在一个标准位置,您可能甚至不需要指定它们,因为子模块继承了它们的父模块的属性。用于多模块项目配置的The docs在编写时并没有考虑到Ant语法,但是只要您在SonarQube Scanner for Ant docs中记住了这一点,就应该能够解决这个问题
Ant的SonarQube扫描器是一个
任务,它是SonarQube扫描器的包装器,它通过调用SonarQube扫描器并将遵循
sonar.*
约定命名的所有属性传递给它来工作。这样做的缺点是不是很像Ant-y,但优点是可以提供由新版本的插件或SonarQube本身引入的任何新分析参数的即时可用性。
发布于 2016-04-15 03:44:21
非常感谢。再一次敬安..它对我起作用,我的问题解决了(覆盖范围和每个模块的多种语言),在为每个子项目添加了单独的模块后,如下所述。在Sonarqube中获取模块的“coverage”结果..
# Modules
sonar.modules=common,help,mobile,partners
common.sonar.projectBaseDir=C:/dev/workspaces/hg/customer
common.sonar.sources=common/src/main/java,common/web
common.sonar.tests=common/src/test/java
common.sonar.binaries=common/bin
common.sonar.junit.reportsPath=common/test/reports/junitreport
common.sonar.surefire.reportsPath=common/test/reports/junitreport
common.sonar.jacoco.reportPath=common/coverage/common.exec
help.sonar.projectBaseDir=C:/dev/workspaces/hg/customer
help.sonar.sources=help/src/main/java,help/web
help.sonar.tests=help/src/test/java
help.sonar.binaries=help/bin
help.sonar.junit.reportsPath=help/test/reports/junitreport
help.sonar.surefire.reportsPath=help/test/reports/junitreport
help.sonar.jacoco.reportPath=help/coverage/help.exec
发布于 2017-01-30 16:27:00
这对我很有效:
sonar.modules=common,help
sonar.sources=./src/main/java
sonar.binaries=./target/classes
sonar.tests=./src/test/java
sonar.junit.reportsPath=./target/surefire-reports
路径应该是相对的,因为声纳会自动导航到basedir/module_name/target/surefire-report
https://stackoverflow.com/questions/36604992
复制相似问题