來著 FBI 的 WARNING
FBI-WARNING
是一個使用 Clang
在編譯的時候對 ObjC
程式碼進行靜態分析的 .dylib
庫。
目前已經支援以下一些通用的簡單的靜態程式碼檢測規則:
@property
-
NSString
和Block
需要使用copy
關鍵字修飾。 -
delegate
需要使用weak
關鍵字修飾。 - 使用
atomic
原子性修飾時候的提醒。 -
property
不應該使用大寫開頭命名。 -
property
不應該使用記憶體管理語義命名。 - 應該使用
@Property
方式定義屬性。
Method
- 方法名不應該使用大寫開頭命名。
- 方法名不應該使用記憶體管理語義命名。
- 方法引數名不應該使用大寫開頭命名。
- 方法體超過 XX(50) 行的提醒。
Class
- 類/分類名應該使用大寫開頭。
- 類/分類名應該使用自定義大寫字首開頭。
- 類/分類名應該使用駝峰命名
Others
- 應該使用
NS_ENUM/NS_OPTIONS
定義列舉,而不是使用enum
。
未來也許會支援更多...
Custom
如果想要增加或者修改規則的小夥伴可以看看筆者寫的另外兩篇入門的文章(大牛請略過) LLVM & Clang 入門 和 Clang Plugin 之 Debug 這兩篇文章講了怎麼搭建環境和使用 Xcode 進行除錯。
當前程式碼中已經支援了可自定義過濾 Framework
或者檔案,在 isVenderSourceCode()
函式中,將需要過濾的 Framework
或者 檔名
直接新增在 venders
中就可以了。
Notes
本倉庫中會包含 FBI-WARNING
、 FBI-WARNING-Tooling
、 FWPluginDemo
和一個 .dylib
庫。
FBI-WARNING:它會編譯生成一個 .dylib
庫,這個 .dylib
庫會用於直接整合到 Xcode 中。整合部分請參考 Xcode 整合 Plugin 。
FBI-WARNING-Tooling:它是一個可直接使用適用於 Xcode
除錯的程式碼。邏輯程式碼和 FBI-WARNING
是一樣的(只是在載入方式和 CMakeLists
的配置檔案上有一些差異),更準確的來說, FBI-WARNING
是將 FBI-WARNING-Tooling
進行除錯好的程式碼複製過去的。除錯部分請參考 Clang Plugin 之 Debug 。
筆者也是剛開始學習,程式碼寫得不夠規範還請各位大佬見諒。其他自定義規則,請有需求的或者感興趣的同學自己動動手。
歡迎對 clang
和 逆向
感興趣的同學新增微信一起交流(新增時請註明)。

Effects


Questions
Q: 更新了 .dylib
之後,在 Xcode
中重新執行怎麼還是原來那樣呀,沒有任何變化? A: 這時候需要對著對應的 Xcode
專案,按住 Shift
+ Command
+ K
, Clean
一次就好了。