Need help with Snake?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

flexih
133 Stars 11 Forks MIT License 24 Commits 1 Opened issues

Description

Yet Another Mach-O Unused ObjC Selector/Class/Protocol Detector. 检测ObjC无用方法、无用类、无用协议。

Services available

!
?

Need anything else?

Contributors list

# 269,202
Objecti...
C
20 commits

Snake

🐍 Snake, Yet Another Mach-O Unused ObjC Selector/Class/Protocol Detector.

ObjC Metadata * Classes ✔ * Protocols ✔ * Methods ✔ * Categories ✔ * Binding Info ✔ * ObjC-Specific Sections *

__objc_selrefs
✔ *
__objc_superrefs
✔ *
__objc_classrefs
✔ *
__objc_classlist
✔ *
__objc_catlist
✔ *
__objc_protolist

See SnakeKit

Features

  • [x] Parse Mach-O directly, no Symbols option required in Strip style of Build Settings, no depends on otool.
  • [x] Unused selectors.
  • [x] Unsued classes.
  • [x] Unused protocols.
  • [x] Duplicate selectors.
  • [x] All classes.
  • [x] Selector/Classes/Protocols sort by library, and selector size, if Linkmap file provided.
  • [x] Fast, a 460.6M binary and a 134.3M linkmap file costs 1.62s(3.7 GHz 6-Core Intel Core i5;40 GB 2667 MHz DDR4).

Homebrew

brew tap flexih/tap && brew install snake

How To Use

Usage:
  snake [-dscp] [-l path] path/to/binary ...

-s, --selector Unused selectors -c, --class Unused classes -p, --protocol Unused protocoles -d, --duplicate Duplicate selectors -a, --allclass All Classes -l, --linkmap arg Linkmap file, which has selector size, library name -j, --json Output json format --help Print help

snake -l path/to/linkmap path/to/binary [-dscpa]

Example

bin/snake -l demo/release/demo-LinkMap-normal-x86_64.txt demo/release/demo.app/demo -c ``` Total Lib Count: 1 Total Unused Class Count: 3

demo

SceneDelegate UnusedClass ViewController

bin/snake -l demo/release/demo-LinkMap-normal-x86\_64.txt demo/release/demo.app/demo -s
Total Lib Count: 1 Total Class Count: 2 Total Unused Selector: 2

demo

@ UnusedClass -[UnusedClass unusedMethOfUnusedClass] 6

@ UsedClass -[UsedClass unusedMeth] 6 ```

Storyboard

Used selectors

python2 storyboard.py path/to/x.storyboard

Source

git clone --recursive https://github.com/flexih/Snake.git

Details

Objective-C二进制瘦身

Credits

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.