【问题标题】:SonarQube is adding duplications when code is repeated in other projects besides the one under analysis当代码在除正在分析的项目之外的其他项目中重复时,SonarQube 正在添加重复项
【发布时间】:2017-01-09 17:05:09
【问题描述】:

我有一组项目,它们有很多共同的代码。 SonarQube 显示高百分比的重复。当我查看每个文件的重复项时,重复代码上的引用指向代码相同的其他项目代码。有没有办法只针对同一个项目进行复制?

【问题讨论】:

    标签: sonarqube sonarqube-web


    【解决方案1】:

    默认情况下,SonarQube 在 4 个级别检测重复:

    • 在源文件中
    • 跨项目中的多个文件
    • 跨项目的模块
    • 跨多个项目

    您可以在全局或项目级别关闭最后一个:管理 > 常规 > 重复 > 跨项目重复检测

    但是,您可能不想这样做。检测跨项目重复的目的是帮助您识别将共享代码提取到库中的机会。因为毕竟所有重复都变成了维护的噩梦:当需要进行更改时,您必须在 n 位置进行 n 次,并更改 n 测试。

    【讨论】:

    • 非常感谢您的快速回复。
    • 我们的用例是这样的:我们有一个项目 x,它有 5-10 个不同的活动分支(旧版本的修补程序、自定义、下一个版本)。全部共享大部分代码,每个分支都使用不同的项目密钥和版本号构建。关于如何以更好的方式组织它的任何建议?
    • 啊。嗯……不。 :-(
    • 您可以验证答案@OvidioPozo 它有助于不检查已回答和验证的问题
    • 由于我们设置的性质,我在全局范围内关闭了它们,它运行良好。非常感谢。
    【解决方案2】:

    即使 G. Ann 给出的答案对于这个问题来说已经足够了,但我仍然想添加一个有效的场景,我们可能需要忽略重复的代码以被 Sonar 检测到。 我们可以有一个场景,我们在单个微服务下的不同不同项目中有多个 Java 异常文件。 如果我们不打算为这些异常编写 jUnit 测试用例,那么我们必须使用 pom.xml 文件中的以下配置排除这些重复文件,以便 Sonar 检测到。

    <sonar.cpd.exclusions> **/Exception.java </sonar.cpd.exclusions>

    这只是一个例子,在不同的项目中可以有不同的结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2013-03-04
      • 1970-01-01
      相关资源
      最近更新 更多