这种扫描非常基础,基于字符串比较,但对于初步分析非常有帮助。
用法:
sh required_reason_api_text_scanner.sh {目录名}
示例输出:
在'./ViewController.swift'中发现潜在的必需原因API使用'UserDefaults' 行号:28
这种扫描应该产生与基于文本的扫描器类似的结果,但使用ripgrep以获得更快的结果,特别适用于中型到大型仓库 - 文本扫描器可能需要几分钟才能完成,而这个扫描器应该能在几秒钟内完成。
用法:
安装ripgrep后,例如brew install ripgrep,
sh ripgrep_required_reason_api_text_scanner.sh {目录名}
输出以grep的标准格式显示。
这个扫描器使用nm在DerivedData文件夹中的二进制文件中查找符号。
它将查找.app、.framework和.a二进制文件。
请记住,在应用程序(.app)中找到的符号将与静态库.a中找到的符号重复,因为它们是静态链接的。
用法:
sh required_reason_api_binary_scanner.sh {目录}
示例输出:
sh required_reason_api_binary_scanner.sh \
~/Library/Developer/Xcode/DerivedData/DemoSymbols-aymfeypsyhqwfuaieijkrqdeohcd/Build/Products/Debug-iphonesimulator
> 分析二进制文件:./DemoSymbols.app/DemoSymbols
> ---
> 二进制文件./DemoSymbols.app/DemoSymbols中使用的符号:activeInputModes, fgetattrlist, fstat, fstatat, fstatfs, fstatvfs, getattrlist, getattrlistat, getattrlistbulk, lstat, mach_absolute_time, NSFileCreationDate, NSFileModificationDate, NSFileSystemFreeSize, NSFileSystemSize, NSURLContentModificationDateKey, NSURLCreationDateKey, NSURLVolumeAvailableCapacityForImportantUsageKey, NSURLVolumeAvailableCapacityForOpportunisticUsageKey, NSURLVolumeAvailableCapacityKey, NSURLVolumeTotalCapacityKey, NSUserDefaults, stat, statfs, statvfs, systemUptime
在DemoSymbols目录中,你会找到一个使用了所有Apple要求提供必需原因的代码的项目。
它用于测试这些扫描器。