有没有什么扫描工具,检索出代码里面已经用不上的代码

binouyang 2011-04-01 07:11:32
RT
比如说某个函数fun A(){},现在没有人调用了,就给我扫描出来
...全文
206 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ollydbg23 2011-04-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xunxun1982 的回复:]

引用 8 楼 ollydbg23 的回复:

估计以后clang有这个功能,我上次看到clang有一个功能,可以把代码里面包含的#include头文件,但是最后却没有用的这些情况都找出来。gcc我想应该也可以,估计要用gcc的plugin分析AST就可以了。

你可以考虑做一个,就像Delphi的CnPack插件一样
[/Quote]
我还没有这个能力,不过clang的maillist里面有人在弄这个。
xunxun 2011-04-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ollydbg23 的回复:]

估计以后clang有这个功能,我上次看到clang有一个功能,可以把代码里面包含的#include头文件,但是最后却没有用的这些情况都找出来。gcc我想应该也可以,估计要用gcc的plugin分析AST就可以了。
[/Quote]
你可以考虑做一个,就像Delphi的CnPack插件一样
ollydbg23 2011-04-05
  • 打赏
  • 举报
回复
估计以后clang有这个功能,我上次看到clang有一个功能,可以把代码里面包含的#include头文件,但是最后却没有用的这些情况都找出来。gcc我想应该也可以,估计要用gcc的plugin分析AST就可以了。
hongwenjun 2011-04-03
  • 打赏
  • 举报
回复
其实说简单也简单的,编写个工具,把所有的函数定义都抽取出来
1. 把所有的代码,放到一个临时文件夹 copy *.* src.txt
2. 用个工具把所有的函数定义 都抽取到一个字典里,剔除 标准库 和 重复
3. src.txt 和 字典比较,字典里 单词 是否 都出现2次
podes 2011-04-02
  • 打赏
  • 举报
回复
用剖分的那些工具,分析运行时的行为,比如微软的pin,就能找到所有调用的函数以及调用次数。或oprofile也行
luciferisnotsatan 2011-04-02
  • 打赏
  • 举报
回复
库的话,不可能知道有没有别的库或应用调用了这个函数。
app的话,VS里直接看下有没有引用,没有查到,那就是没用的。或者直接用搜索工具搜下函数名就是了。

另外,link时,不会把没用的函数link进最终的二进制文件的
binouyang 2011-04-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luxihua 的回复:]

可以自己写一个,或者写个脚本。
1、扫描所有函数,列表
2、按规则(比如从main开始调用到的)扫描用到的函数,从列表删除
3、显示剩余的函数就是无用的函数了
[/Quote]
这样会有些麻烦的
因为你除了app,还有动态库的,还得去管动态库的借口有没有被其他的地方调用
binouyang 2011-04-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luciferisnotsatan 的回复:]

库的话,不可能知道有没有别的库或应用调用了这个函数。
app的话,VS里直接看下有没有引用,没有查到,那就是没用的。或者直接用搜索工具搜下函数名就是了。

另外,link时,不会把没用的函数link进最终的二进制文件的
[/Quote]
大哥
和link无关啦
链接器只能找到它所编译的那部分代码哪些要用,哪些没用
现在是要搜索整个代码区域,这些代码很多时候都不会在同一时间编译的,那样肯定不行
难不成真要自己去分析了……
luxihua 2011-04-01
  • 打赏
  • 举报
回复
可以自己写一个,或者写个脚本。
1、扫描所有函数,列表
2、按规则(比如从main开始调用到的)扫描用到的函数,从列表删除
3、显示剩余的函数就是无用的函数了
hongwenjun 2011-04-01
  • 打赏
  • 举报
回复
没有用到的函数,链接的时候,不会链接进去吧.

15,446

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧