來自 FBI 的 WARNING

FBI-WARNING是一個使用Clang在編譯的時候對ObjC代碼進行靜態分析的.dylib庫。html

目前已經支持如下一些通用的簡單的靜態代碼檢測規則:git

@property

  1. NSStringBlock須要使用copy關鍵字修飾。
  2. delegate須要使用weak關鍵字修飾。
  3. 使用atomic原子性修飾時候的提醒。
  4. property不該該使用大寫開頭命名。
  5. property不該該使用內存管理語義命名。
  6. 應該使用@Property方式定義屬性。

Method

  1. 方法名不該該使用大寫開頭命名。
  2. 方法名不該該使用內存管理語義命名。
  3. 方法參數名不該該使用大寫開頭命名。
  4. 方法體超過 XX(50) 行的提醒。

Class

  1. 類/分類名應該使用大寫開頭。
  2. 類/分類名應該使用自定義大寫前綴開頭。
  3. 類/分類名應該使用駝峯命名

Others

  1. 應該使用NS_ENUM/NS_OPTIONS定義枚舉,而不是使用enum

將來也許會支持更多...github

Custom

若是想要增長或者修改規則的小夥伴能夠看看筆者寫的另外兩篇入門的文章(大牛請略過) LLVM & Clang 入門Clang Plugin 之 Debug 這兩篇文章講了怎麼搭建環境和使用 Xcode 進行調試。xcode

當前代碼中已經支持了可自定義過濾Framework或者文件,在isVenderSourceCode()函數中,將須要過濾的Framework或者文件名直接添加在venders中就能夠了。微信

Notes

本倉庫中會包含FBI-WARNINGFBI-WARNING-ToolingFWPluginDemo和一個.dylib庫。函數

FBI-WARNING:它會編譯生成一個.dylib庫,這個.dylib庫會用於直接集成到 Xcode 中。集成部分請參考 Xcode 集成 Plugin學習

FBI-WARNING-Tooling:它是一個可直接使用適用於Xcode調試的代碼。邏輯代碼和FBI-WARNING是同樣的(只是在加載方式和CMakeLists的配置文件上有一些差別),更準確的來講,FBI-WARNING是將FBI-WARNING-Tooling進行調試好的代碼複製過去的。調試部分請參考 Clang Plugin 之 Debugatom

筆者也是剛開始學習,代碼寫得不夠規範還請各位大佬見諒。其餘自定義規則,請有需求的或者感興趣的同窗本身動動手。插件

歡迎對clang逆向感興趣的同窗添加微信一塊兒交流(添加時請註明)。調試

Effects

Questions

Q: 更新了.dylib以後,在Xcode中從新運行怎麼仍是原來那樣呀,沒有任何變化? A: 這時候須要對着對應的Xcode項目,按住Shift+Command+KClean一次就行了。

References

若有內容錯誤,歡迎 issue 指正。

Code

轉載請註明出處!

相關文章
相關標籤/搜索