C++ C/C+的编码和命名约定测试+;代码

C++ C/C+的编码和命名约定测试+;代码,c++,coding-style,C++,Coding Style,我正在寻找一个脚本/工具,可以定制来检查和强制C/C++代码的编码/命名约定 它应该检查例如: 代码行以一定长度进行包装 私有变量的前缀为\uu 代码正确缩进 所有功能都有文档记录 我正在从事的许多项目都是由客户外包的,这些客户往往有各种内部编码和命名约定。GNU工具可以满足您的一些要求。不确定它是否可以检查文档,但其余的听起来是可行的,不知道这是否真的值得花时间,但是如果你真的想,你可以尝试构建类似的东西,它可以检查他们的文档 我个人认为,彻底的审查和人们遵守某些约定的承诺是确保代码“正确

我正在寻找一个脚本/工具,可以定制来检查和强制C/C++代码的编码/命名约定

它应该检查例如:

  • 代码行以一定长度进行包装
  • 私有变量的前缀为
    \uu
  • 代码正确缩进
  • 所有功能都有文档记录

我正在从事的许多项目都是由客户外包的,这些客户往往有各种内部编码和命名约定。

GNU工具可以满足您的一些要求。不确定它是否可以检查文档,但其余的听起来是可行的,不知道这是否真的值得花时间,但是如果你真的想,你可以尝试构建类似的东西,它可以检查他们的文档

我个人认为,彻底的审查和人们遵守某些约定的承诺是确保代码“正确缩进”和变量命名一致的更好方法。也许可以像谷歌那样投资制作一份文档,描述可接受风格的细节,让你公司的人接受并坚持下去

为什么人类比脚本更好?答案很简单:人们以后将不得不处理代码,他们应该关心他们正在编写的东西。像
i
这样的变量名对于脚本来说很合适,但不会从我的眼睛里溜走,如果它是
clientCount
,它应该被恰当地命名,能够做到这一点的脚本可能很快就会接管整个世界

将大量缩进工具包装在一个漂亮的GUI中。如果有什么适合你的,很可能包括在内。(是功能列表)支持所有主要操作系统

还有其他检查其他东西的工具:

用于安全和其他事项的皮棉

  • -在我工作场所的项目中使用(但我不知道任何细节)
对于Qt程序,您可以使用。查找、下载并运行它有点麻烦,因为它隐藏在KDE源代码树的深处(质量保证子目录…某处)。但一旦工作,它真的很酷。它检查各种可爱的东西。像未使用的Qt头。字符串利用率不好。缺少用户可见字符串的tr()语句、奇怪的迭代构造、点


不用说,所有提到的工具都是可定制的。

基本上,其他人都这么说了。但我可以指出:

  • 所有功能都有文档记录
无法通过工具进行真正的检查-它需要人眼和理解。我想我们都见过这样的事情:

//-------------------------------------------------------------
// Name: foo
// Purpose: 
// Returns: integer
//-------------------------------------------------------------

换句话说,样板文件“文档”告诉你的东西不多。这类事情只有通过代码审查才能根除。

如果你有很多钱,你应该看看
Klocwork
。它能够检查源代码是否符合样式指南。我在不同的商店都用过。建立和维护工作的“强>多/强”,但非常强大。

< P>我使用ScTooL制作的理解4 C++。它附带了perl和C api。然而,我为它编写了一个托管API。 此工具允许您扫描源代码并对其进行分析,就像反射对本机代码所做的那样。它可以很好地让您获得变量、类等的名称。。。我个人使用这个API编写了几十个静态分析工具。 使用此工具强制执行各种编码标准将是一件容易的事情尤其是变量名标准

该产品的链接为: 还有我的托管包装器:

您当然不希望any变量以
\uu
开头,在名称中使用
\u
的规则很复杂,因为编译器编写器等会保留一个好的数字。@Matthieu:只保留以两个下划线或下划线和大写字母开头的名称。只要他的所有私有变量都以下划线和小写字母(或下划线和数字)开头,就可以了。@Matthieu:在成员变量前面加上
\uuu
是一种非常常见且无问题的约定。以
开头的标识符仅保留在全局命名空间中。请参见例如@Adam,实际上,带有一个下划线前缀的名称保留在全局范围内。这些复杂的情况就是为什么我们中的许多人建议不要在名称前面加下划线的原因——这样就不用记住规则了。我喜欢GNU缩进,但它不测试编码和命名约定。cpplint似乎没有检查变量和类命名约定?