代码之家  ›  专栏  ›  技术社区  ›  panofish

如何搜索自己的源代码库?

  •  19
  • panofish  · 技术社区  · 15 年前

    我用Perl、HTML、CSS、PHP、javascript、autohotkey脚本等多种文件格式编写/修改代码…等。

    我经常在我个人的源代码库中搜索语法或复杂逻辑的示例,以便在新代码中重用。或者,我将在目录树中搜索特定字符串的代码引用(例如,Perl、PHP、HTML和JavaScript中对特定CSS样式的所有引用)。有时我甚至会搜索=~,因为我在一个Perl程序中搜索一个特定的正则表达式。

    有时我使用哥白尼搜索现有代码,但不幸的是,它只能搜索单词并自动忽略任何编程语法。Windows 7文件搜索似乎比Windows XP文件搜索更差。

    我的问题是…如何搜索自己的源代码库?

    16 回复  |  直到 12 年前
        1
  •  5
  •   Community CDub    8 年前

    我通常在我的IDE中使用搜索功能(nusphere phped)。它相当快,允许我按文件类型进行过滤。Windows的搜索功能是无用的,而且在每一个新版本中都会变得更糟。

    不管怎样,我问了一个关于 programming-friendly search programs 一会儿回来。也许其中一个答案有帮助。

        2
  •  13
  •   Larry Shatzer    12 年前

    我以前用 find | xargs grep 直到我找到为止 ack . 现在我用了很多。

        3
  •  6
  •   Greg Bacon    15 年前

    使用Cygwin:

    $ find /path/to/lib -name \*.pm | xargs grep -l foo
    

    一定要引用一些时髦的操作符,这样shell就可以让它们单独存在, 例如 ,

    $ find . | xargs grep '=~'
    
        4
  •  3
  •   Kees de Kooter chotai.mit    15 年前

    使用谷歌桌面索引和全文搜索您的源文件。

        5
  •  3
  •   Jared    15 年前

    下载 Cygwin 学会使用 Grep 包括在里面。您可能可以获得grep的本机版本,但是cygwin有很多有用的东西,所以我只安装所有可用的软件包。

        6
  •  1
  •   Ty W    15 年前

    我打开项目,我相信所需的代码在里面,并使用我的编辑器的“在项目中查找”选项。

        7
  •  1
  •   user177800    15 年前

    OSX有一个名为spotlight的东西和一个名为mdfind的命令接口。如果你在Mac上,这些是最好的本地搜索工具。

        8
  •  0
  •   Pascal MARTIN    15 年前

    当我必须做那种搜索的时候 (即,我想找到代码的准确部分) ,或者使用EclipsePDT的“Search into directory”或“Search into directory by regex”功能。 (我正在使用的IDE) 或最终使用 grep 在命令行上。

    (对于使用Windows和/或不喜欢CLI的用户,有一些图形工具的作用类似于 格雷普 --我见过一些同事使用它们)

        9
  •  0
  •   Robert Deml    15 年前

    具有一致的命名方案。它是memset()还是setmem()?initializeuart()或uartinitialize()或uartinitialize()或uartinit()?

        10
  •  0
  •   SOA Nerd    15 年前

        11
  •  0
  •   Ozzie Perez    15 年前

    TotalCommander 的搜索功能

        12
  •  0
  •   richo    15 年前

    我通常知道我将要做一些有点挑剔的事情,所以我在这一部分附近猛击了一条评论。评论中应该有足够的关键词,以便我找到我想要的内容。

    那么这只是一个关于find/grep组合的案例。

        13
  •  0
  •   Wayne Conrad    15 年前

    由于我花了一天的大部分时间疯狂地在emacs中键入随机的代码位,而徒劳地希望其中一个可以做一些有用的事情,所以我经常使用emacs 查找DIRD 命令:

    • Meta-x find-dired
    • 输入目录的路径,在该目录下我将找到有趣的代码
    • 当它要求我查找参数时,输入(例如): -name '*.rb'
    • 当它显示匹配文件的列表时, %m. 全部选择(用于Emacs的明显键映射)
    • 然后 meta-A 并输入搜索字符串。
    • Meta-, (还有另一个很明显的键映射)转到下一个匹配。

    如果这不是一个20美元的工具用来解决10美分问题的伟大例子,我不知道是什么。

        14
  •  0
  •   Thomas Pornin    15 年前

    对于C代码,我使用BSD编码样式,它声明一个名为 foo 应这样定义:

    char *
    foo(int x)
    {
        ...
    }
    

    使用这种样式,函数定义是源代码中唯一一个可以在行首显示函数名的位置。那么使用grep只是一个问题:

    grep '^foo' **/*.c
    

    这个把戏过滤掉了 惯例用法 功能,集中在 定义 .

    什么时候? **/*.c 生成太多的文件名(对于非常大的源代码树),然后 find 将被使用:

    find src -name \*.c -exec grep '^foo' '{}' +
    

    注意这里的用法 + 具有 -exec :这将取代 xargs .

        15
  •  0
  •   panofish    15 年前

    Pekka提供的链接为我提供了迄今为止最好的答案。

    Powergrep是最接近我所寻找的解决方案。 这并不完美,但对于Windows GUI解决方案来说…我喜欢它。

        16
  •  0
  •   Ira Baxter    15 年前

    SD Source Code Search Engine . 这将源代码分解为与每种语言的元素(关键字、标识符、字符串、常量、数字、运算符)相对应的片段。您可以对仅限于一种类型(代码)文件、特定文件集和匹配的标识符进行公式化搜索。 在所有文件中,setc。

    搜索引擎预先对代码进行索引,以便能够以远比grep快的速度搜索数千个文件,它在一个GUI窗口中显示点击,在另一个窗口中显示所选点击的完整源代码。您可以在源代码上启动编辑器。