为新问题配置 SonarQube Quality Gate 阈值而不是增加值

Configure SonarQube Quality Gate threshold for new issues rather than increase in value

我正在使用 SonarQube 5.1.2。

我想为 SonarQube 项目配置 Quality Gate。
但是,由于这些是遗留项目,根据现有规则,我们已经存在一些阻碍和关键问题

我想根据今后出现的新问题定义一个质量门,并推动不断减少这些问题,同时不允许引入新的障碍问题。

例如,我可以在给定日期后使用条件 "New Blocker Issues",但不会完全按照我的意愿工作,因为如果有人添加了阻止程序问题,但在此期间,有人解决了现有问题阻塞问题,余额将为空,因此质量门不会更改为 'red'.

另一方面,如果我配置阈值 "Blocker issues",值 > 0,自上次分析以来,也不会起作用,因为下次 SonarQube 运行时,如果没有引入新的阻塞问题,质量门将更改为 'green' 即使之前分析中的新阻塞问题根本没有修复。

相反,我期望 SonarQube 能够实际检测到 "new issues"(而不是它们数量的差异),并继续将它们计为 "new",因为我们想强制执行不在此期间引入了新 "Blocker issues",同时解决了现有问题。

有没有办法配置质量门来反映这一点?
也许我只是以错误的方式配置它。我找到了 2 个条件:"Blocker issues" 和 "New blocker issues",但它们与句点组合时的行为似乎完全相同。

SonarQube 旨在解决您的用例,即专注于 新代码。这是它的重点 Water Leak Paradigm.

简而言之:当您的质量门的条件是“在泄漏期间没有新问题”,SonarQube 将确保存在“”在泄漏期开始后没有创建新问题”,即“只允许在泄漏期之前存在的问题”即“我容忍遗留问题,我绝对不容忍任何新问题”即“我不会泄露新问题".

返回您的查询:

For instance, I could use the criteria "New Blocker Issues" since a given date, but won't work exactly as I would like, because if someone adds a blocker issue, but while that, someone resolves an existing blocker issue, the balance will be null, and thus the quality gate won't change to 'red'.

不,SonarQube 不会关心余额。 SonarQube 将查找在该日期之后创建的问题(更一般地说:在泄漏期开始之后)。您将能够在项目主页 (example) 上看到它,如果相应地配置了质量门,它就会崩溃(例如 没有新的阻止程序问题)。

尝试使用示例代码删除现有问题并添加新问题(不要只是将现有问题移到不同的行,因为 SonarQube 有 问题跟踪机制)。

P.S.: 5.1.2 很旧,您应该升级到最新的 SonarQube LTS(撰写本文时为 5.6.x)。 Leak Period在UI/UX中更加明显,相关Quality Gate配置也更加全面