我在一家公司工作,该公司有严格的编码规范,但没有自动验证工具。我搜索了一下,发现唯一能找到的工具都是类似于lint工具,看起来是为了验证代码功能和防止错误,而不是确保编码风格正确。
如果需要的话,我们应该使用哪个工具呢?
注意:我正在寻找适用于C代码的工具,尽管适用于C ++的工具也很好。
我在一家公司工作,该公司有严格的编码规范,但没有自动验证工具。我搜索了一下,发现唯一能找到的工具都是类似于lint工具,看起来是为了验证代码功能和防止错误,而不是确保编码风格正确。
如果需要的话,我们应该使用哪个工具呢?
注意:我正在寻找适用于C代码的工具,尽管适用于C ++的工具也很好。
在每台Unix机器上都可以使用的传统代码美化工具是indent。某些机器上找到的版本是GNU indent,它可以在每台机器上编译和安装。 GNU indent可以从文件~/.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
因此,在提交之前运行缩进可以确保呈现的统一性。如果您想要强制执行,请在您使用的版本控制系统中定义一个预提交挂钩,该挂钩将运行缩进,并拒绝提交,如果提交的版本与缩进生成的版本不同。
有(或曾经有)许多这样的工具。其中最古老的之一是cb
(C美化器),它出现在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
是一种更加复杂和可配置的工具。商业工具也有很多,例如Abraxas Software提供了一个CodeCheck工具,我们在90年代中期短暂使用过,但它要求我们进行的更改对管理层来说(非常必要,但是)过于侵入性。
从类似的问题中得知:Vera++:
Vera++是一个可编程的用于验证、分析和转换C++源代码的工具。
Vera++主要使用场景包括:
确保源代码符合给定的编码标准和约定。
提供源代码度量和统计信息。
执行自动化源代码转换,可以从漂亮的打印到诊断、故障注入和高级测试等范围内。