2013-08-22 76 views
1

我已经在Sonar中获得了一个质量配置文件,如果自上次分析以来违规数量增加“如果先前分析的关键问题大于0,则发出警报”。声呐差异警报

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

有没有办法让Sonar比较其结果与上一次没有包含警报的分析结果?

编辑:我应该说清楚,“以前版本以来的差异”选项不适用于我们的设置,因为我们正在采用持续交付策略,每个构建都是潜在候选版本,具有自己的独特版本(我们使用日期/时间戳作为版本)。编辑#2:我也尝试将值sonar.timemachine.period4设置为我想比较的硬编码版本;但是,配置警报时,此值无法访问,并且在实际分析过程中肯定会被忽略。

回答

1

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

使用“先前版本”比较来设置您的质量配置文件,无论您实际想要与最后一个良好构建进行比较。

对于每个版本:

  • 查询与构建版本的最后VCS标签,并将其分配给一个变量名为$ {} LAST_GOOD_BUILD或您的构建过程中使用的其他类似。
  • 运行声纳与-Dsonar.timemachine.period3=${LAST_GOOD_BUILD}(也确保了BuildBreaker插件被激活)
  • 如果你没有提醒,未来构建步骤需要记录在VCS标签的新版本;

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

很可怕,但它让我们的构建管道再次运行起来。如果对上述内容有任何不清楚的地方,请告诉我,我会更新这个“解决方案”。

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

0

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

+0

我知道这些选项,但不幸的是,它们不能在CD生成管道中工作 - 我已经相应地更新了我的原始问题。如果Sonar可以追踪最后的“好”分析(一个没有任何警报),并将其作为比较的基础,这将使我可以使用任何我希望的构建/版本策略。现在,似乎我将不得不修改我的构建管道,以便Sonar能够工作。 – RCross