2017-08-22 56 views
0

我已经从Sonar 5.3升级到6.2,项目X在jenkins工作的声纳阶段给我一些奇怪的错误(尽管建造完成后稳定)。Sonar拒绝分析多模块项目

该项目是一个标准的multimodule maven java项目。

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

“没有分析已经创立以来进行的唯一可用 节的配置。”

但在右上角显示红色的“FAILED”标签。这导致了项目的背景任务,且有失败的任务与此错误日志:

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

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

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

编辑1

父项目是已通过詹金斯工作分析的只有一个。

+0

您可以将新名称添加到sonar-project.properties文件中的模块和子模块中,然后重新运行分析。 – lakshman

+0

您是否确认自己作为独立项目一直在分析_com.foo:bar-submodule-1_? (尽管它是一个更大项目的子模块)。输出_api/components/show?key = com.foo:bar-submodule-1_可以帮助提供更多的上下文。 –

+0

输出api/components/show?key =:{“component”:{“id”:“AVXZ1QXRLUlRa7_XO26T”,“key”:“com.foo::bar-submodule-1","name":":Bar子模块1“,”限定符“:”TRK“},”祖先“:[]} –

回答

1

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

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

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

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

我希望它有帮助。

+0

选项2做到了这一点。我已将错误页面中列出的子模块重命名为* _old。但是,我不希望因为我刚刚结束了2个具有相同代码但具有不同密钥的项目。如果有人以我想的方式找到解决方案,然后接受您的答案为正确答案,我会等待。 –

+0

@JoseJuanCalderonViedma您可以转到“度量”菜单并搜索包含键“com.foo:bar-submodule-1”的项目和子模块。它应该返回包含这个键的所有模块,在这种情况下可能不止一个,在项目中有一个模块的键名不同于“com.foo:bar”。之后,您可以应用我之前提到的一些选项。 –

+0

@JoseJuanCalderonViedma您可以尝试的其他事情是在Configuration> Projects(Sonar 5.6)中搜索可能包含重复子模块的潜在项目,如果您发现它,您将可以重命名或删除它。这很难做到,但我之前在这里找到了'失落'的项目,并解决了与您一样的问题。 –