Sonarqube在计算新的bug /漏洞/泄漏时不尊重git提交日期

时间:2016-09-28 05:19:22

标签: java coding-style sonarqube code-standards

我最近在发布过程中集成了sonarqube。我已将泄漏期设置为整合日期,并在quality gate定义中强制要求自泄漏期开始以来应该没有新问题。

问题是文件发生变化时,sonarqube开始将所有先前的问题视为新问题。这对于大文件尤其成问题,因为正在对文件进行任何更改的人需要回顾性地进行所有更正。我希望sonarqube做的是从责备信息中兑现提交日期,并通过比较提交日期和泄漏期来定义new

如何实现这一目标?我正在使用sonarqube 6.0

1 个答案:

答案 0 :(得分:2)

您的用例是SonarQube Leak Concept的核心。您需要做的就是确保存在与泄漏期开始相对应的分析,并根据此时已存在的问题设置基线。正确的方法是实际使用 sonar.projectDate (参见Analysis Parameters)进行初始分析。底线:

  • 查看与您的案例中的集成相对应的提交
  • 通过将 sonar.projectDate 设置为提交日期并将 sonar.projectVersion 设置为 baseline 来分析它,例如
  • 将您的泄漏期设置为基线
  • 对于所有进一步分析, Leak 将对应于自初始基线以来引入的新问题。遗留问题(在集成之前)将被视为遗留问题,而不是在泄漏期中,您的质量门可以按照您的预期完成工作。
SonarQube使用FYI SCM blame 信息来自动分配问题和识别新代码上的Coverage,但是它无法可靠地确定问题是新的与否:想象一下在代码中定义和使用的变量,如果提交删除了它的用法,那么它会在变量定义上引发一个变量未使用问题,而那条精确的行不是。任何提交触及。这就是为什么问题被确定为新的相对于SonarQube首次检测它们的日期(在之前的分析中),因此上面详述了工作流程。