【问题标题】:Checkstyle source control intergrationCheckstyle 源代码控制集成
【发布时间】:2010-11-28 22:18:49
【问题描述】:

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

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

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

【问题讨论】:

  • 在我的回答中添加了一个提议以回应您的评论
  • 很好的答案。谢谢你的时间。

标签: version-control coding-style checkstyle


【解决方案1】:

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

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

但是,某些类型的检查可能会在他们的分析中失败或遗漏,例如duplicate code check

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


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

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

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

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

【讨论】:

  • 它具有仅检查一个源文件的功能。那么,为什么您不能对每个文件进行全面检查,然后根据源代码控制系统管理的更改过滤结果呢?有这样的东西吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多