声纳拒绝分析多模块项目

时间:2017-08-22 10:46:25

标签: maven sonarqube

我已经从Sonar 5.3升级到6.2并且项目X在jenkins工作的声纳阶段给了我一些奇怪的错误(altough build完成为STABLE)。

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

进入项目仪表板屏幕上会显示一条消息:

  

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

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

  

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

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

所以问题是:我如何添加项目Y(项目X的子模块,但Sonar不能识别它)作为项目X的子模块?

编辑1

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

  4. 我希望它有所帮助。