2

我正在使用 Eclipse 3.6.2 和 FindBugs 2.0.1 并将我的代码与 SVN 存储库同步。

每当我与存储库同步时,是否可以从 Eclipse 触发 FindBugs 以在“传出更改”文件列表中查找错误?

4

1 回答 1

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 使用什么可执行文件。

与您所要求的最接近的解决方案:Subversive Eclipse 插件提供了一个用于添加提交挂钩的扩展点,但实现它并不是一项简单的任务。此外,如果您希望将 Eclipse 集成到您的 FindBugs 结果中,您可能还需要将 Subversive 扩展设置为 Eclipse 插件,以便您可以触发 FindBugs Eclipse 插件(而不是直接触发 FindBugs 本身)。您的个人资料表明您可能对 Java 和 Eclipse 感到满意,可以尝试此方法(并可能与 FindBugs 和 Subversive 社区分享),但随着工具的发展,它看起来确实需要大量维护,因此我不愿推荐此解决方案.

其他选项:可以被认为是预提交操作的依赖项通常最好留给专为管理依赖项而设计的工具,例如 Maven 或 Ant(或无数其他好的工具)。此外,等到提交时间执行/强制执行此类检查可能不是最好的主意,因为它可能导致在最后一刻而不是在构建周期的早期发现问题。当 FindBugs 结果可以早在编译时获得时,谁想要阻止他们当天的最后一次提交?如果您使用 Ant,我建议将FindBugs ant 任务添加到您的构建过程中;使用一点 Ant-fu,FindBugs ant 任务的类参数可用于将检查限制为从 Subversion 存储库中更改的项目。

如果你真的不需要很早就来自 FindBugs 的代码反馈(或者你已经在你的构建中拥有它)并且你真的只需要一个强制机制,我建议你使用一个持续集成服务器,比如 Jenkins (jenkins-ci.org)测试所有签入代码的合规性。Jenkins 与 Subversion 很好地集成,它可以强制检查所有新文件,或者如果需要,可以将强制执行限制在子团队或子系统中,它可以让您知道何时发生违规,并且它具有不阻止某人的额外好处避免在不方便的时候提交代码。

于 2013-04-16T21:16:41.523 回答