我们有一个包含大量遗留代码的大型Java项目。现在我们有代码约定和Checkstyle规则来检查它。
我们希望配置Jenkins作业,该作业在每次提交到SVN后运行,以检查修改/添加的行是否违反任何我们的Checkstyle规则。
由于遗留代码,检查整个项目不是一个选项。此外,我们不能只重新格式化所有代码,因为很难确定谁更改了特定的行以及原因。
我们考虑的方法 - 在之前和当前的Checkstyle报告之间进行差异化,并查看是否存在新的违规行为。
问题是 - 我们如何才能访问Jenkins以前的Checkstyle报告?
或者,如果有新的违规行为,如何配置checkstyle以使构建失败?
可能有现成的解决方案吗?
答案 0 :(得分:1)
这有点四舍五入,但如果您设置Sonar实例来分析项目,则可以通过其远程访问API以编程方式查询违规数据。您知道遗留代码中的违规数量(可能是这个数字不会经常更改)。这是你的基线 - 你不希望计数高于那个。
因此,在您的CI作业中,您可以在调用Sonar的末尾添加一个脚本,以获取您关注的每个严重性级别(阻止程序,严重等)的违规计数,并在当前的情况下使构建失败计数超过阈值/基准。
声纳总体上非常棒,特别是对于包含大量遗留代码的项目,“因为你可以深入挖掘并找出风险最大的区域。如果你还没有检查它们,它们就会运行public instance。
答案 1 :(得分:1)
解决方案是制作一个bash脚本,使用之前的checkstyle报告制作差异,如果有新的违规行为,则会失败。
答案 2 :(得分:0)
您是否已查看可用于詹金斯的Checkstyle Plugin?它将为每个提交生成报告,您可以比较每个更改的结果。每次提交都会触发一个新的构建,最后会生成一个新的报告。
答案 3 :(得分:0)
你有没有检查过jenkins可用的Checkstyle插件?它将为每个提交生成报告,您可以比较每个更改的结果。每次提交都会触发新的构建,并在最后生成新的报告。Shiva Kumar
当然我检查了它,但问题是 - 我们如何才能访问之前biuld的Checkstyle报告?
我可以建议Static Code Analysis Plug-ins。这将向您展示Checkstyle问题的趋势线,作为一个不错的图表。您还可以将CI Game plugin与{{3}}一起使用,以便为修复Checkstyle问题奖励积分,并扣除积分以导致更多的问题风格问题。
我发现CI游戏插件工作得非常好 - 特别是如果你让开发人员参与了一些比赛:
我们在本月的比赛中添加了一些内容。众所周知,一等奖是凯迪拉克埃尔多拉多。有人想看二等奖吗? (举起奖品)二等奖是一套牛排刀。三等奖是你被解雇了。
Alec Baldwin饰演Blake in Glengarry Glen Ross
令人惊讶的是,当你将Checkstyle问题变成一个有趣的游戏时,它们的修复速度有多快。