0

我们团队有几个新的 c++ 人在工作,每天都有太多丑陋的代码!我讨厌那些使用只读字符串、STL 容器作为参数但没有 const 引用的函数!!!我疯了!!!

有没有静态代码检查器可以找到这些丑陋的代码?我需要在我们的 makefile 中使用这样的工具。

4

2 回答 2

3

是的,使用自动化工具不太可能防止“坏代码”。

对于我自己,我也在我的工作场所这样做,我总是打开尽可能多的警告(通常通过启用高级警告并只关闭“明显愚蠢”的警告;g++ 是唯一的例外因为它没有打开所有东西的选项,所以我做了 -Wall、-Wextra 和一大堆其他的 -W,偶尔会查看手册以查看是否添加了新警告)。

我还使用 -Werror 或 /WX 进行编译。不幸的是,虽然 Linux 和 Windows 头文件现在看起来相当干净,但我收到了一些愚蠢的警告,比如错误的强制转换或错误使用来自 boost 头文件的宏。3rd 方库通常写得很糟糕,警告。

至于静态分析工具,我确实尝试过 cppcheck 和 clang(这两个都是免费的,这就是我尝试它们的原因)。对他们中的任何一个都不感到兴奋;我仍然计划在我的构建软件中添加对其中一个或两个的支持,但它的优先级相当低。两者之一(不记得哪一个)实际上找到了一些东西:一个不必要的分配,任何体面的优化器无论如何都会删除它。我不认为我是一个完美的 0-bugs 开发人员,所以我责怪这些工具。不过,我确实删除了该任务:-)

如果我没记错的话,商业 VisualStudio 版本也有代码分析(在家里我更像是一个快递员,我在工作中坚持使用 MacOS 开发);也许那个更好。或其他商业工具之一;毕竟,他们必须为他们的钱提供一些东西。

还有一些额外的免费工具我还没有尝试过;我不知道如何完成http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B列表,但我希望最终尝试所有可以处理 C++ 的免费工具。

特别是对于您的问题,Wi8kipedia 将“cpplint”描述为“cpplint 实现了 Google 认为的 C++ 编码中的“最佳实践””。我不知道这意味着什么,但 Wikipedia 页面有一个指向“Google C++ Style Guide”pdf 的链接。或者你可以试试看它抱怨什么:-)

此外,我可能不想将此类工具添加到 Makefile(除非您的意思是暗示人们仍然必须调用“make check”才能实际运行它)。将其添加到源代码存储库以在允许之前检查新提交可能太耗时(代码分析几乎是“使用许多额外内容进行编译”,因此需要大量时间),但您可以随时自动运行它接着。

于 2012-08-18T09:29:02.173 回答
0

冻糕或皮棉,谷歌“静态分析工具”

如果您使用 GCC 将这些作为警告,您可能可以通过使用 -Wall 标志来获取其中的一些。

于 2012-08-18T08:56:03.750 回答