【发布时间】:2017-01-09 17:05:09
【问题描述】:
我有一组项目,它们有很多共同的代码。 SonarQube 显示高百分比的重复。当我查看每个文件的重复项时,重复代码上的引用指向代码相同的其他项目代码。有没有办法只针对同一个项目进行复制?
【问题讨论】:
我有一组项目,它们有很多共同的代码。 SonarQube 显示高百分比的重复。当我查看每个文件的重复项时,重复代码上的引用指向代码相同的其他项目代码。有没有办法只针对同一个项目进行复制?
【问题讨论】:
默认情况下,SonarQube 在 4 个级别检测重复:
您可以在全局或项目级别关闭最后一个:管理 > 常规 > 重复 > 跨项目重复检测
但是,您可能不想这样做。检测跨项目重复的目的是帮助您识别将共享代码提取到库中的机会。因为毕竟所有重复都变成了维护的噩梦:当需要进行更改时,您必须在 n 位置进行 n 次,并更改 n 测试。
【讨论】:
即使 G. Ann 给出的答案对于这个问题来说已经足够了,但我仍然想添加一个有效的场景,我们可能需要忽略重复的代码以被 Sonar 检测到。 我们可以有一个场景,我们在单个微服务下的不同不同项目中有多个 Java 异常文件。 如果我们不打算为这些异常编写 jUnit 测试用例,那么我们必须使用 pom.xml 文件中的以下配置排除这些重复文件,以便 Sonar 检测到。
<sonar.cpd.exclusions> **/Exception.java </sonar.cpd.exclusions>
这只是一个例子,在不同的项目中可以有不同的结构。
【讨论】: