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

时间:2010-01-26 20:09:09

标签: language-agnostic

我用多种文件格式编写/修改代码,如perl,html,css,php,javascript,autohotkey脚本等等。

我经常在我的个人源代码库中搜索语法或复杂逻辑的示例,以便在新代码中重用。或者,我将在目录树中搜索特定字符串的代码引用(例如,对perl,php,html和javascript中特定css样式的所有引用)。有时我甚至会搜索像=〜这样的神秘字符串,因为我在我的一个perl程序中搜索特定的正则表达式。

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

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

16 个答案:

答案 0 :(得分:13)

我曾经使用find | xargs grep技巧,直到找到ack。现在我用了很多。

答案 1 :(得分:6)

使用Cygwin:

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

一定要引用时髦的运算符,以便shell单独留下它们,例如

$ find . | xargs grep '=~'

答案 2 :(得分:5)

我通常在IDE(nuSphere phpEd)中使用搜索功能。它速度相当快,允许我按文件类型进行过滤。 Windows的搜索工具毫无用处,并且在每个新版本中都会变得更糟。

无论如何,我前一段时间问了一个关于programming-friendly search programs的问题。也许其中一个答案有帮助。

答案 3 :(得分:3)

使用Google桌面对源文件进行索引和全文搜索。

答案 4 :(得分:3)

下载Cygwin并学习使用随附的Grep。您可以获得grep的原生版本,但Cygwin有很多有用的东西,所以我只安装所有可用的包。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

OSX有一个名为SpotLight的东西和一个名为mdfind的命令接口。如果您使用的是Mac,那么这些是您可以拥有的最佳本地搜索工具。

答案 7 :(得分:0)

当我必须进行那种搜索(即我想找到代码的确切部分)时,我会使用“搜索目录”或“通过正则表达式搜索到目录” “Eclipse PDT (我正在使用的IDE)的功能,或者最终在命令行中使用grep

(对于那些在Windows上和/或不喜欢CLI的人,有一些图形工具就像grep - 我见过一些同事使用它们)

答案 8 :(得分:0)

拥有一致的命名方案。是memset()还是setmem()? InitializeUart()或UartInitialize()或UARTInitialize()或UARTInit()?

答案 9 :(得分:0)

在Windows环境中,我使用Examine32。这是一个非常方便的通用字符串搜索器(这是一个有效的短语?:-))。

答案 10 :(得分:0)

对于C代码,我使用BSD编码样式,该样式声明应该定义名为foo的函数:

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

使用此样式,函数定义是源代码中唯一的位置,其中函数名称可能出现在行的开头。那么只需要使用grep:

grep '^foo' **/*.c

此技巧过滤掉该函数的用法,专注于定义

**/*.c产生太多文件名时(对于非常大的源代码树),则使用find

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

请注意+-exec的使用:这取代xargs的使用。

答案 11 :(得分:0)

TotalCommander的搜索功能

答案 12 :(得分:0)

我一般都知道我要做一些有点挑剔的事情,所以我在该部分附近发表评论。评论应该总是有足够的关键字让我找到我想要的东西。

然后它就是一个arseabout find / grep组合的例子。

答案 13 :(得分:0)

由于我花了很多时间在Emacs中疯狂地输入随机的代码,徒劳地希望其中一个会做一些有用的事情,我经常使用emacs find-dired 命令:

  • Meta-x find-dired
  • 输入我认为我会找到有趣代码的目录路径
  • 当它要求我查找参数时,请输入(例如):-name '*.rb'
  • 当它显示匹配文件列表时,%m.将其全部选中(对于Emacs明显的键映射而言)
  • 然后meta-A并输入搜索字符串。
  • Meta-,(还有另一个明显的键映射),可以进入下一场比赛。

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

答案 14 :(得分:0)

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

Powergrep是最接近我所寻求的解决方案。 它并不完美,但对于Windows GUI解决方案......我喜欢它。

答案 15 :(得分:0)

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

搜索引擎对代码进行预编制,使搜索数千个文件的速度远远快于grep,它显示了一个GUI窗口中的命中,以及另一个选定命中的完整源代码。您可以在源代码上启动编辑器。