SonarQube在除了正在分析的项目之外的其他项目中重复代码时添加重复项

时间:2016-09-01 17:45:03

标签: sonarqube sonarqube-web

我有一组共同拥有大量代码的项目。 SonarQube显示高比例的重复。当我去查看每个文件的重复时,重复代码上的引用指向代码相同的其他项目代码。有没有办法让重复只针对同一个项目运行?

2 个答案:

答案 0 :(得分:5)

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

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

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

但是,您可能不想这样做。检测跨项目重复的关键是帮助您识别将共享代码拉入库的机会。因为毕竟重复变成了维护噩梦:当需要进行更改时,您必须在n个地方进行n次更改,并更改n次测试。

答案 1 :(得分:0)

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

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

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