Checkstyle 源代码控制集成
-
07-07-2019 - |
题
我最近一直在研究 checkstyle,作为标准编码约定研究的一部分。尽管它看起来非常适合全新的项目,但它似乎对现有项目的采用存在巨大障碍,因为它似乎不提供仅检查新代码或编辑代码的方法。也许我错了?
如果您的代码库从未有过编码标准,那么一次性使整个代码库符合标准可能需要付出巨大的努力。随着代码的自然发展,允许它随着时间的推移逐步完成似乎是一种更合理的方法。但这对于 checkstyle 来说似乎不可能。
我认为这必须与源代码控制系统相结合才能成为可能。Checkstyle 可以实现这一点吗?或者还有其他工具可以提供此功能吗?
解决方案
据我所知,Checkstyle 旨在分析源代码,而不考虑其历史或修订。
添加这种功能意味着脚本检查样式分析,以向其提供代表增量的确切文件子集。
但是,某些类型的检查可能会在分析中失败或遗漏,例如 重复代码检查.
因此,对于这种增量分析,您不仅需要限制源集,还需要限制要执行的规则集,因为其中一些规则仅对所有源有意义。
那么,为什么不能对每个文件运行完整检查,然后根据源代码控制系统管理的更改来过滤结果呢?存在这样的东西吗?
据我所知,尤其是像这样的插件 eclipse-cs 对于日食:如果他们分析文件,他们将显示所有警告,即使源代码管理提到该文件自给定修订版以来尚未更改。
只有外部脚本才能执行此操作:
原理很简单(尽管执行时可能有点慢):
- 对于每个文件,进行比较以检查是否已进行修改
- 如果是,
- 做一个
svn blame
使用包含最后更改的修订号来注释行。 - 然后用checkstyle分析该文件。
- 做一个
- 然后,该脚本可以过滤当前正在修改的行(或给定修订后修改的所有行)的警告。
其他提示
我们开发了 Checkstyle插件 for SCM-Manager ,一个管理git,subversion和mercurial资源库的工具。如果激活,则可以根据Checkstyle规则检查已提交的源代码。如果检查发现错误,则中止提交。
不隶属于 StackOverflow