声纳差分警报

时间:2013-08-22 16:05:51

标签: sonarqube alerts profiles

我在Sonar中有一个质量档案,如果自上次分析以来违规次数增加,我会发出警告,例如: “自上次分析以来的关键问题大于0时发出警报”。

这样做的问题是,当您运行后续构建而没有任何代码更改(或者可能是无害的代码更改)时,警报将被清除。

有没有办法让Sonar将其结果与不包含任何警报的最后分析进行比较?

编辑:我应该明确指出,“我们以前版本之后的差异”选项对我们的设置不起作用,因为我们正在采用持续交付策略,其中每个构建都是具有自己独特版本的潜在候选版本(我们使用日期/时间戳作为版本。)

编辑#2:我也尝试将值sonar.timemachine.period4设置为我要比较的硬编码版本;但是,在配置警报时无法访问此值,并且在实际分析期间肯定会忽略该值。

2 个答案:

答案 0 :(得分:1)

在Sonar的消息来源中,我和一位同事想出了一个解决方法。

使用“之前的版本”比较设置您的质量配置文件,无论您想要与上一个良好的版本进行比较。

对于每个版本:

  • 使用构建版本查询最后一个VCS标记,并将其分配给名为$ {LAST_GOOD_BUILD}的变量或类似的变量以供构建过程使用。
  • 使用-Dsonar.timemachine.period3=${LAST_GOOD_BUILD}运行声纳(同时确保BuildBreaker插件处于活动状态)
  • 如果没有警报,下一个构建步骤需要在VCS标记中记录您的新版本;

这是因为sonar.timemachine.period3与质量配置文件中的“之前版本”设置相同,但您现在正在用您选择的硬指定版本替换它。每次构建时,您只标记通过质量检查的构建,当您运行Sonar时,您只是在与这些好的版本进行比较。

非常可怕,但它让我们的构建管道重新启动并运行。如果对上述内容有任何疑问,请告诉我,我将更新此“解决方案”。

CAVEATS:您的版本编号不能是整数 - Sonar会将此解释为您当前分析与您想要比较的分析之间的天数!此外,它不能采用可能与yyyy-MM-DD(例如1000-01-01)混淆的格式,好像这也恰好解析为实际日期,然后您无意中指定了日期范围的开始。我还没有看到有人用这种方式指定版本号,但你永远不知道。

答案 1 :(得分:0)

否,但您可以将SonarQube配置为基于previous_version或日期的差异视图。见http://docs.codehaus.org/display/SONAR/Differential+Views#DifferentialViews-DifferentialViewsSettings