多模块maven项目的java聚合声纳报告

57hvy0tb  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(481)

我有一个像这样的多模块项目的设置
模块1

|
 submodule1
|
submodule2

我已经在子模块1中编写了一个junit测试,它也覆盖了子模块2的代码,但是当我尝试查看sonar中的覆盖率时,它显示子模块2的覆盖率为0%,有没有办法显示子模块2的覆盖率?我还可以通过运行mvn clean install生成聚合的xml报告jacoco:report-aggregate but 如何将汇总的报告输入声纳?如何设置模块和子模块的pom?

oxosxuxt

oxosxuxt1#

我不确定这是不是你在做的,但我还是会说的。如果您将子模块1创建为“代码”,将子模块2创建为“测试”,那么这是一种可怕的组织方式。测试(特别是单元测试)应该与它正在测试的代码一起存储。因此,每个子模块都有src/main/java和src/test/java。
现在,也就是说,您有一个“公共库”模块,然后是依赖于该库的其他模块(例如应用层),这是合理的。您很可能在应用层运行测试,它调用lib模块中的代码。但是你没有代码覆盖率。jacoco对lib的覆盖将完全基于lib中的测试。“应用程序”测试只提供应用程序的覆盖范围。这与jacoo运行时发生的插装有关—它只会插装它运行的模块的本地内容。
是的,有一个jacocoaggregate报告,但这会将模块报告合并在一起-每个模块的单个报告。它不会给你一个调用lib方法的应用层测试的统一覆盖。
最后,声纳。我相信只要你有jacoco文件,声纳扫描仪就会利用它们。我认为它对原始jacoco.exec文件进行操作,但可能能够解释jacoco-result.xml或jacoco-aggregate.xml。如果它给你带来悲伤,请包含pom.xml

相关问题