Checkstyle源代码控制集成

时间:2009-09-16 19:22:15

标签: version-control coding-style checkstyle

我最近一直在研究checkstyle,作为对标准编码惯例的一些研究的一部分。虽然它看起来非常适合全新的项目,但它似乎对现有项目的采用存在巨大障碍,因为它似乎没有提供仅检查新代码或编辑代码的方法。也许我错了?

如果您的代码库从未有过编码标准,那么将整个代码库与标准同时内联起来可能是一项巨大的努力。随着代码自然发展,允许随着时间的推移逐步完成它似乎是一种更合理的方法。但这似乎不是checkstyle的可能性。

我认为这必须与源控制系统相关联才能实现。这是可以使用Checkstyle还是有其他工具可以提供此功能?

2 个答案:

答案 0 :(得分:1)

就我所知,Checkstyle旨在分析来源,而不考虑其历史或修订。

添加这种功能意味着脚本检查样式分析可以使用表示增量的文件的确切子集来提供它。

然而,某些检查可能会失败或错过他们的分析,例如duplicate code check

因此,对于这种增量分析,您不仅需要限制源集,还需要限制要强制执行的规则集,因为其中一些规则只对所有源有意义。


  

那么,为什么不能对每个文件进行全面检查,然后根据源控制系统管理的更改过滤结果?有这样的东西吗?

据我所知,特别是对于eclipse的插件如eclipse-cs:它们分析文件,它们会显示所有警告,即使源控件提到文件自给定版本以来没有改变。

只有外部脚本才能执行此操作:
原理很简单(尽管执行时可能有点慢):

  • 对于每个文件,执行diff以检查是否已进行修改
  • 如果是,
    • 执行svn blame注释包含最后更改的修订号的行。
    • 然后用checkstyle分析文件。
  • 然后,脚本可以过滤当前修改的行的警告(或者在给定修订后修改的所有行)。

答案 1 :(得分:0)

我们为Checkstyle plugin开发了SCM-Manager,这是一个管理git,subversion和mercurial存储库的工具。如果激活,则可以根据Checkstyle规则检查已提交的源代码。如果检查发现错误,则中止提交。