有什么好的 C/C++代码分析工具吗?

2019-05-13 00:28:23 +08:00
 trav

最近一直在找 C/C++静态分析工具,一找下来感觉都是分析代码中可能的 bug 之类的(Cppcheck, Doxygen..),

我的目标很简单,就是给出 .h .cpp .c 文件,然后让找出里面指定类型的名称,比如函数名字,字符串。。。

python 里面倒是有一个 pycparser,可只是针对 C 语言的,我想要 C/C++都支持的。

这个需求感觉就是那些个高大上工具分析过程的其中一个小过程,

问下大家有没有这个类似的工具或者库能用的。。

6136 次点击
所在节点    程序员
20 条回复
pagxir
2019-05-13 01:20:14 +08:00
你需要的是 lxr,用来看 mozilla 跟 linux 源代码的那个
Mithril
2019-05-13 02:26:02 +08:00
你可以用 ANTLR 自己写个,C++的话有写好的语法文件,ANTLR 生成 Parser 以后你自己在对应的回调函数里处理一下就好了。
或者只是看 Token 的话 OpenGrok 一类的软件都可以,它用的是 CTags 做的 Parser
Kirscheis
2019-05-13 05:21:49 +08:00
感觉你说的东西不就是 symbol table 吗。。想比较方便地查的话,gdb 和 lldb 似乎都行。。
Qiaogui
2019-05-13 06:13:28 +08:00
你可以使用 flex 和 bison,网上有关于 anscii cpp 的标准 grammar 文件,拷贝进去,在你要的语法产生式后面写上导出的代码就可以了。
luozic
2019-05-13 06:13:53 +08:00
你这个需要的是看看能不能把 ide 属性标记的代码拆出来。
Qiaogui
2019-05-13 06:15:21 +08:00
顺带一提,flex 是词法,bison 是语法,两个都要拷。
luozic
2019-05-13 06:18:04 +08:00
https://www.jianshu.com/p/466ebbcb5f0e
现在一般都是跟踪继承 ,这跟踪一个个参数有啥用?
dangyuluo
2019-05-13 06:33:18 +08:00
pclint,好用
missdeer
2019-05-13 08:08:35 +08:00
opengrok
Destiny97
2019-05-13 08:24:20 +08:00
source insight 我觉得还不错
345161974
2019-05-13 09:07:54 +08:00
source insight
chinese_zmm
2019-05-13 09:09:46 +08:00
kclockwork
HannibaI
2019-05-13 09:10:56 +08:00
srt180
2019-05-13 09:18:40 +08:00
顶一波楼上 clang
reus
2019-05-13 09:21:03 +08:00
https://clang.llvm.org/docs/index.html

看 Using Clang as a Library 一节

LibTooling 结合 RecursiveASTVisitor 可以实现你想要的
nilbot
2019-05-13 09:23:03 +08:00
clangd 和 /或 cquery
jxf2008
2019-05-13 09:35:38 +08:00
颤抖中。。。。。
我也是学 C++的,为啥你们说的我一个都不认识。。
yujincheng08
2019-05-13 09:37:50 +08:00
libclang 了解一下
eliteYang
2019-05-13 10:26:39 +08:00
cppcheck
sonarqube
zwh2698
2019-05-13 10:36:57 +08:00
你找的应该是从词法到语义的分析器吧, 推荐 Visual Parse++

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/563467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX