12

可能重复:
根据一组编码标准检查 C/C++ 源代码的免费工具?

我正在启动一个 c++ 项目,其中涉及我无法直接访问的几个人。我们就编码风格指南达成一致,例如根据可访问性定义类成员的大小写(即,pascal 情况下的 privates,camel 情况下的 publics 和 protected。请不要开始讨论风格指南。我受够了。谢谢。)。

我现在要做的是生成一些违反样式指南的报告。我不想强制执行样式指南,例如在提交时,但我想提供一个工具,每个开发人员都可以使用它来查看他/她的代码在哪里违反了样式指南(如果他/她想检查它)。

你知道可以完成这项工作的工具吗?

(它需要能够理解一些 C++,例如检测类成员的可访问性。)

4

3 回答 3

1

风格指南往往是特定于公司的,并且必须编写特定于公司的检查才能实现它们。

我的公司提供可定制的 C++ 样式检查器,其中可以通过语法检查已弃用的惯用语,检查变量和类型是否具有某些属性,或验证某些命令是否在本地以某些顺序出现。这些检查器在源代码上使用 C++ 方言精确解析器。定制并不容易;你需要底层引擎和一些解析 C++ 程序的知识。

可以编写检查布局的规则,但这是很多没有回报的工作,解决此类投诉并不是对程序员资源恕我直言的有效使用。如果你不打算强制执行你的风格,你为什么要抱怨程序员来惹恼程序员呢?IT 似乎更容易(正如另一张海报指出的那样)简单地运行一个布局格式化程序,它可以免费产生正确的结果给程序员。

通用格式化程序的问题之一是语言不精确,它们可能会误解源代码,有时会在格式化时破坏源代码,从而导致编译错误、调试和浪费时间。我们还提供C++ 格式化程序,以使用与样式检查器相同的语言精确解析器来完成格式化;他们无法在重新格式化期间破坏您的代码。

于 2012-05-30T18:12:04.763 回答
1

好吧,您可以在提交时通过AStyleUncrustify运行您的代码,这至少会将错误代码重新格式化为某种标准。我发现这是代码提交和标准的主要问题 - 如果您在提交后重新格式化,它会显示为许多完全微不足道的增量更改。

否则,请检查其他SO 答案

于 2012-05-30T15:37:30.030 回答
1

我已经成功地使用vera++工具为我们的项目执行此操作。我已经编写了许多规则(在 TCL 中)以采用我们的公司风格指南。这有点痛苦,直到我发现了我的检查报告的所有误报。至少它现在运行良好,并且我已将报告集成到 Jenkins 构建分析中。

这些报告也可以很容易地用于 Eclipse IDE 中的自定义错误分析。

于 2012-05-30T16:08:15.893 回答