0

我们有很多旧代码的大型 Java 项目。现在我们有了代码约定和 Checkstyle 规则来检查它。

我们想要配置 Jenkins 作业,该作业在每次提交到 SVN 后运行,以检查修改/添加的行是否违反我们的任何 Checkstyle 规则。

由于遗留代码,它不是检查整个项目的选项。此外,我们不能只是重新格式化所有代码,因为这样就很难确定谁更改了特定的行以及为什么更改。

我们考虑的方法 - 区分以前和当前的 Checkstyle 报告,看看是否有新的违规行为。

问题是 - 我们如何才能访问 Jenkins 中以前的 Checkstyle 报告?

或者如何将 checkstyle 配置为仅在出现新违规时才无法构建?

是否有现成的解决方案可以进行此类检查?

4

4 回答 4

1

解决方案是制作一个 bash 脚本,该脚本与以前的 checkstyle 报告产生差异,如果有新的违规行为,则构建失败。

于 2013-03-29T05:22:43.500 回答
1

这有点绕,但是如果您设置一个Sonar实例来分析您的项目,您可以通过它的远程访问 API 以编程方式查询违规数据。您知道遗留代码中的违规计数(大概该数字不会经常更改)。那是您的基线 - 您不希望计数高于此。

因此,在您的 CI 作业中,您可以在末尾添加一个脚本,该脚本调用 Sonar 以获取您关心的每个严重级别(阻止程序、严重等)的违规计数,如果当前计数超过阈值/基准。

Sonar 总体来说非常棒,特别是对于有大量遗留代码的项目,因为你可以深入研究并找出最危险的区域在哪里。如果您还没有检查,他们已经运行了一个公共实例。

于 2013-03-15T16:56:14.750 回答
0

您是否检查过可用于 jenkins的Checkstyle 插件?它将为每次提交生成报告,您可以比较每次更改的结果。每次提交都会触发一个新的构建,最后会生成一个新的报告。

于 2013-02-08T14:28:11.833 回答
0

您是否检查过可用于 jenkins 的 Checkstyle 插件?它将为每次提交生成报告,您可以比较每次更改的结果。每次提交都会触发一个新的构建,最后会生成一个新的报告。湿婆库马尔

我当然检查过了,但问题是 - 我们如何才能访问以前版本的 Checkstyle 报告?

我还可以建议静态代码分析插件。这将向您显示 Checkstyle 问题的趋势线作为一个漂亮的图表。您还可以将其与CI Game 插件一起使用,该插件将为修复 Checkstyle 问题奖励积分,并因导致更多 checkstyle 问题而扣除积分。

我发现 CI Game 插件工作得非常好——特别是如果你让你的开发人员参与一些竞赛:

我们将在本月的比赛中添加一些内容。众所周知,一等奖是一辆凯迪拉克 Eldorado。有人想看二等奖吗?(举起奖品)二等奖是一套牛排刀。三等奖是你被解雇了。

亚历克·鲍德温在格伦加里·格伦·罗斯饰演布莱克

当你把它变成一个有趣的游戏时,这些 Checkstyle 问题得到修复的速度是惊人的。

于 2013-02-11T14:53:35.380 回答