【问题标题】:Sonar Report + Multi module maven + Jacoco plugin声纳报告 + 多模块 maven + Jacoco 插件
【发布时间】:2015-12-25 13:10:09
【问题描述】:

我是 Sonar 的新手。 我有多模块 Maven 项目。 请在下面找到项目结构

-Parent
| -Module A
    |
     -pom.xml (Module A) 
| -Module B
    |
     -pom.xml (Module B)
| -Module C
|   |
|    -pom.xml (Module C)
|
--pom.xml (parent pom)   

注意:(模块 C 是模块 A/模块 B 中的共享模块 - 意味着模块 C 在内部将部分放入模块 A 、模块 B 库中) 根据项目要求,我们有这些结构。

  1. 模块 A - 适用于外部用户。
  2. 模块 B - 适用于内部用户。
  3. Module C - 两个模块通用。

    我正在尝试为这两个模块创建单个声纳报告,但我无法集成所有模块 junit 报告(模块 A 和模块 B 报告) 到单个报告中。我按照几个示例来组合多模块 maven 项目,但没有任何效果。

similar issue1similar issue2
github-example(声纳中给出的参考)

【问题讨论】:

  • 如果你的问题是关于 junit,我不明白你为什么要添加 jacoco-maven-plugin、sonarqube、maven-cobertura-plugin、sonarqube5.1、maven-plugin... 这些标签都没有符合您的问题。
  • @kraal : 当你有多模块项目时,在这种情况下,为了覆盖整个项目覆盖范围,我们必须在额外插件配置的帮助下合并 J-unit 报告。
  • 您的帖子中没有问题。您只是在写您无法“集成所有模块 junit 报告”。那么你想做什么?编辑您的帖子,以提供人们可以尝试回答的明确问题(而不必猜测您的期望)
  • @kraal :我想你还没有读过这一行“但我无法将所有模块 junit 报告(模块 A 和模块 B 报告)集成到单个报告中。”

标签: sonarqube maven-plugin sonarqube5.1 jacoco-maven-plugin maven-cobertura-plugin


【解决方案1】:

我能够使用带有 Jococo 插件的声纳实现集成测试覆盖率。 要在本地运行声纳,我遇到了声纳中 SCM 错误的问题。 每次在声纳报告创建中失败。 要在本地解决问题,您需要在声纳中禁用 SCM 配置。 以管理员身份登录本地声纳 - 管理员/管理员(默认用户名/密码) 现在在设置下,我们有 SCM 选项卡 - 禁用 SCM 传感器并保存 SCM 设置。

现在在仪表板中 --> 配置小部件。搜索“集成测试覆盖率”

现在将小部件添加到您的项目仪表板中。

按照链接中给出的 pom.xml 中的相同配置进行操作。

https://github.com/SonarSource/sonar-examples/tree/master/projects/languages/java/code-coverage/combined%20ut-it/combined-ut-it-multimodule-maven-jacoco

【讨论】:

    【解决方案2】:

    我对 40 多个甚至嵌套的模块也有类似的问题。您要做的是在父 pom.xml 中创建整个声纳配置。

    <sonar.host.url>set url here (default is localhost)</sonar.host.url>
    <sonar.login>user for host url (default admin)</sonar.login>
    <sonar.password>password for host url (default is admin)</sonar.password>
    <sonar.projectName>optional name for whole project in sonar view</sonar.projectName>
    <sonar.projectDescription>optional project description for sonar view</sonar.projectDescription>
    <sonar.projectBaseDir>like name says you can set project base dir, if you have parent pom as a separate module then you can type ".." to set main directory with all modules</sonar.projectBaseDir>
    

    正确设置将针对整个项目单独分析的所有模块:

    <sonar.modules>module1, module2, module3</sonar.modules>
    

    正确配置每一个:

    <module1.sonar.projectName>module1</module1.sonar.projectName>
    <module1.sonar.projectBaseDir>module1/</module1.sonar.projectBaseDir>
    <module1.sonar.sources>optionally set sources to proper directory for example src/main/java</module1.sonar.sources>
    
    <!-- similiar for other 2 projects -->
    

    这样,所有 junit 报告都将在每个模块中使用,但它将与模块​​一起列在单个项目中。这样您就可以查看每个模块和整个单个项目的报告。

    添加每个模块后检查结果是一种很好的做法。如果失败,只需在控制台中检查错误并修复问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-03
      • 2015-10-04
      • 2023-04-01
      • 2013-03-21
      • 2018-09-05
      • 2018-07-20
      • 2018-11-21
      • 2017-03-12
      相关资源
      最近更新 更多