【问题标题】:Sonar refuses to analize multimodule projectSonar 拒绝分析多模块项目
【发布时间】:2018-01-30 14:46:36
【问题描述】:

我已从 Sonar 5.3 升级到 6.2,项目 X 在 jenkins 工作的声纳阶段给了我一些奇怪的错误(尽管构建完成为 STABLE)。

该项目是一个标准的多模块maven java项目。

进入项目仪表板,屏幕上会出现一条消息:

"自创建以来未执行任何分析。唯一可用的 部分是配置。”

但是在右上角出现了红色的“FAILED”标签。这会导致项目的后台任务,并且存在带有此错误日志的失败任务:

SonarQube 中已经定义了项目“com.foo:bar-submodule-1” 但不是作为项目“com.foo:bar”的模块。如果你真的想 请停止直接分析项目“com.foo:bar-submodule-1” 首先从 SonarQube 中删除它,然后重新启动分析 项目“com.foo:bar”

我不想删除项目并丢失历史数据。

所以问题是:如何将项目 Y(即项目 X 的​​子模块,但 Sonar 无法识别)添加为项目 X 的​​子模块?

编辑 1

父项目是唯一通过jenkins jobs分析过的项目。

【问题讨论】:

  • 可以在 sonar-project.properties 文件中为模块和子模块添加新名称,然后重新运行分析。
  • 您确认您作为独立项目一直在分析 com.foo:bar-submodule-1 吗? (即使它是一个更大项目的子模块)。 api/components/show?key=com.foo:bar-submodule-1 的输出可以帮助提供更多上下文。
  • api/components/show 的输出?key=: {"component":{"id":"AVXZ1QXRLUlRa7_XO26T","key":"com.foo::bar-submodule-1", "name":":Bar Submodule1","qualifier":"TRK"},"ancestors":[]}
  • @lakshman 如果有必要我会这样做,我在想为什么声纳会丢失子模块的跟踪,以及是否有办法在不向项目中添加任何文件的情况下重新连接它们
  • 我建议了另一种方法来做到这一点。

标签: maven sonarqube


【解决方案1】:

您的问题不是 Sonar 无法找出您的子模块,而是根本问题是存在与您现在正在分析的项目冲突的另一个同名项目/模块。例如,当您将子模块提取为独立库并将其作为根项目移动并尝试分析新项目时,就会发生这种情况。由于它是一个新项目,但在过去的某个时候,您有另一个名称完全相同的项目/模块,它将无法完成该过程。我找到了三种方法来解决这个问题:

  1. 如果可能,请删除旧项目 当我错误地分析了新项目(例如使用错误的参数)或者当我正在迁移服务器并且仍然有一些错误的配置时,我会使用这个选项。您可以在项目的配置/管理菜单中执行此操作,'Delete project'

  2. 重命名旧项目键
    这是我的默认选项,因为通常我想要的只是保留旧子模块的旧分析数据,这些旧子模块我们正在移动到其他项目或升级到根模块。您可以在项目的配置/管理菜单中执行此操作,'Update key' option

  3. 更新当前项目的密钥
    当子模块与其他有效子模块冲突时,我使用此选项(当您有不同的团队创建碰巧具有相同键的小型库时,可能会发生这种情况)。您可以分两步执行此操作。首先,您需要按照选项 2 更新项目的密钥。下一步是转到您的项目并使用密钥 sonar.moduleKey 更新模块和子模块名称。默认值为:类似于 sonar.projectKey,如especified here。按照这些步骤,您不会丢失所有记录和旧分析。

希望对你有帮助。

【讨论】:

  • 选项 2 成功了。我已将错误页面中列出的子模块重命名为 *_old。但并不是像我希望的那样重新布线,因为我刚刚结束了 2 个相同代码但具有不同密钥的项目。如果有人按照我的想法找到解决方案,我会等待,然后接受您的正确答案。
  • @JoseJuanCalderonViedma 您可以转到“测量”菜单并搜索包含“com.foo:bar-submodule-1”键的项目和子模块。它应该返回包含此键的所有模块,在这种情况下可能不止一个,并且在项目中的一个键与“com.foo:bar”不同。之后,您可以应用我之前提到的一些选项。
  • @JoseJuanCalderonViedma 您可以尝试的另一件事是,在“配置”>“项目”(Sonar 5.6)中,搜索可能包含重复子模块的潜在项目,如果找到,您将能够重命名或删除它也。这更难做,但我之前在这里找到了“丢失”的项目并解决了与您类似的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 2016-09-29
  • 2014-09-26
  • 2015-11-20
相关资源
最近更新 更多