我正在使用Eclipse 3.6.2和FindBugs 2.0.1并将我的代码与SVN存储库同步。
每当我与存储库同步时,是否有可能从eclipse触发FindBugs以查找“传出更改”列表中的错误?
答案 0 :(得分:1)
不容易,特别是如果你希望FindBugs结果在Eclipse GUI中很好地显示,就像你通过FindBugs Eclipse插件运行它一样。如果您想按要求执行此操作,可能需要进行一些开发。
FindBugs的提交时执行不是现成的,可以从FindBugs,FindBugs Eclipse插件,Subversive Eclipse插件或Subclipse Eclipse插件中获得。 TortoiseSVN确实支持可以运行FindBugs的预提交操作,但是它不能在Eclipse中运行,并且需要以某种方式将FindBugs结果导回到FindBugs Eclipse插件中。一些从命令行使用SVN的人为svn客户端编写包装脚本,在提交之前执行检查,但这并不能很好地解决Eclipse中的问题,因为我们无法轻易控制Subversive或Subclipse使用的可执行文件。 p>
您要求的最接近的解决方案: Subversive Eclipse插件为添加提交挂钩提供了extension point,但实现一个并不是一项简单的任务。此外,如果您希望Eclipse集成FindBugs结果,您可能需要将Subversive扩展也设置为Eclipse插件,以便您可以触发FindBugs Eclipse插件(而不是直接使用FindBugs本身)。您的个人资料表明您可能对Java和Eclipse的使用感到满意(也许可以与FindBugs和Subversive社区共享),但随着工具的发展,它看起来确实需要大量维护,所以我对推荐这个解决方案犹豫不决
其他选择: 可以被认为是预提交操作的依赖关系通常最好留给设计用于管理依赖关系的工具,例如Maven或Ant(或其他很好的依赖关系)。另外,等到执行/执行此类检查的提交时间可能不是最好的想法,因为它可能导致在最后时刻而不是在构建周期的早期发现问题。当FindBugs结果早在编译时可用时,谁想要阻止他们当天的最后一次提交?如果您使用Ant,我建议您在构建过程中添加the FindBugs ant task;使用一个小的Ant-fu,可以使用FindBugs ant任务的class参数将检查限制为从Subversion存储库更改的项目。
如果你不是很早就需要来自FindBugs的代码反馈(或者你已经在你的构建中已经拥有它)并且你真的只需要一个强制机制,我建议一个持续集成服务器,如Jenkins(jenkins-ci) .org)测试所有签入代码的合规性。 Jenkins与Subversion很好地集成,它可以强制检查所有新文件,或者强制执行可以限制在子团队或子系统中,如果需要,它可以让你知道何时发生违规,并且它还有一个额外的好处就是不会阻止一个人在不方便的时候提交代码。