当前位置:  开发笔记 > 编程语言 > 正文

有哪些开源C++静态分析工具?

如何解决《有哪些开源C++静态分析工具?》经验,为你挑选了8个好方法。

Java有一些非常好的开源静态分析工具,如FindBugs,Checkstyle和PMD.这些工具易于使用,非常有用,可在多个操作系统上运行并且免费.

可以使用商业C++静态分析产品.虽然拥有这样的产品很棒,但是学生的成本太高,而且通常很难获得试用版.

另一种方法是找到可在多个平台(Windows和Unix)上运行的开源C++静态分析工具.通过使用开源工具,可以对其进行修改以满足特定需求.寻找工具并非易事.

下面是其他人发现或建议的C++静态分析工具的简短列表.

C++检查http://sf.net/projects/cppcheck/

Oink http://danielwilkerson.com/oink/index.html

C和C++代码计数器http://sourceforge.net/projects/cccc/

夹板(来自答案)

Mozilla的猪肉(来自答案)(现在是Oink的一部分)

Mozilla的Dehydra(来自答案)

使用-Weffc++GNU g ++ 选项(来自答案)

什么是其他任何人都知道并可以推荐的便携式开源C++静态分析工具?

一些相关链接.

/sf/ask/17360801/

http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

http://www.chris-lott.org/resources/cmetrics/

一个免费的工具,根据一组编码标准检查C/C++源代码?

http://spinroot.com/static/

选择静态代码分析工具

Soo Wei Tan.. 74

CppCheck是开源和跨平台的.

Mac OSX:

brew install cppcheck


Nicola Bonel.. 53

关于GNU编译器,gcc已经有一个内置选项,可以为-Wall的那些启用额外的警告.选项是-Weffc ++,它是关于违反Scott Meyers在他的书" 有效和更有效的C++ "中发表的一些指导原则.

特别是该选项检测以下项目:

为具有动态分配的内存的类定义复制构造函数和赋值运算符.

首选初始化为构造函数中的赋值.

在基类中使析构函数虚拟化.

让"operator ="返回对*this的引用.

必须返回对象时,请勿尝试返回引用.

区分增量和减量运算符的前缀和后缀形式.

永远不要超载"&&","||"或",".

哎呀,`-Weffc ++`警告大约*吨*的构造在大型代码库中完美无缺.我赞成了`-Wextra`的建议; 没有它就不要离开家! (22认同)

除了gcc的-Wall和-Weffc ++之外,-Wextra还做了一些很好的自由静态分析,例如,不返回值的分支,或者检查unsigned是否小于零.值得注意的是,专业程序员经常认为后者是个好主意... (7认同)


Don Wakefiel.. 29

目前正在开发中,但clang做了C分析,并且随着时间的推移有针对性地处理C++.它是LLVM项目的一部分.

更新:当着陆页显示"分析仪是一个持续的工作进行中"时,它现在被记录为C和C++的静态分析器.

问题:如何运行GCC/Clang进行静态分析?(仅限警告)

编译器选项:-fsyntax-only



1> Soo Wei Tan..:

CppCheck是开源和跨平台的.

Mac OSX:

brew install cppcheck



2> Nicola Bonel..:

关于GNU编译器,gcc已经有一个内置选项,可以为-Wall的那些启用额外的警告.选项是-Weffc ++,它是关于违反Scott Meyers在他的书" 有效和更有效的C++ "中发表的一些指导原则.

特别是该选项检测以下项目:

为具有动态分配的内存的类定义复制构造函数和赋值运算符.

首选初始化为构造函数中的赋值.

在基类中使析构函数虚拟化.

让"operator ="返回对*this的引用.

必须返回对象时,请勿尝试返回引用.

区分增量和减量运算符的前缀和后缀形式.

永远不要超载"&&","||"或",".


哎呀,`-Weffc ++`警告大约*吨*的构造在大型代码库中完美无缺.我赞成了`-Wextra`的建议; 没有它就不要离开家!
除了gcc的-Wall和-Weffc ++之外,-Wextra还做了一些很好的自由静态分析,例如,不返回值的分支,或者检查unsigned是否小于零.值得注意的是,专业程序员经常认为后者是个好主意...

3> Don Wakefiel..:

目前正在开发中,但clang做了C分析,并且随着时间的推移有针对性地处理C++.它是LLVM项目的一部分.

更新:当着陆页显示"分析仪是一个持续的工作进行中"时,它现在被记录为C和C++的静态分析器.

问题:如何运行GCC/Clang进行静态分析?(仅限警告)

编译器选项:-fsyntax-only



4> 小智..:

Oink是一个建立在Elsa C++前端之上的工具.Mozilla的Pork是Elsa/Oink的一个分支.

请参阅:http://danielwilkerson.com/oink/index.html



5> David Stone..:

其他人提到了-Weffc ++,但这实际上是我默认情况下没有打开的唯一GCC警告之一.但是,我打开的警告集是我的工具包中最重要的静态分析工具.您可以看到推荐警告的完整列表.

综上所述:

-pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat = 2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold -style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow = 5 -Wswitch-default -Wundef -Werror -Wno-unused

请注意,其中一些需要新版本的gcc,因此如果您再次使用4.5或其他内容,则可能需要从列表中删除它们.



6> Lucas Cimon..:

John Carmack还在这篇关于"静态代码分析"的有趣博客文章中提到了PVS-Studio.


它既不是"开源",也不是那个词的任何意义上的"自由".它是众所周知的静态分析工具(我认为仅次于覆盖率),但它的价格相当高.

7> user15071..:

如果通过开源,你真的意味着"免费",那么微软的早期分析是一个很好的分析.Windows仅限课程.它完全集成在Visual Studio和编译器中.例如:

cl /analyze Sample.cpp



8> Daniel James..:

Mozilla的静态分析工作可能值得一看.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有