我用多种文件格式编写/修改代码,如perl,html,css,php,javascript,autohotkey脚本等等。
我经常在我的个人源代码库中搜索语法或复杂逻辑的示例,以便在新代码中重用。或者,我将在目录树中搜索特定字符串的代码引用(例如,对perl,php,html和javascript中特定css样式的所有引用)。有时我甚至会搜索像=〜这样的神秘字符串,因为我在我的一个perl程序中搜索特定的正则表达式。
有时我使用copernic搜索现有代码,但不幸的是它只能搜索单词并自动忽略任何编程语法。 Windows 7文件搜索似乎比Windows XP文件搜索更糟糕。
我的问题是......你如何搜索自己的源代码库?
答案 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)
答案 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窗口中的命中,以及另一个选定命中的完整源代码。您可以在源代码上启动编辑器。