免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4259 | 回复: 9
打印 上一主题 下一主题

mktags--根据指定的文件路径以及文件类型生成ctags以及cscope索引文件的工具 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-27 21:41 |只看该作者 |倒序浏览
在Linux下面浏览代码,一般都是Vim/Emacs加上tags和cscope的组合。但是,ctags和cscope程序在生成相应的索引文件时,一般都是默认查找项目中的所有文件,这样就会在项目较大时造成索引文件过大的后果,比如Linux kernel,解压缩之后有几百M,如果完全索引,对应的ctags文件和cscope文件加起来也有一百多M,这样间接的也造成了如果有新的文件加入项目中想重新生成索引文件时时间过长。当然可以使用find+grep命令指定需要查找的文件和目录,把这些文件路径写入一个文件,然后再调用ctags和 cscope根据该文件中记录的文件来生成索引,但是毕竟这样做麻烦。

mktags项目就是基于要上面需要解决的几个问题而出现的,它的目的是可以让使用者指定需要关注的项目路径和文件类型,然后根据这些来生成索引文件。

目前发布了第一版0.1版本,支持以下的选项:


  1. -a 指定需要添加的路径名,如果有多个路径,则路径之间使用空格分隔

  2. -t 指定需要添加的文件类型,比如.c,如果有多个类型,同样也使用空格分隔

  3. -i 指定根据路径名和文件类型查找到的所有文件保存在哪个文件中的,默认是mktags.files

  4. -r 指定项目的根路径,默认为当前目录

  5. -h 打印帮助信息
复制代码


比如,我可以在存放Linux kernel代码的路径中键入如下命令:

  1. mktags -a include/ arch/ mm/  kernel/ ipc/ -t .c .h
复制代码


表示我只关注 include.arch,mm,kernel,ipc下面的.c和.h文件

目前只具备以上基本的功能。代码使用Python脚本编写,在使用之前需要make install将mktags脚本安装在/usr/bin中(需要root权限)就可以使用了。

我的设想是能结合curses编程做成类似make menuconfig的效果,能有一个GUI的菜单供使用者选择需要关注的路径和文件类型,一目了然。


  1. 20090629
  2. 0.2版本发布:
  3. 修改了查找文件的算法,上一个版本在项目的根目录下查找,然后看看找到的路径是不是匹配所指定的路径.显然,这样的查找效率很低.目前修改了查找的方式,直接在所有指定的路径下面查找.

  4. 另外,原来使用-f指定文件类型,现在修改为-t.

  5. 同时,更新了usage函数的功能,增加了使用示例的说明.

复制代码


项目地址在:
http://code.google.com/p/mktags

[ 本帖最后由 converse 于 2009-6-29 12:43 编辑 ]

评分

参与人数 1可用积分 +5 收起 理由
prolj + 5 请自行附上源代码&&精华

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-06-27 22:00 |只看该作者
好东西啊,支持一下,可以顺便学习一下Python

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
3 [报告]
发表于 2009-06-27 22:29 |只看该作者

回复 #1 converse 的帖子

论坛徽章:
0
4 [报告]
发表于 2009-06-27 22:31 |只看该作者

回复 #3 OwnWaterloo 的帖子

是的。

论坛徽章:
0
5 [报告]
发表于 2009-06-28 01:30 |只看该作者
占个位子先
慢慢看

论坛徽章:
0
6 [报告]
发表于 2009-06-28 09:23 |只看该作者
不知楼主对 http://linux.chinaunix.net/bbs/thread-1114771-1-1.html 这个工具是否感兴趣,如果感兴趣的话,发个email,我给你开开,你对比一下,呵呵

论坛徽章:
0
7 [报告]
发表于 2009-06-29 12:42 |只看该作者
发布0.2版本,请见第一楼说明.

论坛徽章:
0
8 [报告]
发表于 2009-06-29 14:10 |只看该作者
去试用一下~~

论坛徽章:
0
9 [报告]
发表于 2009-06-29 17:31 |只看该作者
原帖由 converse 于 2009-6-27 21:41 发表
在Linux下面浏览代码,一般都是Vim/Emacs加上tags和cscope的组合。但是,ctags和cscope程序在生成相应的索引文件时,一般都是默认查找项目中的所有文件,这样就会在项目较大时造成索引文件过大的后果,比如Lin ...


说实话, 我觉得这个project不是很有必要( 当然了练手的作用不算)。

1, 查找c、h、cpp文件这些, find这些utils效率肯定高, 没必要自己实现一套;

2, 对linux kernel来说, kbuild已经有了完美的支持, 而且可以细致的为你指定 -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL 等很专门的地方, 还有Kconfig也要支持。

举例子, 看代码看到#if CONFIG_PROC,这个mktags就不能做到。  


现在比较讨厌的是, 当代码变动时, 必须得整个重新build index。

论坛徽章:
0
10 [报告]
发表于 2009-06-29 17:40 |只看该作者

回复 #9 albcamus 的帖子

find我知道,之前试过,可能我用的不好,感觉要输入不少,完了还要手动执行ctags,cscope....做这个脚本就是把这些全部合在一起了.

后期的目标是加进curses编程,能做出一个类似make menuconfig的效果来,给用户列出当前项目的所有路径来,供用户自己选择...

至于那几个宏和kconfig,我刚看内核,还不知道什么作用.

最后的问题,在于cscope之类的不支持增量添加,我也没办法了....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP