c++ - 推荐任何流行的 c++ 代码静态检查工具吗?

标签 c++ static-analysis static-code-analysis

<分区>

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

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

最佳答案

是的,使用自动化工具不太可能避免“错误代码”。

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

我还使用 -Werror 或/WX 进行编译。不幸的是,虽然 Linux 和 Windows header 现在看起来相当干净,但我从 boost header 中收到关于错误转换或错误使用宏之类的愚蠢警告。第 3 方库通常因警告而写得很糟糕。

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

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

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

特别是对于您的问题,Wi8kipedia 将“cpplint”描述为“cpplint 实现了 Google 认为的 C++ 编码中的“最佳实践””。我不知道那是什么意思,但维基百科页面有一个指向“Google C++ 风格指南”pdf 的链接。或者你可以试试看它提示什么:-)

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

关于c++ - 推荐任何流行的 c++ 代码静态检查工具吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017247/

相关文章:

c# - Visual Studio 代码分析错误 CA 1006

c++ - cppcheck - 终止Strncpy

c++ - cppcheck生成错误的xml结构

c++ - Xcode 8.3.3 C++ 中的错误语法突出显示

c++ - 如何设置bho的名称(在ie的插件选项中可见)

C++ const char* 在方法调用中带有字符串文字

c - 在 C 代码中查找 "fallthroughs"

c++ - 这是GDB本身的段错误吗?

java - Java的NPE注解场景和静态分析工具

c - 为什么稀疏报告 sizeof(bool) 警告?