有没有适用于C和C++的lint工具可以检查代码格式?

14

我有一个代码库,被许多人接触。虽然大多数人都努力保持代码格式良好(例如一致的缩进和括号使用),但有些人不这样做,甚至那些这样做的人也不能总是做到,因为我们都使用不同的编辑器,所以设置如空格与制表符是不同的。

有没有标准的代码检查工具,可以检查代码是否格式正确,但实际上不改变它(类似于indent,但仅返回错误和警告)?

虽然这个问题可以作出一般性的回答,但我的重点是C和C++,因为这个项目是用这两种语言编写的。


不确定为什么这个问题被关闭了,它已经开放了13年,获得了超过1万次的浏览和14个赞。仅从统计数据来看,它非常符合主题。 - Nathan Fellman
4个回答

11

5
很遗憾,Google的cpplint不容易配置。 - dalle

5

Linux内核使用一个工具来做到这一点 - 它被称为checkpatch。您需要修改它以检查 您自己的 编码标准,而不是他们的标准,但它可以成为工作的良好基础。(它也是为C代码而设计的,而不是C++代码)


这是标准的Linux发行版的一部分吗? - Nathan Fellman
不是,但它只是一个 Perl 脚本(可在我的答案链接中找到:http://www.kernel.org/pub/linux/kernel/people/apw/checkpatch/)。 - caf

2

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


1

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

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

此网站解释了如何制作您自己的程序。但是已经存在可以执行此操作的程序。


4
请注意,对于SVN来说,在pre-commit钩子中修改文件是不推荐的:http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks - sbi
1
你是正确的,更好的做法是在格式不正确时拒绝提交(但这仅适用于所有格式都自动化的情况)。 - Thirler
2
建议完全不要使用SVN(Linus Torvalds推荐git :))。 - Frank
@Frank - 跟随Linus的建议是个坏主意;Git不适用于大型仓库,并且存在其他已知问题。 - Good Person
@GoodPerson - 不是吗? o.0 我有一个 Git 存储库,它由大量二进制文件组成,大小达数千兆字节。 - Frank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接