当项目没有运行 ptest 时,不会触发 Pitest 突变的质量门

Posted

技术标签:

【中文标题】当项目没有运行 ptest 时,不会触发 Pitest 突变的质量门【英文标题】:quality gate on pitest mutations is not triggerd when project does not run pitest 【发布时间】:2018-12-17 23:19:41 【问题描述】:

我们在 sonarqube 中使用 Pitest 插件并设置突变覆盖质量门,因为它比其他覆盖测量更有价值。 只是,当推送一个不使用pitest的项目时,根本不会触发质量门。 是否有可能定义一个质量门来检测根本没有为项目定义的pitest? 谢谢

【问题讨论】:

【参考方案1】:

简单回答您的问题:不,不是。没有度量标准不能触发质量门条件。所以必须计算一个指标。 但最新版本的 sonar-pitest-plugin (0.9) 仅在存在突变分析数据时才计算覆盖率信息(= 存在最糟糕的报告)。

不过更改并不过分复杂,如果您需要紧急修复,请检查第 84 行的 PitestComputer 类并添加以下 else 块:

if (mutationsTotal != null) 
  ...
 else 
   context.addMeasure(PitestMetrics.MUTATIONS_KILLED_PERCENT_KEY, 0.0);

编译并手动安装到您的实例中。

也就是说,我想给你一个简短的提示,SonarQube 中有一个更新的插件解决突变分析(完全披露:我是作者),具有几个新功能、规则等。

该插件可通过市场获得(名为“突变分析”)。 该插件与 sonar-pitest-plugin 具有相同的限制,但我刚刚创建了一个新问题来解决您的问题:

https://github.com/devcon5io/mutation-analysis-plugin/issues/13

编辑: 这个功能在version 1.3实现了

【讨论】:

以上是关于当项目没有运行 ptest 时,不会触发 Pitest 突变的质量门的主要内容,如果未能解决你的问题,请参考以下文章

我的 PLSQL 触发器没有循环遍历表

点击事件上的 jQuery Mobile listview 小部件不会为 Mobile 触发

运行时分配操作的快捷方式不会在自定义组件中触发

应用程序在后台时不会触发地理围栏转换

Iphone presentLocalNotificationNow 在后台应用程序时不会触发警报和声音

当应用程序被杀死/关闭时,世博会通知不会触发方法