在声纳中生成同一项目的多个代码覆盖视图的最佳做法是什么?

时间:2015-10-22 02:21:53

标签: maven sonarqube code-coverage cobertura

我有一个多模块maven项目,想要为项目的子集生成代码覆盖率报告,并使用声纳跟踪结果。

该项目包含模块M1M2M3,我想为包foo/**和包bar/**生成报道报告。包可能存在于多个模块中。

我正在使用cobertura在我的maven项目中生成代码覆盖文件。

我的问题是:为单个项目生成多个代码覆盖率报告的最佳做法是什么?

一种选择是使用配置文件配置我的maven构建,以生成特定包的覆盖数据,例如coverage-foo会使用<include>foo/**</include>配置cobertura maven插件,而coverage-bar会使用<include>bar/**</include>配置cobertura插件。然后我将使用项目的两个分支配置声纳:一个用于foo,另一个用于bar,声纳侧没有配置。

但另一种选择是为整个项目生成代码覆盖率数据,并为每个声纳项目配置适当的内容。所以声纳&#39; foo&#39;分支将具有仅包含foo/**个文件的设置,并且声纳bar分支将具有bar包的类似设置。

两者看起来都等同于我(就声纳输出而言),我赞成第一种选择,但我想知道这是否是最好的做法&#39;生成多个代码覆盖范围的方法&#39;视图&#39;同一个多模块项目。或者,如果一个选项存在我未考虑过的缺点。

(注意:声纳有一个商业&#39;视图&#39;插件,但我现在仅限于免费插件)

1 个答案:

答案 0 :(得分:0)

鉴于我们的消息交换和您提供的信息,我宁愿在您的上下文中混合使用两个选项,即:

  • 仅为foo(或bar
  • 生成代码覆盖率数据
  • 让sonarqube以一种为foo(或bar)创建分支的方式分析您的代码,其中只包含foo代码(或bar代码)< / LI>

实际上,这将允许您获得有关覆盖范围的信息,但也允许您只有与foo /条形码相关的问题。

然而,你会遇到两个问题:

  1. 不属于foobar的代码将不会被分析,除非您创建另一个分支,其中您将排除foobar代码
  2. 你将无法全面了解你的代码质量,要做到这一点,你必须使用组合插件(但正如你所写,你只能使用开源插件
  3. 请注意,第2点没有问题,因为您可以使用SonarQube的Web服务重建所需的信息(这将允许您构建一个汇总您想要聚合的数据的外部报告)

    米歇尔