1

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

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

我认为这必须与源代码控制系统相关才能成为可能。Checkstyle 是否可以做到这一点,或者是否有其他工具可以提供此功能?

4

2 回答 2

1

据我所知,Checkstyle 旨在分析源代码,而不考虑其历史或修订版本。

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

但是,某些类型的检查可能会在他们的分析中失败或遗漏,例如重复代码检查

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


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

据我所知,尤其是对于eclipse-cs之类的插件来说:如果他们分析一个文件,他们将显示所有警告,即使源代码控制提到该文件自给定修订版以来没有更改。

只有外部脚本才能做到这一点:
原理很简单(尽管在执行时可能会有点慢):

  • 对于每个文件,做一个 diff 以检查是否已进行修改
  • 如是,
    • 使用svn blame包含最后更改的修订号来注释行。
    • 然后用 checkstyle 分析文件。
  • 然后,脚本可以过滤当前正在修改的行(或给定修订后修改的所有行)的警告。
于 2009-09-16T19:34:14.573 回答
0

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

于 2013-09-19T08:34:06.733 回答