回复 #10 Cyberman.Wu 的帖子
>>>是一个挺好的工具,但的确不是我所想要的。我所想要的是分析头文件的包含关系,以及头文件所在的位置,反正你的工具用了一下我没找到这一功能;另外我想做的是自动化地把文件挑出来,而不是用来看的。你的要求只是我所提供的一个子集,肯定可以实现 (95%)。没有明确的提供,是因为不知道要求的人多不多,我总不能花几个月,只实现一个人要求的特殊功能把。另外我也不知道你的具体情况, 学生?职员?兴趣?任务? 也许我能有比较好的建议。 你可以告诉我你想要什么prj的源代码分析,如果是 linux的,我可以试着做一点。
>>你的工具只支持在WEB服务器运行吗?
目前是。你拔了网线不就是单机了么
>>另外所谓去掉预处理条件代码是要能配置一些宏值才能做吧,不能只简单从文件中反推有没有定义,因为现在许多工程都是通过编译器传宏定义值的。
你不需要作任何设置
回复 #11 jqbsx 的帖子
1. 要么你没仔细看我的需求,要么你的工具有些功能我还没找到。我想要的很简单,给出一个.c文件,它分析之后把里面引用到的(递归)所有头文件按原来的目标结构复制出来,你的只是一个显示吧,而且也只是简单显示能否找到这个头文件。2. 如果做为爱好自己玩玩没什么,但要想提供给别人用,这个属于没有从客户的角度出发去考虑问题。不是每个人,实际上是很少人在自己的个人机器上装WEB服务器的。
3. 如果不做设置,那要不就是分析configure生成的Makefile?否则怎么可能知道哪些宏有没有定义?只是基于文件中的定义,对于许多开源项目是不符合的。就象lint工具,在检查代码时可以指定一个预处理的宏以控制检查里面的哪一部分。
回复 #12 Cyberman.Wu 的帖子
1 第一个帖看完,我就是这么理解的。(进一步猜测,你是想实现拔萝卜不带泥的功能),查找结果里,很多地方都是可以点击的。可以直接去到你想去的地方。对于非本prj的文件,即外部文件,我并未显示(这个可以有),对于嵌套很深的文件,我也没处理(这个也可以有)。一般的prj, .h .c , 处理2层嵌套已经足够。实际上,我可以处理所有的层,要是硬盘足够大的话。2 一般人都有浏览器,所以这可能是最灵活的一种方法。 对于linux package来说, 你只需要浏览器就可以了,不需要安装任何东西。如果是公司,设个服务器应该是很普通的。如果是个人,还真是没什么好办法
3 我再次强调,不用任何设置。 我生成了 kernel 的 cross ref, 实际上我对它的了解比你差的多。其他的 如 busybox coreuitl wget gedit... ,我也一无所知
回复 #13 jqbsx 的帖子
这个也没啥好交流了的,我不是想“拔萝卜不带泥”,而是在不想看的情况下先把头文件统一挑出来,就这么简单,前面有人讲的gcc -M或中做预处理再配合一个小程序基本上已经可以完成了,只是前一段时间有事耽搁了一直没做。我不想去一一地看头文件的关系,这个用Source Insight足够了;主要是依赖的太多,手工挑很麻烦,所以想要一个自动化工具。 原帖由 Cyberman.Wu 于 2009-5-20 11:21 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
从一个大的系统中移植某块出来时,它会依赖于一大堆头文件,不知道有没有现成的工具可以用来分析?昨天本来想写一个的,但开了一个头事情太多又扔下来了,先找找有没有现成的吧。
我的大概思路是:
1. 解析 ...
1)建一个数据结构,不是几个链表,是一棵树。
2)将主文件名写入树的根节点-0节点。
3)分析主文件首部,按include文件数建立1节点,写入各个文件名。
4)继续往下做。
页:
1
[2]