声纳 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的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ant 将 JaCoCo 集成到声纳中

Sonarqube + Jacoco - 声纳不会从属性中读取报告路径

jacoco 分支覆盖和声纳条件覆盖有啥区别?

结合声纳的 Jacoco 测试覆盖率

SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率

maven多模块项目中的模块级声纳分析