检测iOS项目中未使用的方法

1,974 阅读1分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」。

1、检查ObjectiveC项目中 未使用的方法

准备工作

  1. 已自己的项目为例,将工程进行build,后show in finder

image.png

  1. 显示包内容

image.png

  1. 找到Mach-O可执行文件

image.png

工具地址

github.com/nst/objc_co…

此脚本方法只能检测 OC 可能未使用的方法,不适用其他场景

开始检测

image.png

输出

image.png

  • 所有的未使用方法都会被列出,包含pod三方库中的方法;

原理

原理利用 Mach-O 文件的结构和展示内容: __TEXT:__objc_methname: 中包含了代码中的所有方法; __DATA__objc_selrefs:中则包含了所有被使用的方法的引用,通过取两个集合的差集就可以得到所有未被使用的代码.

image.png

问题:

如果在执行过程中出现can't find implemented methods

image.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项目中未使用的方法、属性、类

工具地址

github.com/zColdWater/…
此脚本方法只能检测 swift 可能未使用的方法、属性、类

开始检测

1. cd <项目根目录>
2. 将unused.rb脚本文件本地路径填入终端, 或者直接将 unused.rb 拖拽至终端。

例如:

image.png

输出

image.png

Xcode 集成

image.png

*工具本地路径(建议将工具放入工程根目录)+xcode即可

image.png