← 返回首页
GitHub - flexih/Snake: Yet Another Mach-O Unused ObjC Selector/Class/Protocol Detector. 检测ObjC无用方法、无用类、无用协议。 · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus
This repository was archived by the owner on May 23, 2024. It is now read-only.

flexih/Snake

 master
Go to file
Code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
View all files

Repository files navigation

More items

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

  • Parse Mach-O directly, no Symbols option required in Strip style of Build Settings, no depends on otool.
  • Unused selectors.
  • Unsued classes.
  • Unused protocols.
  • Duplicate selectors.
  • All classes.
  • Selector/Classes/Protocols sort by library, and selector size, if Linkmap file provided.
  • 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

About

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

Topics

Resources

License

Stars

176 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Footer

© 2026 GitHub, Inc.