假设我们有一个由100个文件组成的项目(例如,一个库),每个文件包含大约1000行代码。您想要查找函数awesome_foo(...)你是怎么做到的?老实说,我觉得给它加点油很恐怖也没什么效果。
编辑:我主要寻找函数定义
发布于 2013-04-26 18:25:48
如果您可以使用像notepadd++这样的工具,它有一个很棒的find in files工具,它将返回所有直接文本搜索的实例,甚至是正则表达式。我经常使用它,它非常有用。
发布于 2013-04-26 18:25:32
grep -irnw "awesome_foo" *
肯定会给你结果。
这些参数包括:
忽略大小写,--
- -i
忽略模式和输入文件中的大小写差异。
行号,-n
在输出的每一行前面加上其输入文件中的行号。
-R、-r --递归
递归地读取每个目录下的所有文件;这相当于-d递归选项。
-w,--单词-regexp
只选择那些包含构成整个单词的匹配项的行。测试是匹配子字符串必须位于行的开头,或者前面必须是非单词组成字符。同样,它必须在行尾或后面跟一个非单词组成字符。单词组成字符由字母、数字和下划线组成。
发布于 2013-04-26 18:58:45
集成开发环境解析您的代码并生成一个索引,该索引允许您通过ctrl+clicking或使用键盘快捷键导航到每个符号的声明(或用法)。这就是人们经常在大型代码库上工作的方式。
如果您没有使用IDE,您仍然有一些选择。
是一个索引器,它读取源文件并生成包含程序符号信息的“索引文件”。它可以连接到一个编辑器(比如Vim),或者只是生成一个人类可读的符号引用。
这是示例program的ctags -x
输出
DrawGLScene 37 lesson5.c void DrawGLScene()
InitGL 15 lesson5.c void InitGL(int Width, int Height) // We call this right after our OpenGL window is created.
ReSizeGLScene 24 lesson5.c void ReSizeGLScene(int Width, int Height)
keyPressed 62 lesson5.c void keyPressed(unsigned char key, int x, int y)
main 78 lesson5.c int main(int argc, char **argv)
它看起来像“名称、行和文件、签名”,可以很容易地手动用作索引。
−x
将表格形式的、人类可读的交叉引用(xref)文件打印到标准输出,而不是生成标记文件。输出中包含的信息包括:标记名;标记的类型;定义标记的文件的行号、文件名和源代码行(带有压缩的额外空格)。不写入标记文件,并且将忽略影响标记文件输出的所有选项。此功能的示例应用程序生成位于源文件(例如ctag−x−−c−kinds=v−−file−scope=no文件)中的所有函数的列表,或生成位于源文件(例如ctag−x−−c−kinds=v−−file−scope=no文件)中的所有外部可见全局变量的列表。此选项必须出现在第一个文件名之前。
https://stackoverflow.com/questions/16234116
复制相似问题