【问题标题】:Are there any lint tools for C and C++ that check formatting?是否有任何用于检查格式的 C 和 C++ 的 lint 工具?
【发布时间】:2011-01-27 08:49:45
【问题描述】:

我有一个被很多人感动的代码库。虽然大多数人努力保持代码格式良好(例如一致的缩进和大括号的使用),但有些人不这样做,甚至那些这样做的人也不能总是这样做,因为我们都使用不同的编辑器,所以像空格和空格这样的设置. 选项卡不同。

是否有任何标准 lint 工具可以检查代码格式是否正确,但实际上并没有更改它(例如 indent,但只返回错误和警告)?

虽然这个问题可以得到一般性的回答,但我的重点是 C 和 C++,因为这就是这个项目的编写内容。

【问题讨论】:

  • 复制文件,应用缩进,然后区分两者?
  • 我想在构建过程中自动执行此操作。我只是想知道是否有更好的方法。

标签: c++ c linux code-formatting lint


【解决方案1】:

Google 使用cpplint。这是他们的style guide

【讨论】:

  • 太糟糕了,Google 的 cpplint 不容易配置。
【解决方案2】:

Linux 内核使用的工具正是这样做的——它被称为checkpatch。您必须对其进行修改以检查您的 编码标准而不是他们的,但这可能是一个很好的工作基础。 (它也是为 C 代码而不是 C++ 设计的)。

【讨论】:

【解决方案3】:

看看Vera++,它有许多rules 已经可用,但好的部分是您可以修改它们或编写自己的。

【讨论】:

    【解决方案4】:

    有几个程序可以在保存时自动为您进行格式化(例如 Eclipse)。您可以拥有每个人都可以使用的格式设置,以确保格式相同。

    也可以在提交代码时自动应用这种格式。当您使用 SVN 时,执行此操作的系统称为 svn hooks。这基本上启动了一个程序来处理(或检查和拒绝)提交发生时的格式。

    This site 解释了如何自己制作。但也有一些已经存在可以做到这一点。

    【讨论】:

    • 请注意,对于 SVN,不建议在预提交挂钩中更改文件:svnbook.red-bean.com/en/1.5/…
    • 你是对的,最好是在格式错误时拒绝提交(但只有在所有格式都是自动化的情况下才有效)
    • 建议根本不使用SVN(Linus Torvalds 推荐 git :)
    • @Frank - 遵循 Linus 的建议是个坏主意; git 无法扩展到大型存储库并且存在其他已知问题。
    • @GoodPerson - 不是吗? o.0 我有一个 git repo,它有几个 GB 大,主要由二进制文件组成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2010-09-06
    • 2011-01-28
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多