【问题标题】:How to delete a project in SonarQube 5.3 if the search doesn't find it?如果搜索未找到,如何在 SonarQube 5.3 中删除项目?
【发布时间】:2016-04-23 23:54:36
【问题描述】:

一些项目的分析失败并出现以下错误:

org.sonar.api.utils.MessageException:项目验证失败: o 项目“com.xxx.myproject:myproject-api-test”已在 SonarQube 中定义,但不是项目“com.xxx.myproject:myproject”的模块。如果您真的想停止直接分析项目“com.xxx.myproject:myproject-api-test”,请先将其从 SonarQube 中删除,然后重新启动对项目“com.xxx.myproject:myproject”的分析。

但是,我无法在 SonarQube 前端找到该项目,因此无法删除它。 我尝试直接浏览到我想象的那个项目的 URL。这对一个人有用,但我有更多有这个问题的项目,对于那些没有 URL 的项目。 还有一件事:我使用多模块项目。

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

    您需要进入数据库并从那里进行操作。我在以前的工作中确实有一个脚本来解决这个问题:(。我想我可以解释那里发生的事情,而不会在数据库中看到任何东西。

    1. 您有一个运行良好且轻松的多模块 maven 项目。
    2. 有人在其中一个子模块上运行声纳构建。这将 Sonar 中的子模块更新为顶级模块。
    3. 有人从声纳 (UI) 中删除了子模块,实际上并没有删除它,而是将其标记为已删除。这也是您无法从声纳 UI 中找到它的原因。

    我记得做的是

    1. 登录数据库
    2. 找到描述顶级模块的行
    3. 找到描述给您带来麻烦的子模块的行
    4. 将子模块的行更新为子模块(我记得有一个“类型”列或类似的列)并从步骤 2 中更新父 ID。您也可以取消将其标记为已删除。

    很抱歉,我无法为特定的 SQL 查询提供更多帮助。

    【讨论】:

    • 这在大多数情况下都有效,除了我无法在数据库中找到模块的几个!?关于该案件的原因和解决方案的任何想法?我应该提一下,我正在测试升级 SonarQube 4.0 > 4.5.6 > 5.3。
    • 这真的很奇怪。您是说如果您查询项目/模块表并按模块 ID 搜索(例如“com.xxx.myproject:myproject-api-test”),您不会得到任何结果?如果是这种情况,我不确定我能提供帮助,因为我以前从未见过这种情况。 “可能”工作的方法是在启用调试的情况下运行声纳构建,并检查它是否会注销它对数据库运行的任何查询,这些查询可能暗示正在发生的事情。
    • 我的错。我在查询“名称”而不是“kee”(在项目表中)。对于大多数项目来说,这些巧合地匹配,但对于其他一些项目却没有。谢谢。
    • 太棒了!只是一个评论......声纳邮件列表上的人也很有帮助,以防您有其他问题。我有一段时间没有检查它,但如果你在这里没有得到答案,这是另一个好地方:)。
    【解决方案2】:

    我正在使用 sonarqube 版本 5.1.x 并遇到了同样的问题。在 maven 子模块上执行 mvn sonar:sonar。为了解决这个问题,我更新了该项目的 kee 列产品表并将值设置为:。之后以管理员身份登录 UI 并进行批量删除。重新运行 mvn sonar:sonar 并能够验证修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2011-10-05
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多