• 请不要在回答技术问题时复制粘贴 AI 生成的内容
trav
V2EX  ›  程序员

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

  •  
  •   trav ·
    travmygit · May 13, 2019 · 7264 views
    This topic created in 2570 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    20 replies    2019-05-13 10:36:57 +08:00
    pagxir
        1
    pagxir  
       May 13, 2019 via Android
    你需要的是 lxr,用来看 mozilla 跟 linux 源代码的那个
    Mithril
        2
    Mithril  
       May 13, 2019
    你可以用 ANTLR 自己写个,C++的话有写好的语法文件,ANTLR 生成 Parser 以后你自己在对应的回调函数里处理一下就好了。
    或者只是看 Token 的话 OpenGrok 一类的软件都可以,它用的是 CTags 做的 Parser
    Kirscheis
        3
    Kirscheis  
       May 13, 2019 via Android
    感觉你说的东西不就是 symbol table 吗。。想比较方便地查的话,gdb 和 lldb 似乎都行。。
    Qiaogui
        4
    Qiaogui  
       May 13, 2019 via Android
    你可以使用 flex 和 bison,网上有关于 anscii cpp 的标准 grammar 文件,拷贝进去,在你要的语法产生式后面写上导出的代码就可以了。
    luozic
        5
    luozic  
       May 13, 2019 via iPhone
    你这个需要的是看看能不能把 ide 属性标记的代码拆出来。
    Qiaogui
        6
    Qiaogui  
       May 13, 2019 via Android
    顺带一提,flex 是词法,bison 是语法,两个都要拷。
    luozic
        7
    luozic  
       May 13, 2019 via iPhone
    https://www.jianshu.com/p/466ebbcb5f0e
    现在一般都是跟踪继承 ,这跟踪一个个参数有啥用?
    dangyuluo
        8
    dangyuluo  
       May 13, 2019
    pclint,好用
    missdeer
        9
    missdeer  
       May 13, 2019
    opengrok
    Destiny97
        10
    Destiny97  
       May 13, 2019 via Android
    source insight 我觉得还不错
    345161974
        11
    345161974  
       May 13, 2019
    source insight
    chinese_zmm
        12
    chinese_zmm  
       May 13, 2019 via iPhone
    kclockwork
    HannibaI
        13
    HannibaI  
       May 13, 2019
    srt180
        14
    srt180  
       May 13, 2019
    顶一波楼上 clang
    reus
        15
    reus  
       May 13, 2019
    https://clang.llvm.org/docs/index.html

    看 Using Clang as a Library 一节

    LibTooling 结合 RecursiveASTVisitor 可以实现你想要的
    nilbot
        16
    nilbot  
       May 13, 2019 via Android
    clangd 和 /或 cquery
    jxf2008
        17
    jxf2008  
       May 13, 2019   ❤️ 1
    颤抖中。。。。。
    我也是学 C++的,为啥你们说的我一个都不认识。。
    yujincheng08
        18
    yujincheng08  
       May 13, 2019 via Android
    libclang 了解一下
    eliteYang
        19
    eliteYang  
       May 13, 2019
    cppcheck
    sonarqube
    zwh2698
        20
    zwh2698  
       May 13, 2019
    你找的应该是从词法到语义的分析器吧, 推荐 Visual Parse++
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3681 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 10:26 · PVG 18:26 · LAX 03:26 · JFK 06:26
    ♥ Do have faith in what you're doing.