头文件分类工具supotato
class-dump 出的头文件这么多,supotato 可以根据头文件的前2个字符
形成个简单的分类报告。同时可以猜测出使用了哪些第三方库(CocoaPods)。
使用方法
pip install supotato
cd <header files directory>
supotato
例子
例如 class-dump 出以下的头文件:
运行supotato:
$ supotato -i headers -o .
得到这个简单的分类:
下面是真实的例子:
Here.
参数
[everettjf@e supotato (master)]$ supotato --help
usage: supotato [-h] [-i INPUT] [-o OUTPUT] [-s SORTBY] [-d ORDER]
[-p PREFIXLENGTH] [-u UPDATEDB]
Generate a simple report for header files in your directory
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
directory that header(.h) files in.
-o OUTPUT, --output OUTPUT
file (or directory) path to put txt report in.
-s SORTBY, --sortby SORTBY
prefix or count . Means sort by prefix or count.
-d ORDER, --order ORDER
desc or asc.
-p PREFIXLENGTH, --prefixlength PREFIXLENGTH
prefix length for classify , default to 2.
-u UPDATEDB, --updatedb UPDATEDB
force update cocoapods database.
- -i 指定头文件所在的目录。
- -o 指定 result.txt 文件输出的目录,也可以是文件路径。
- -s 指定分类的排序依据。prefix 根据文件名前N个字符(N可指定,默认为2)排序,count 根据每个分类的文件数目排序。
- -d 排序类型。desc 倒序,asc 顺序。
- -p 分类依据前几个字符。默认2 。
- -u 更新本地数据库(用于判断文件属于哪个第三方库)
原理
- 根据 https://github.com/CocoaPods/Specs 可或许所有repo,全部下载后,根据 spec.json文件,获取库中的头文件(.h)文件。
- 记录头文件与Pod名称的关系到本地数据库中。
- 逐个比较。
相关代码 https://github.com/everettjf/supotato/tree/master/podtool
总结
- 简单的小工具,可以加快对class-dump头文件的整体了解。
- 或许还能做:
- 解析.h文件,构造类图。
- 对.h文件进一步分类。(根据父类,或最后的几个字符)