2016-02-23 46 views
0

我们正在使用Jenkins站起来使用CI管道,我们正在使用SonarQube来运行静态分析。我们已经建立了质量门,现在我们正在失败的建设,当大门不符合。当我们构建失败时,代码仍然放入sonarQube中。所以如果一个开发者试图提升两倍,第二个构建将会“通过”。如何在ci构建失败时使用SonarQube块代码?

例子: 门是没有新的关键问题。

开发人员在代码中检查1个新的关键问题。 构建在静态分析上失败(SonarQube具有标记的规则和阻止程序)。

开发人员再次签入代码(无代码更改)。因为关键问题不是“新”,因此静态分析的通过。

有没有办法恢复到以前的版本上发生故障,或更好,但在其上运行的最新非故障运行分析?

注:版本 - Sonarqube 5.1.2

回答

0

你问到如何保持坚定代码被体现在SonarQube平台。

不要建议试图抑制承诺的代码分析,因为那么你的质量措施并不反映你的代码基地的状态。想象一下,有人根据他们在SonarQube UI中看到的内容来决定是否可以释放HEAD。如果你不让“坏”的代码出现,那么......分析的意义何在?只需使用照片编辑器构建“完美”仪表板,并在有人击中http://sonarqube.myco.com:9000时即可使用该照片编辑器。

好的,这可能是一个极端的反应,但你明白我的观点。 SonarQube分析的目的是向您展示您的代码的正确与否。在SonarQube UI中显示提交不应该是您通过提交“有价值”代码“获得”的荣誉。它应该是基准期望值。像遵循团队的编码习惯和使用SCM。

但这咆哮没有解决你的问题,这是一个事实,即当前的质量门是基于last_analysis。在那个时间尺度上,“新的关键问题”是一个短暂的措施,而你正在失去检测新的关键问题的能力,因为他们是一分钟“新”,下一个“老”。出于这个原因,我建议你改变你的时间表。与上一版本,上个月(超过30天)或上一年(超过365天)相比,不再考虑“新”与上次分析。然后,你总是能够知道什么是“新”与接受的基线。

+0

我们的想法是在预览模式下运行它,然后如果没有失败(通过或警告),我们会在常规分析模式下再次运行它。 (这会花费两倍的时间,但会给我们我们想要的东西 我们真的希望它能够与最近的运行进行比较 有没有办法进入timemachine api带回以前的版本? – Eddie

相关问题