C的编码样式检查器

我正在为一家公司工作,该公司有严格的编码风格指导,但没有自动工具来validation它们。 我环顾四周,我能找到的唯一工具是lint之类的工具,似乎旨在validation代码的作用,防止错误而不是确保编码风格是正确的。

我们应该使用什么工具,如果有的话?

注意:我正在寻找C代码的东西,尽管适用于C ++的东西也会很好。

传统的美化缩进 ,可在每台Unix机器上使用。 在某些版本上找到的版本是GNU缩进 ,可以在每台机器上编译和安装。 GNU缩进可以从文件~/.indent.pro读取一组规则,例如:

 --original --dont-format-first-column-comments --no-blank-lines-after-commas --parameter-indentation 8 --indent-level 8 --line-length 85 --no-space-after-parentheses --no-comment-delimiters-on-blank-lines 

因此,在提交之前运行缩进可以保证演示的一致性。 如果要强制执行它,请在您使用的版本控制系统中定义一个预提交钩子,如果提交的版本与缩进产生的版本不同,它将运行缩进并拒绝提交。

您正在寻找’ 代码美化 ‘。 Uncrustify是一个免费的。

您只需要能够在其配置文件中描述您的编码样式,并确保每个文件都符合所描述的样式。

AStyle做你想要的:

Artistic Style是C,C ++,C#和Java编程语言的源代码压缩器,格式化器和美化器。

有一个适用于Eclipse的AStyle插件 。

Eclipse也有一个代码格式化程序,但我不确定它是否适用于CDT。

有(或有)许多工具。 其中最古老的一个是cb (C Beautifier),它出现在Unix的古老版本中 – 意味着,在这种情况下,版本7 Unix:

 CB ( 1 ) UNIX Programmer's Manual CB ( 1 ) NAME cb – C program beautifier SYNOPSIS cb DESCRIPTION Cb places a copy of the C program from the standard input on the standard output with spacing and indentation that displays the structure of the program. BUGS 

GNU indent是一个非常复杂和可配置的beastie。 还有商业工具。 例如, Abraxas Software提供了CodeCheck工具,例如; 我们在90年代中期曾短暂地使用过它,但它希望我们做出的改变(非常必要,但是)对管理过于干扰。

你可以使用clang-format 。 更多信息可以在官方网站上找到: http : //clang.llvm.org/docs/ClangFormat.html

我反对在这里使用正式工具。 编码标准的最佳执行是同伴压力。 团队成员之间的同伴压力和相互尊重是团队建设环境的关键要素……当有人无意中“破坏构建”等时,必须进行良好的性质骚扰。

审查新的团队成员的代码是学习过程的关键部分,并融入团队和学习编码标准等。如果编码标准过于复杂或微妙,无法以这种方式获取,那么而不是寻找一个validation标准的工具,你应该寻找新的编码标准。

试试UniversalIndentGUI ,它是流行的压头/美化器的GUI包装器,如Uncrustify,Artistic Style和GNU Indent。 它的GUI和实时预览function使得尝试不同的压头非常容易,一旦你找到了你喜欢的压头和配置,就可以导出配置甚至导出shell脚本。 很棒,如果你还在努力解决问题。

从类似的问题: Vera ++ :

Vera ++是一个用于validation,分析和转换C ++源代码的可编程工具。

Vera ++预见的主要使用场景是:

确保源代码符合给定的编码标准和约定。

提供源代码指标和统计信息。

执行源代码的自动转换,范围从漂亮打印到诊断到故障注入和高级测试。

请使用VIM并享受轻松。 您可以通过简单的命令执行与源编程相关的任何操作。 您还可以通过编辑.vimrc文件使VIM更加可靠和强大。 它的帮助将帮助你很多。

/ renjith g