声纳 jacoco hybris
Posted
技术标签:
【中文标题】声纳 jacoco hybris【英文标题】:Sonar jacoco hybris 【发布时间】:2018-10-24 07:13:52 【问题描述】:我需要为 hybris 项目中的 junit 测试用例生成 jacoco 报告并将其发布到声纳中。当我在声纳中发布 jacoco 报告时,代码覆盖率也包括 OOB 类。
我已使用 sonar.excludedExtensions=xx,yy 排除了不需要的扩展 我需要在我的自定义扩展中排除一些目录。
我尝试使用 sonar.jacoco.excludes=x.y.z.* 和 sonar.exclusions=xx/** 但没有任何效果。
如何在 jacoco 分析期间排除类或目录。我在驱动 jacoco 分析的 hybris 中有如下 OOB acc-ant-sonar.xml 文件。
<project name="acc.ant.sonar" xmlns:jacoco="antlib:org.jacoco.ant">
<taskdef uri="antlib:org.jacoco.ant" resource="path/antlib.xml">
<classpath path="xx.jar"/>
</taskdef>
<target name="jacocoalltests" description="runs allstests with jacoco attached">
<jacoco:agent property="agentvmparam"
append="true"
output="file"
destfile="output_path/jacoco.exec"
/>
<property name="testclasses.extensions" value="$extname"/>
<ant dir="$platformhome" target="alltests" inheritrefs="false">
<property name="standalone.javaoptions" value="$agentvmparam $standalone.javaoptions"/>
</ant>
</target>
</project>
【问题讨论】:
【参考方案1】:您有多种可能性,可以一起使用,也可以单独使用
通过设置sonar.coverage.exclusions
- 告诉声纳忽略oob 类,如此处所述https://docs.sonarqube.org/display/SONAR/Analysis+Parameters
将 jacoco 配置为仅使用 ìncludes
跟踪您的课程
https://www.eclemma.org/jacoco/trunk/doc/ant.html - 但我强烈建议您查看文档,我们只是直接将其用于 javaagent,我不能 100% 确定这是否 100% 以相同的方式工作。
includes=your.package.*
看看 Hybris 测试目标可能有用 -> 您可以使用 testclasses.packages
配置包,以减少正在运行的测试。这也可能会破坏您的 oob 覆盖范围,因为不会执行那些针对 oob 代码的测试
【讨论】:
我在运行我的命令时尝试了你的建议 sonar.coverage.exclusions 和 testclasses.packages,我得到了一些改进。但现在的问题是我正在执行两个命令 ant jacocoalltests 和 jacocoallwebtests。当我运行第二个命令时,log/junit 目录替换了第一个命令生成的文件。有没有办法为这两个命令指定不同的日志目录路径。 是的,使用 jacoco destfile 属性 当我使用 destfile 属性时,exec 文件会在不同的目录中生成,但 TESTS-TestSuites.xml、index.html 等文件默认位于 log/junit 下。 非常感谢西蒙,帮了大忙!以上是关于声纳 jacoco hybris的主要内容,如果未能解决你的问题,请参考以下文章
Sonarqube + Jacoco - 声纳不会从属性中读取报告路径