V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yazoox
V2EX  ›  C++

大型代码库的浏览,学习,查找引用,符号跳转等等,用什么工具比较好? visual studio 顶不住啊......

  •  
  •   yazoox · 15 天前 · 4097 次点击

    有一款老产品,c++写的代码,有十几二十年了吧。.vcproj 估计有几百个,代码行数没有上千万,几百万还是有的。源代码库拉下来,有几十 GB 吧......

    有时候,需要查看一下老代码,了解学习一下,某功能当初是怎么设计实现的(毕竟这么多年,当初写的人,不在公司了),现在的功能,需要按照或者参考以前的设计和实现。

    尝试过,建立一个 visual studio 的 solution,把所有的 projects 都添加进来,等 vs 的索引完毕,就能够跳转了,比如,go to definition or references,etc.。可是,这个时候,通常,vs (vs2019) 就“死机了”。

    目前做的是前端项目,也很大。查看代码,用 vscode,还行,顶得住。如果在远程的机器上,我就安装 neovim + coc + leaderF + ripgrep,也是可以正常使用的。

    但是,这个 c++的项目,不知道这个方法行不行。

    所以,来问问大家,有没有碰到过这样的情况,需要查看 /学习老的项目代码,该项目代码库又很庞大。怎么索引,代码跳转呢?谢谢。

    p.s. 现在在内部的 gitlab 上面直接搜索,效率太低了......

    p.s. 我的机器是至强的 32 核心,64G 内存, ssd 硬盘

    37 条回复    2021-04-08 15:41:09 +08:00
    feelapi
        1
    feelapi   15 天前
    sourceinsight, 唯一选择。几千万行的代码库都没问题。
    borisz
        2
    borisz   15 天前
    sourceinsight + 1
    bfdh
        3
    bfdh   15 天前
    sourceinsight + 1
    zzz0xxx
        4
    zzz0xxx   15 天前
    opengork
    nuistzhou
        5
    nuistzhou   15 天前 via iPhone
    GitHub 网页版的索引能满足吗
    yazoox
        6
    yazoox   15 天前
    @feelapi
    @borisz
    @bfdh
    还别说,你们一提,我想起来了。多年以前,我做 c++项目的时候,还用过 source insight 。
    刚才去看了一眼,这么多年过去了,这产品,咋没有啥变化啊......
    zhongrs232
        7
    zhongrs232   15 天前
    @yazoox 更新到 source insight4.0 了,支持 utf-8 和 GBK 编码,对中文的支持更友好一些
    shylockhg
        8
    shylockhg   15 天前
    挺好奇全量编译一次要多久
    scinart
        9
    scinart   15 天前
    opengrok + 1
    yazoox
        10
    yazoox   15 天前
    @shylockhg
    一个半小时左右
    minami
        11
    minami   15 天前   ❤️ 1
    都说 sourceinsight,我说个 understand 吧,跨平台版的 sourceinsight
    justforlook44444
        12
    justforlook44444   15 天前
    source insight mac 上能用吗
    typetraits
        13
    typetraits   15 天前
    我看 Chromium 源码,git repo 35G 左右吧,代码 15G,我用 VSCode + vscode-clangd 扩展,利用 Chromium 里面提供的脚本生成 compile_commands.txt ,直接打开项目目录就可以,clangd 索引完成前每打开一个新文件需要等待几秒,索引完成之后跳转、查找关键字速度就都很快了
    elmagnificogg
        14
    elmagnificogg   15 天前 via Android
    source insight
    786375312123
        15
    786375312123   15 天前
    @yazoox 那这个项目也不大啊,我这里有三个编译时间都在一个半小时左右的项目。用 vs 基本都可以正常打开,调试。不过是工作站级别的机器
    xuanbg
        16
    xuanbg   15 天前
    从不抱着学习的目的去看大型代码库。屎山代码有什么好看的
    FrankHB
        17
    FrankHB   15 天前
    C 艹屎山还指望啥查找引用,记明白标识符直接开个 cmd rg 一把梭基本上都比 clangd 靠谱,更别说什么 VS 了……
    comi
        18
    comi   15 天前
    sourceinsight
    ch2
        19
    ch2   15 天前 via iPhone
    还是放弃那些功能比较实在
    poringking
        20
    poringking   14 天前
    domodomo
        21
    domodomo   14 天前
    source-insight+1,几年前常用
    很多 C 艹商业大型代码库里面的编码水平都不咋地,可以说又丑又烂,有些能运行起来都是奇迹
    seesky
        22
    seesky   14 天前
    要不考虑下 scitools understand,
    LANB0
        23
    LANB0   14 天前
    sourceinsight + 1
    pythonee
        24
    pythonee   14 天前 via Android
    source insights
    Mithril
        25
    Mithril   14 天前
    Visual Studio 这东西除非你是 SSD,不然就它那个 32bit 的 devenv,装几个插件打开个大型工程就直接炸了。一般项目太大就直接拆 sln 了,或者只加载必要的项目。
    如果只看代码的话其实不需要真的语义分析建立索引,只需要 token 能查到就行了。跳转不那么精准也能忍。opengrok 或者 sourcegraph 这种基本也就够了。
    52coder
        26
    52coder   14 天前
    sourceinsight + 1,转到 mac 后唯一不习惯的地方,渐渐开始用 clion
    52coder
        27
    52coder   14 天前
    想要一款跨平台的,目前感觉还是 sourceinsight 顺手
    tanranran
        28
    tanranran   14 天前
    @Mithril #25 LZ 的是至强的 32 核心,64G 内存, ssd 硬盘
    HangoX
        29
    HangoX   14 天前
    https://sourcegraph.com/github.com/square/okhttp 简单浏览都是用这个,网页版直接看
    JJFJJ
        30
    JJFJJ   14 天前
    曾经开发 VNDK,开发编译都是 ubuntu,虽然可以 wine 下安装 source insight 但是使用不是很好。最后的解决办法是:ubuntu 安装 samba,把工程目录共享给 windows 电脑使用,在 windows 上进行代码阅读编辑
    gxm44
        31
    gxm44   14 天前
    sourceinsight + 1
    zhusimaji
        32
    zhusimaji   14 天前
    sourceinsight 当年写固件的时候用的神器
    mxi1
        33
    mxi1   14 天前 via Android
    根据编译过程,生成 compdb,一般叫 compile_commnads.json
    mxi1
        34
    mxi1   14 天前 via Android
    不小心按到回车了,compdb 是很多 IDe 都支持的,比如 vs code,你可以上网搜搜怎么生成和使用
    binux
        35
    binux   14 天前 via Android
    @typetraits 直接 https://source.chromium.org/ 搜索它不香吗?
    macha
        36
    macha   14 天前
    只有 sourceinsight 一条路可走了。别的要么扛不住,要么不好用。
    sunbreak
        37
    sunbreak   13 天前
    @JJFJJ WSL 2 挺好用的
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1754 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:28 · PVG 00:28 · LAX 09:28 · JFK 12:28
    ♥ Do have faith in what you're doing.