免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: Cyberman.Wu
打印 上一主题 下一主题

有没有一种工具可以分析某个源文件中包含文件及其关系? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-06-04 09:03 |只看该作者

回复 #10 Cyberman.Wu 的帖子

>>>是一个挺好的工具,但的确不是我所想要的。我所想要的是分析头文件的包含关系,以及头文件所在的位置,反正你的工具用了一下我没找到这一功能;另外我想做的是自动化地把文件挑出来,而不是用来看的。

你的要求只是我所提供的一个子集,肯定可以实现 (95%)。没有明确的提供,是因为不知道要求的人多不多,我总不能花几个月,只实现一个人要求的特殊功能把。另外我也不知道你的具体情况, 学生?职员?兴趣?任务? 也许我能有比较好的建议。 你可以告诉我你想要什么prj的源代码分析,如果是 linux的,我可以试着做一点。

>>你的工具只支持在WEB服务器运行吗?

目前是。你拔了网线不就是单机了么

>>另外所谓去掉预处理条件代码是要能配置一些宏值才能做吧,不能只简单从文件中反推有没有定义,因为现在许多工程都是通过编译器传宏定义值的。

你不需要作任何设置

论坛徽章:
0
12 [报告]
发表于 2009-06-04 12:57 |只看该作者

回复 #11 jqbsx 的帖子

1. 要么你没仔细看我的需求,要么你的工具有些功能我还没找到。我想要的很简单,给出一个.c文件,它分析之后把里面引用到的(递归)所有头文件按原来的目标结构复制出来,你的只是一个显示吧,而且也只是简单显示能否找到这个头文件。

2. 如果做为爱好自己玩玩没什么,但要想提供给别人用,这个属于没有从客户的角度出发去考虑问题。不是每个人,实际上是很少人在自己的个人机器上装WEB服务器的。

3. 如果不做设置,那要不就是分析configure生成的Makefile?否则怎么可能知道哪些宏有没有定义?只是基于文件中的定义,对于许多开源项目是不符合的。就象lint工具,在检查代码时可以指定一个预处理的宏以控制检查里面的哪一部分。

论坛徽章:
0
13 [报告]
发表于 2009-06-04 16:11 |只看该作者

回复 #12 Cyberman.Wu 的帖子

1 第一个帖看完,我就是这么理解的。(进一步猜测,你是想实现拔萝卜不带泥的功能),查找结果里,很多地方都是可以点击的。可以直接去到你想去的地方。对于非本prj的文件,即外部文件,我并未显示(这个可以有),对于嵌套很深的文件,我也没处理(这个也可以有)。一般的prj, .h .c , 处理2层嵌套已经足够。实际上,我可以处理所有的层,要是硬盘足够大的话。

2 一般人都有浏览器,所以这可能是最灵活的一种方法。 对于linux package来说, 你只需要浏览器就可以了,不需要安装任何东西。如果是公司,设个服务器应该是很普通的。如果是个人,还真是没什么好办法

3 我再次强调,不用任何设置。 我生成了 kernel 的 cross ref, 实际上我对它的了解比你差的多。其他的 如 busybox coreuitl wget gedit... ,我也一无所知

论坛徽章:
0
14 [报告]
发表于 2009-06-04 17:36 |只看该作者

回复 #13 jqbsx 的帖子

这个也没啥好交流了的,我不是想“拔萝卜不带泥”,而是在不想看的情况下先把头文件统一挑出来,就这么简单,前面有人讲的gcc -M或中做预处理再配合一个小程序基本上已经可以完成了,只是前一段时间有事耽搁了一直没做。
我不想去一一地看头文件的关系,这个用Source Insight足够了;主要是依赖的太多,手工挑很麻烦,所以想要一个自动化工具。

论坛徽章:
0
15 [报告]
发表于 2009-06-20 06:58 |只看该作者
原帖由 Cyberman.Wu 于 2009-5-20 11:21 发表
从一个大的系统中移植某块出来时,它会依赖于一大堆头文件,不知道有没有现成的工具可以用来分析?昨天本来想写一个的,但开了一个头事情太多又扔下来了,先找找有没有现成的吧。

我的大概思路是:
1. 解析 ...

1)建一个数据结构,不是几个链表,是一棵树。
2)将主文件名写入树的根节点-0节点。
3)分析主文件首部,按include文件数建立1节点,写入各个文件名。
4)继续往下做。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP