V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yazoox
V2EX  ›  程序员

请教一下在已有代码库中快速搜索代码的技巧。比如,使用 rg 这种工具。有没相关主题文章?

  •  
  •   yazoox · Mar 4, 2021 · 3278 views
    This topic created in 1880 days ago, the information mentioned may be changed or developed.

    假定,现在有一个需求,公司的产品将只支持 chrome 浏览器 88 以上的版本,让我去改代码。 需求很简单吧,只要找到位置,改一下版本验证。可是,当初写代码的人走了,其他人都不知道在哪里。

    那这个时候就要去搜索代码了。

    比如,我现在用 rg 工具( vim 下,leaderF 自带的,其他相关的支持正则表达式的工具应该类似),怎么搜索呢?

    直接“chrome version” 会把两个单词看成一体的,而不是“或”的关系。

    其实,我知道这个的本质上就是正则表达式的书写。 以前也专门花时间去学习过相关的内容。 但是这玩意儿好像用的次数很少,等到用的时候以前学的又都忘光了。

    所以有没有那种 cheatsheets,或者,把常用的搜索源代码的一些正则表达式总结一下。

    23 replies    2023-05-30 08:37:04 +08:00
    superrichman
        1
    superrichman  
       Mar 4, 2021 via iPhone
    ctrlsf.vim
    cslive
        2
    cslive  
       Mar 4, 2021
    JetBrains 全家桶双击 shift
    hengstchon
        3
    hengstchon  
       Mar 4, 2021 via Android
    chrome.*?version|version.*?chrome
    jfhy0901
        4
    jfhy0901  
       Mar 4, 2021 via Android
    全局查找,一般用 jetbrains
    AutumnVerse
        5
    AutumnVerse  
       Mar 4, 2021
    jetbrains 全家桶都行。如果需要自己造的话写脚本导入 es,然后用 es 搜索
    huang86041
        6
    huang86041  
       Mar 4, 2021
    你永远不知道别人写的变量名是什么,还不如搜这个人的修改记录.
    yazoox
        7
    yazoox  
    OP
       Mar 4, 2021
    @cslive @jfhy0901 @jiangwei2222 没看懂,这个 jetbrains 全局查找有啥特别么?
    xarthur
        8
    xarthur  
       Mar 4, 2021 via iPhone
    fzf
    xarthur
        9
    xarthur  
       Mar 4, 2021 via iPhone
    还有 ag
    aloxaf
        10
    aloxaf  
       Mar 4, 2021
    请好好学习正则表达式
    Hconk
        11
    Hconk  
       Mar 4, 2021
    这种我都是从界面的字符串搜索入手,比如弹出框不支持,那就搜弹出的字符串,找到调用的的地方 ,回溯调用关系,很快就定位到了。猜变量名不太靠谱。
    lightjiao
        12
    lightjiao  
       Mar 4, 2021
    @yazoox #7 用过的 IDE 中,Jetbrain 系列的全文字符串搜索是最快的
    lightjiao
        13
    lightjiao  
       Mar 4, 2021
    @lightjiao #12 我用过的是指代 VS 、Jetbrains 、VScode 、Sublime
    itechify
        14
    itechify  
    PRO
       Mar 4, 2021 via Android
    用 idea 打开,想怎么搜就怎么搜
    UserDMM
        15
    UserDMM  
       Mar 4, 2021
    我一般用类似于 Anytxt searcher 这种全局全文检索工具来搜索,还可以预览代码查看上下文,个人觉得很方便。
    现在对于我来说,和 Everything 一样,是必不可少的工具了。
    推荐给你试试
    YoRolling
        16
    YoRolling  
       Mar 4, 2021
    当然是 tldr 啊
    renmu123
        17
    renmu123  
       Mar 4, 2021 via Android
    你重新写一个把他那个覆盖得了😏😏
    CEBBCAT
        18
    CEBBCAT  
       Mar 4, 2021
    在这种问题上我不太相信正则或者说"chrome.*?version"这样的匹配模式能帮助你找到相关代码,从业务入手才是关键,

    比如楼上 @Hconk 说的从文案入手,或者我建议从业务逻辑入手,去找那些程序入口处的代码,抑或者如果知道怎么触发之前的旧逻辑,那就触发一次看看日志是哪里输出的
    tusj
        19
    tusj  
       Mar 4, 2021
    “需求很简单吧,只要找到位置,改一下版本验证”
    rrfeng
        20
    rrfeng  
       Mar 4, 2021
    git grep 不行吗?
    yazoox
        21
    yazoox  
    OP
       Mar 4, 2021
    @tusj 兄弟,我明白你的意思。很多时候,找到代码在哪里,可能都不止一天。我只是举个例子。我就是想知道搜索代码的常用 regex
    tusj
        22
    tusj  
       Mar 4, 2021
    @yazoox 其实是我看到这句,突然有种一言难尽的感觉。
    1 可能以前的代码里就没有判断版本的地方,所以怎么搜都搜不到。
    2 这样简单地一刀切方案通常都是坑,大概率过两几天发现大多用户访问有问题,又得改回来。

    最后就是,我一般不会一次写很复杂的正则去搜,先:grep -iR version ./ 整个目录树递归搜一把,先观察结果有多少。如果量少,几十行,就一个个看。如果量大,几百行,再接管道补充条件:grep -iR version ./ | grep -i chrome
    bigtang
        23
    bigtang  
       May 30, 2023
    chromium 的源代码 tanglib.com 可以全文检索, ”chrome version“ 不连在一起搜索可以搜索 chrome "version"
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1058 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 18:53 · PVG 02:53 · LAX 11:53 · JFK 14:53
    ♥ Do have faith in what you're doing.