C/C++代码编写和命名规范测试

10
我正在寻找一个可定制的脚本/工具,用于检查和强制执行C/C++代码的编码/命名规范。
它应该检查以下内容:
  • 代码行在某个长度处进行换行。
  • 私有变量以_为前缀。
  • 代码正确缩进。
  • 所有函数都有文档说明。
我所涉及的许多项目都是由客户外包的,他们往往有各种内部编码和命名约定。

4
你肯定不想让任何变量以“_”开头,因为在命名中使用“_”的规则很复杂,因为其中很多都是为编译器编写者保留的。 - Matthieu M.
4
仅以两个下划线或一个下划线和大写字母开头的名称是保留的。 只要所有私有变量都以下划线和小写字母(或下划线和数字)开头,就可以了。 - Adam Rosenfield
2
@Matthieu:在成员变量前加 _ 是一种相当普遍和无问题的约定。以 _ 开头的标识符仅在全局命名空间中保留。例如,请参见 http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/language/ref/ident.htm。 - Martin B
@Adam 实际上,以单个下划线为前缀的名称在全局范围内是保留的。这些复杂性是许多人建议永远不要使用下划线作为前缀的原因 - 这样可以避免记住规则。 - anon
6个回答

3

不知道是否值得花费时间,但如果你真的想要,可以尝试构建类似于google的cpplint的东西,它可以检查他们的风格指南

我个人认为,彻底的审查和人们遵循某些惯例的承诺是确保您的代码“正确缩进”和变量命名一致的更好方法。也许要投资制作像谷歌所做的文件,描述可接受风格的详细信息,并让公司内的人接受并坚持它。

为什么人比脚本更好?答案很简单:人们以后必须处理代码,他们应该关心他们正在编写的内容。像i这样的变量名对于脚本来说可能很好,但如果是clientCount,它应该被适当地命名,能够做到这一点的脚本可能很快就会接管世界。 :)


5
cpplint似乎没有检查变量和类的命名规范? - cxwangyi

3

Universal Indent 是一个图形用户界面下集成了很多缩进工具的软件。如果有需要,里面几乎包含了所有相关功能。(这里是其特性列表) 该软件支持主流操作系统。

除此之外,还有其他的一些工具用于检查其他方面的内容:

lint 用于安全和其他杂项。

对于Qt程序,你可以使用Krazy。它有点难以找到、下载和启动,因为它被隐藏在KDE源代码树的深处(质量保证子目录...某个地方)。但一旦运行起来,它就非常酷了。它可以检查各种可爱的东西。比如未使用的Qt头文件,不良的字符串利用,缺少用户可见字符串的tr()语句,奇怪的迭代结构,等等。

需要注意的是,所有提到的工具都是可定制的。


2
GNU indent 工具可以做你要求的一些事情。不确定它是否可以检查文档,但其余部分似乎是可行的。

我喜欢GNU indent,但它不会测试编码和命名规范。 - Eddy Pronk

1
基本上,其他人说的都对。但我可以指出来的是:
  • 所有函数都有文档说明。
不能真正地由工具来检查 - 这需要人类的眼睛和理解力。我猜我们都见过像这样的东西:
//-------------------------------------------------------------
// Name: foo
// Purpose: 
// Returns: integer
//-------------------------------------------------------------

换句话说,样板文件的“文档”比什么都没说还要少。这种情况只能通过代码审查来消除。

0
如果你有很多钱,你应该看看 Klocwork。它有能力检查源代码是否遵循样式指南。我在不同的商店使用过它。设置和维护需要很多工作,但非常强大。

0

我使用由scitools制作的Understand 4 c ++ ,它附带有perl和C API。然而,我为其编写了托管API。

这个工具允许你扫描你的源代码并像反射一样分析它,如获取变量名、类名等等。我在工作中使用这个API编写了几十个静态分析工具,它可以很好地协助你完成任务。

使用此工具可以轻松地执行各种编码标准,特别是变量名称标准。

产品链接: http://www.scitools.com/ 我的托管包装器链接: http://understandapi.codeplex.com/


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