Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Checkstyle和Jenkins:检查SVN提交中修改/添加的行_Java_Svn_Jenkins_Checkstyle - Fatal编程技术网

Java Checkstyle和Jenkins:检查SVN提交中修改/添加的行

Java Checkstyle和Jenkins:检查SVN提交中修改/添加的行,java,svn,jenkins,checkstyle,Java,Svn,Jenkins,Checkstyle,我们有一个很大的Java项目,有很多遗留代码。现在我们有了代码约定和Checkstyle规则来检查它 我们希望配置Jenkins作业,该作业在每次提交到SVN后运行,以检查修改/添加的行是否违反我们的任何Checkstyle规则 由于遗留代码的原因,不能选择检查整个项目。此外,我们不能只是重新格式化所有代码,因为这样很难确定是谁更改了某一行以及为什么更改了该行 我们考虑的方法——在以前的和当前的检查样式报告之间进行区分,并查看是否存在新的违规行为。 问题是-我们如何才能访问Jenkins中以前的

我们有一个很大的Java项目,有很多遗留代码。现在我们有了代码约定和Checkstyle规则来检查它

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

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

我们考虑的方法——在以前的和当前的检查样式报告之间进行区分,并查看是否存在新的违规行为。 问题是-我们如何才能访问Jenkins中以前的Checkstyle报告

或者,如何将checkstyle配置为仅在出现新冲突时生成失败

也许有现成的解决方案可以做这样的检查吗?

你有没有检查过詹金斯可用的解决方案?它将为每次提交生成报告,您可以比较每次更改的结果。每次提交都将触发一个新构建,并在最后生成一个新报告

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


当然我检查过了,但问题是-我们如何从以前的biuld中访问Checkstyle报告

我也可以建议你的建议。这将显示Checkstyle问题的趋势线,作为一个漂亮的图表。您还可以将此功能用于修复Checkstyle问题,并为导致更多Checkstyle问题而扣分

我发现CI游戏插件工作得非常好——特别是如果你让你的开发者参与一场竞赛:

我们在这个月的比赛中增加了一些东西。大家都知道,头奖是凯迪拉克埃尔多拉多。有人想看二等奖吗?二等奖是一套牛排刀。三等奖是你被解雇了

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


当您将Checkstyle问题转化为一个有趣的游戏时,这些问题得到修复的速度之快令人惊讶。

这有点绕圈子,但是如果您设置一个实例来分析您的项目,您可以通过它的远程访问API以编程方式查询违规数据。您知道旧代码中的违规计数(大概这个数字不会经常更改)。这就是你的底线——你不希望计数超过这个数字

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


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

解决方案是制作一个bash脚本,该脚本与以前的checkstyle报告不一致,如果有新的冲突,则生成失败。

当然我已经检查过了,但问题是-我们如何才能从以前的biuld中访问Checkstyle报告?当插件本身将向您显示新的冲突时,您为什么要进行区分?您能否告诉我,如何配置Checkstyle插件,使其仅在出现新的冲突时生成失败?因为现在我们有很多插件,不管有什么新的违规行为,都会导致构建失败。通常在这些插件的高级配置中,您可以选择指定阈值。如果生成超过此阈值,则可能导致生成失败或使其不稳定。如果你说不管有什么新的违规行为,构建都会失败,我想知道你是否设置了任何其他属性使构建失败。您在控制台输出中看到了什么构建失败的原因?由于checkstyle冲突导致的构建失败:未能执行目标org.apache.maven.plugins:maven checkstyle plugin:2.9.1:project mms interop上的check(默认cli):您有1923个checkstyle冲突。我知道这些插件,它们很好,但是我们的主要目标是检查新提交的违规行为,而不是修复旧的违规行为。与在Jenkins中执行此操作不同,您需要在build.xml文件中执行Checkstyle任务。CheckStyle ant任务接受一个文件集,因此可以基于更改的文件构建一个文件集,然后仅在这些文件上运行CheckStyle任务。然后,詹金斯会做你想做的事。您可能可以使用。我得好好玩玩才能弄明白。如果我发现了什么,我会附加我的答案。顺便说一句,我们使用Maven,而不是ant。但问题是-如何持久化“CheckStyle任务生成的结果XML文件”以供以后比较。我不确定Maven with CheckStyle如何工作,但Jenkins中的Checketyle插件是Jenkins的后期构建过程。Jenkins不运行Checkstyle——您负责确保您的项目生成Checkstyle XML文件。您要做的是在生成后过程中指定1)。您希望生成Checkstyle分析,以及2)。您生成的Checkstyle XML文件位于何处。我刚刚查找了Maven插件,这是Maven…技术术语是什么。。。哦,是的。。。烂透了。只要你沿着直线和狭窄的道路走,Maven是可以的。然而,如果您想做一些稍微不同的事情,比如在有限的文件子集上运行Checkstyle,那么您就有麻烦了。在这种情况下,我发现自己正在运行AntMaven任务来完成我需要做的事情。如果你还没有,看看Jenkins Checkstyle插件,看看它是如何工作的