为啥删除的 Maven 模块不会从 SonarQube 中消失?

Posted

技术标签:

【中文标题】为啥删除的 Maven 模块不会从 SonarQube 中消失?【英文标题】:Why are deleted Maven modules not disappearing from SonarQube?为什么删除的 Maven 模块不会从 SonarQube 中消失? 【发布时间】:2016-07-01 00:37:11 【问题描述】:

我使用 SonarQube 分析了两个 Maven 项目 A 和 B,每个项目有几个模块(这里只显示一个):

projectA
`- someModule

projectB

由于我将 someModule 从项目 A 移到项目 B 中,因此在分析过程中出现如下错误:

Module "myGroupId:someModule" is already part of project "myGroupId:projectA"

项目 A 显然不再包含“someModule”。在进行新分析后,它甚至不会在 Sonar GUI 中显示为组件,但它仍列在“项目配置 > 更新密钥”下。

如何在不删除整个项目的情况下删除这样一个过时的组件?

作为一种变通方法,我现在将键“projectA:someModule”重命名为“projectA:someModuleThatShouldNotExist”,但我希望有人能提出更好的解决方案...

【问题讨论】:

【参考方案1】:

您描述的状态很奇怪:如果您已从项目 A 中删除“someModule”并设法在 SonarQube 中成功分析该项目,那么它不应再显示在 UI 中,您应该能够分析它在项目 B 中。

但是您可以在“项目配置>更新密钥”中看到此模块,那么您可能有一个解决方法:

    更新项目 A 中该模块的密钥(例如,只需将“-off”附加到密钥) 使用“someModule”对项目 B 进行分析:这应该可行

【讨论】:

是的,这正是我描述的解决方法(并且有效)。但是有些奇怪......虽然我在 GUI 中更新了密钥,但在声纳分析的最后,我仍然看到一条带有旧名称的日志语句:[INFO] [02:50:26.051] -> Clean 'someModule' [id=56651]【参考方案2】:

创建的链接问题已关闭为“不会修复”,因此除了删除原始项目之外没有其他解决方案。

这真的很不幸,因为当您尝试分阶段拆分原始项目但不更新时需要删除原始项目,谁知道保留原始组/工件名称将导致下一次扫描原始存储库的依赖位置重新标记以前可能被标记为“不会修复”或类似状态的问题,这会为声纳维护者带来更多噪音和工作。

【讨论】:

以上是关于为啥删除的 Maven 模块不会从 SonarQube 中消失?的主要内容,如果未能解决你的问题,请参考以下文章

为啥它不会从集合中删除?

为啥 Maven 不总是从 theartefactory 下载最后一个依赖项,从竹子构建?

为啥我不能从另一个配置文件激活 Maven2 配置文件?

为啥我的 maven 模块在项目中找不到另一个模块? [复制]

使用 Maven 从文件名中删除版本号

为啥maven更新要删除文件