首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

hudson+findbugs的配备方法及无数坑爹的陷阱

2012-08-07 
hudson+findbugs的配置方法及无数坑爹的陷阱http://hi.baidu.com/dburu/blog/item/d34bb68b1fb03b609e2fb4

hudson+findbugs的配置方法及无数坑爹的陷阱

http://hi.baidu.com/dburu/blog/item/d34bb68b1fb03b609e2fb4b4.html

?

说明:

1、如果你曾经安装过该插件,则在“可选插件”中是看不到的,在“已安装”插件中。

2、点击“更新”页签,如果出现“Hudson :: Maven (legacy) :: Plugin”的更新,你最好乖乖的更新,否则你的job设置中的Build Settings选项下的Publish FindBugs analysis results和E-mail Notification选项,勾选之后点击保存,再次打开设置页面,居然为空,保存不成功!这是一个非常坑爹的BUG。

第二步:

准备工程

eclipse中新建个maven工程,要点是:

在依赖中添加

???<plugin>
????<groupId>org.codehaus.mojo</groupId>
????<artifactId>findbugs-maven-plugin</artifactId>
????<!-- <version>1.2</version> -->
????<configuration>
?????<findbugsXmlOutput>true</findbugsXmlOutput>
?????<findbugsXmlWithMessages>true</findbugsXmlWithMessages>
?????<xmlOutput>true</xmlOutput>
?????<!-- <findbugsXmlOutputDirectory>target/test-findbugs</findbugsXmlOutputDirectory>-->
????</configuration>
???</plugin>

hudson+findbugs的配备方法及无数坑爹的陷阱

注意点:看到我注释掉的那句话了吗,这又是一个陷阱,假如放开注释,是可以执行成功的,但是你在Hudson中看不到结果,也就是在target/test-findbugs下你可以看到findbugsXml.xml,里面也确实有东西,你在命令行执行>mvn clean install findbugs:findbugs或者>mvn clean install findbugs:gui都没有任何问题,但是一旦进入Hudson就是看不到FindBugs Warnings和FindBugs Result,这是因为FindBugs 的Hudson Plug-in是从target目录中取得report。又一个坑爹的陷阱。

手工运行一下mvn clean install findbugs:findbugs,可以看到报告的位置在target的根目录下,才是正确的。

hudson+findbugs的配备方法及无数坑爹的陷阱

第三步:

拷贝你的工程到\.hudson\jobs\你的job名\workspace\下。

没有workspace可以自己新建一个。

?hudson+findbugs的配备方法及无数坑爹的陷阱

第四步:

Hudson ? 新建任务?? 构建一个Maven 2/3 (Legacy)项目

hudson+findbugs的配备方法及无数坑爹的陷阱

进入设置界面:

hudson+findbugs的配备方法及无数坑爹的陷阱

Source Code Management

自己看着办吧,从svn取或者自己拷贝到jobs/你的job名字/workspace中

Build

Root POM :填写相对于workspace的根pom的位置

Goals and options:填写诸如clean install findbugs:findbugs或compile ?findbugs:findbugs此类的

Build Settings:勾选Publish FindBugs analysis results,其他可以用默认值。

说明:

1、一定要注意,clean findbugs:findbugs install ,这种写法是错的,可以运行的,但是并不产生findbugs报告,再次坑爹。

2、当然你可以选择“构建一个自由风格的软件项目”,在下一步配置界面选择Invoke Maven 2 (Legacy)或Invoke Maven 3,这也是可以的,不过配置参数有所不同。

至此,全部完成,点击构建,不出意外的话,你可以看到结果页面。

hudson+findbugs的配备方法及无数坑爹的陷阱

注意:如果你看到的Plug-in Result是个红叉叉,请修改Hudson ? 系统管理 ? 插件管理 ? 系统设置

邮件通知中的Hudson URL为你的正确地址,注意使用ip地址,不要使用localhost,坑爹啊。

hudson+findbugs的配备方法及无数坑爹的陷阱

hudson+findbugs的配备方法及无数坑爹的陷阱

?

如果你用的所有包都是最新的,你很有可能会看到下面的错误,错误日志片段:

hudson+findbugs的配备方法及无数坑爹的陷阱

[java] java.text.ParseException: Unparseable date: "12/20/2011 09:17 PM EST"
[java]???? at java.text.DateFormat.parse(DateFormat.java:337)
[java]???? at edu.umd.cs.findbugs.Version.<clinit>(Version.java:175)
[java]???? at edu.umd.cs.findbugs.PluginLoader.init(PluginLoader.java:595)
[java]???? at edu.umd.cs.findbugs.PluginLoader.<init>(PluginLoader.java:280)
[java]???? at edu.umd.cs.findbugs.PluginLoader.loadCorePlugin(PluginLoader.java:1304)
[java]???? at edu.umd.cs.findbugs.PluginLoader.loadInitialPlugins(PluginLoader.java:1259)
[java]???? at edu.umd.cs.findbugs.PluginLoader.<clinit>(PluginLoader.java:146)
[java]???? at edu.umd.cs.findbugs.DetectorFactoryCollection.getCoreResource(DetectorFactoryCollection.java:360)
[java]???? at edu.umd.cs.findbugs.SystemProperties.loadPropertiesFromConfigFile(SystemProperties.java:72)
[java]???? at edu.umd.cs.findbugs.SystemProperties.<clinit>(SystemProperties.java:55)
[java]???? at edu.umd.cs.findbugs.FindBugs2.<clinit>(FindBugs2.java:87)

这是为啥呢,又一个坑爹,是程序员就直接看代码,分析原因如下:

下载源码包findbugs-2.0.0-source.zip:http://findbugs.sourceforge.net/downloads.html

解压后,直接导入eclipse中即可。打开?edu.umd.cs.findbugs.Version.java,从第175行开始,往上看。

hudson+findbugs的配备方法及无数坑爹的陷阱

?

?

?

解决办法:

如果你用的是maven,jar包的位置\.m2\repository\com\google\code\findbugs\findbugs\2.0.0\findbugs-2.0.0.jar

hudson+findbugs的配备方法及无数坑爹的陷阱

方法1:修改类edu.umd.cs.findbugs.updates.UpdateChecker,然后将编译后的class文件,替换掉findbugs-2.0.0.jar中的对应类。(由于有内部类,注意是4个类)

hudson+findbugs的配备方法及无数坑爹的陷阱

hudson+findbugs的配备方法及无数坑爹的陷阱

?

方法2:看代码175行,打开jar中的version.properties可以看到错误原因正是这个文件中持久化的时间时区与DateFormat默认的时区不一致导致(我们是上海时区),因此修改该properties为正确值即可。

hudson+findbugs的配备方法及无数坑爹的陷阱

?

hudson+findbugs的配备方法及无数坑爹的陷阱

方法3:仔细看代码,实际上对properties文件做了null的验证,因此我们直接删除version.properties文件即可,懒得改来改去。

hudson+findbugs的配备方法及无数坑爹的陷阱

注意:findbugs-2.0.0.jar\edu\umd\cs\findbugs与findbugs-2.0.0.jar\均有一个version.properties文件,我们针对的是前者,坑爹无极限啊。

hudson+findbugs的配备方法及无数坑爹的陷阱


?

现在已经更新到jenkins,bug少了很多,速度也快很多,具体戳这里:http://jenkins-ci.org/

热点排行