来自 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

转载请注明出处!