仅当代码覆盖率增加时,才有条件地允许签入

时间:2013-05-24 16:21:50

标签: java svn hudson build-process sonarqube

我目前正在开发一个大型java项目,需要在更大的项目中进行管理。更好的方法。它使用的是SVN,Hudson,Sonar。在一天中进行多次检查之后,运行夜间Hudson构建,该构建也运行声纳,从而提供新的统计数据(代码覆盖率,复杂性等)。但是现在这些数字并不是很有用,因为他们在签到后会说出情况/数字。

实际情况是,每次检查代码都会减少。现在我们想在现有水平上对数字进行基准测试。让我们说代码覆盖率目前是45%我们想要的是,当且仅当它增加代码覆盖率时,才允许下一次签入,否则不会。

我的问题是如何做到这一点??

我做了一些研究,了解了两种可能的方法

  1. 使用SVN Hooks
  2. 使用Hudson等连续构建服务器
  3. 找到第一个选项链接/教程:Can i run a script when i commit to subversion?

    以下两个链接似乎表明第二个选项更好(因为它的签到时间要少得多)

    问题

    1. 由于我还没有配置hudson(只是用它作为普通用户来启动构建)我从上面的两个链接中理解的是...声纳会在签入完成后运行,那么它将如何停止用户检查一些测试用例是否失败?还是我的理解不正确?或者它会向所有开发人员发送一封电子邮件,说明签到前后的统计数据?或者只有在测试用例失败的情况下它才会发送电子邮件?
    2. 我的用例有点不同......在决定是否提交之前我想检查新的覆盖率%(包括当前的签入更改)和旧的覆盖率%(在签入更改之前)并且仅在新的>老...我怎么能用哈德森+声纳做到这一点?任何代码/配置示例??
    3. 或者我的用例是不可能通过使用Hudson ...而SVN钩子是我唯一的选择?如果是关于如何执行此操作的任何代码示例
    4. 如果我需要进一步澄清我的问题,请告诉我

1 个答案:

答案 0 :(得分:0)

做了一些研究,没有找到精确的解决方案(比较新旧数字),但发现这些链接表明三种解决方案 Ensure minimal coverage on new Subversion commits

  1. 构建断路器插件:将当前测试覆盖率与硬编码值进行比较,管理员每隔一晚就可以增加硬编码值
  2. 付费工具http://www.semanticdesigns.com/Products/TestCoverage/,测试是否为新代码添加了新测试案例
  3. 还发现此http://mojo.codehaus.org/cobertura-maven-plugin/usage.html但是使用Cobertura作为测试覆盖率分析工具。