1、检查ObjectiveC项目中 未使用的方法
准备工作
-
已自己的项目为例,将工程进行
build
,后show in finder
-
显示包内容
-
找到Mach-O可执行文件
工具地址
https://github.com/nst/objc_cover
此脚本方法只能检测 OC 可能未使用的方法,不适用其他场景
开始检测
![](https://img.haomeiwen.com/i6333164/6ec6b1a8de84fd66.png)
输出
![](https://img.haomeiwen.com/i6333164/4bcc436d822c6a02.png)
- 所有的未使用方法都会被列出,包含pod三方库中的方法;
原理
原理利用 Mach-O 文件的结构和展示内容:
__TEXT:__objc_methname
: 中包含了代码中的所有方法;
__DATA__objc_selrefs
:中则包含了所有被使用的方法的引用,通过取两个集合的差集就可以得到所有未被使用的代码.
![](https://img.haomeiwen.com/i6333164/74584c7cf8123ba0.png)
问题:
如果在执行过程中出现can't find implemented methods
![](https://img.haomeiwen.com/i6333164/7b5088267f864cd8.png)
- 由于正则表达式的一些问题造成的,可以将
objc_cover.py
中的:
re_sig_sel_ios = re.compile("\s*imp 0x\w+ ([+|-]\[.+\s(.+)\])")
更换为即可解决问题
re_sig_sel_ios = re.compile("\s*imp\s*0x\w+ ([+|-]\[.+\s(.+)\])")
2、检查Swift项目中未使用的方法、属性、类
工具地址
https://github.com/zColdWater/swift-scripts
此脚本方法只能检测 swift 可能未使用的方法、属性、类
开始检测
1. cd <项目根目录>
2. 将unused.rb脚本文件本地路径填入终端, 或者直接将 unused.rb 拖拽至终端。
例如:
![](https://img.haomeiwen.com/i6333164/17d533916b562fbe.png)
输出
![](https://img.haomeiwen.com/i6333164/2102df577d3c3d08.png)
Xcode 集成
![](https://img.haomeiwen.com/i6333164/a9daadcbdcc137e4.png)
*
工具本地路径(建议将工具放入工程根目录)+xcode
即可![](https://img.haomeiwen.com/i6333164/44880804a84422e9.png)
网友评论