【发布时间】:2009-01-04 16:46:06
【问题描述】:
我在一家拥有严格编码风格准则但没有自动验证它们的工具的公司工作。我环顾四周,我能找到的唯一工具是类似 lint 的工具,它们似乎旨在验证代码的功能,防止错误,而不是确保编码风格正确。
如果有的话,我们应该使用什么工具?
注意:我正在寻找适用于 C 代码的东西,尽管适用于 C++ 的东西也会很好。
【问题讨论】:
标签: c coding-style
我在一家拥有严格编码风格准则但没有自动验证它们的工具的公司工作。我环顾四周,我能找到的唯一工具是类似 lint 的工具,它们似乎旨在验证代码的功能,防止错误,而不是确保编码风格正确。
如果有的话,我们应该使用什么工具?
注意:我正在寻找适用于 C 代码的东西,尽管适用于 C++ 的东西也会很好。
【问题讨论】:
标签: c coding-style
传统美化器indent,可在每台 Unix 机器上使用。在一些上找到的版本是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
因此,在提交之前运行缩进可以保证呈现的一致性。如果您想强制执行它,请在您使用的版本控制系统中定义一个预提交挂钩,如果提交的版本与缩进产生的版本不同,它将运行缩进并拒绝提交。
【讨论】:
您正在寻找“code beautifier”。 Uncrustify 是免费的。
您只需能够在其配置文件中描述您的编码风格,它将确保每个文件都符合所描述的风格。
【讨论】:
AStyle 做你想做的事:
Artistic Style 是用于 C、C++、C# 和 Java 编程语言的源代码缩进器、格式化程序和美化器。
有一个可用于 Eclipse 的 AStyle Plugin。
Eclipse 也有代码格式化程序,但我不确定它是否适用于 CDT。
【讨论】:
有(或曾经)有很多工具可以做到这一点。最古老的一个是 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 年代中期曾短暂使用过它,但它希望我们做出的改变(非常必要,但)对管理来说太麻烦了。
【讨论】:
您可以使用clang-format。更多信息可以在官方网站上找到:
http://clang.llvm.org/docs/ClangFormat.html
【讨论】:
来自类似问题:Vera++:
Vera++ 是用于验证、分析和 C++源代码的转换。
预计 Vera++ 的主要使用场景有:
确保源代码符合给定的编码标准 和约定。
提供源代码指标和统计数据。
执行源代码的自动转换,范围从漂亮的打印到诊断,再到故障注入和高级测试。
【讨论】:
我反对在这里使用正式的工具。编码标准的最佳执行是同侪压力。团队成员之间的同侪压力和相互尊重是团队建设环境的关键要素......与有人无意中“破坏构建”时所必需的善意骚扰没有什么不同,等等。
审查新团队成员的代码是学习过程和融入团队以及学习编码标准等的关键部分。如果编码标准过于复杂或微妙而无法通过这种方式学习,那么改为在寻找验证标准的工具时,您应该寻找新的编码标准。
【讨论】:
试试UniversalIndentGUI,它是一个围绕流行的缩进器/美化器(例如 Uncrustify、Artistic Style 和 GNU Indent)的 GUI 包装器。它的 GUI 和实时预览功能使尝试不同的压头变得非常容易,一旦你找到了你喜欢的压头和配置,你可以导出配置甚至导出一个 shell 脚本。如果您仍在尝试,那就太好了。
【讨论】:
请使用 VIM 并享受轻松。 你可以通过简单的命令来做任何与源代码编程相关的事情。 您还可以通过编辑 .vimrc 文件使 VIM 更加可靠和强大。 里面的帮助对你有很大帮助。
/伦吉斯 g
【讨论】: