美文网首页
OClint的使用

OClint的使用

作者: ouyangke | 来源:发表于2020-01-27 16:45 被阅读0次

    关于OCLint

    • OCLint 是基于LLVM/Clang(前端编译)而开发的代码静态分析工具。
    • OCLint可用的检查规则有70+条。其原理:通过扩展Clang 的checkers,Clang整个静态分析器的入口是AnalysisConsumer,接着会调HandleTranslationUnit()方法进行AST层级进行分析或者进行path-sensitive分析。默认会按照内联的path-sensitive分析,构建CallGraph,从顶层调用者按照调用的关系来分析,具体是使用的工作列表中算法,从EntryBlock开始一步步的模拟,这个过程叫做分析。

    OCLint 包含三个命令行指令:

    • oclint:基础指令。通过这个指令可以指定加载验证规则、编译代码、分析代码和生成报告。
    • oclint-json-compilation-database:高级指令。通过这个指令可以从 compile_commands.json 文件中读取配置信息并执行 oclint。
    • oclint-xcodebuild:通过这个指令可以从 Xcode 的 xcodebuild.log 文件导出编译选项并保存成 JSON Compilation Database 格式。然后把保存到 compile_commands.json 文件中(OCLint team好久不维护了,采用xcpretty替换)。

    OCLint 怎么工作:

    图片 1.png

    OCLint 安装部署:

    • 将oclint-0.13.1 和 xcpretty-0.3.0 移动到/usr/local目录下。
      终端执行命令:
      sudo mv oclint-0.13.1 /usr/local
      sudo mv xcpretty-0.3.0 /usr/local
      提示输入密码时,输入电脑的登录密码
    • 将oclint 和 xcpretty的执行文件路径添加到PATH中。
      编辑用户根目录下的.bash_profile 文件,终端输入open .bash_profile往里面添加下面3行。如果文件不存在就创建一个(用touch ~/.bash_profile)
      OCLINT_HOME=/usr/local/oclint-0.13.1
      XCPRETTY_HOME=/usr/local/xcpretty-0.3.0
      export PATH=$PATH:$OCLINT_HOME/bin
      export PATH=$PATH:$XCPRETTY_HOME/bin
    • 验证环境:打开在终端执行 source ~/.bash_profile (让.bash_profile里的修改立即生效。电脑开机登录后会自动加载该文件,以后无需执行)。执行oclint -version 和 xcpretty -version查看

    对iOS项目进行OCLint检查 :
    1.将编写好的脚本文件移动到项目根目录下 ,终端运行脚本
    2.修改oclint-ignore文件。这是忽略配置文件,可以通过文本工具编辑。里面已经添加了默认的忽略目录,可以根据项目自行增加或删减。
    3.修改oclint-settings文件。 这是oclint依赖的项目编译配置文件,内容如下图所示,特别注意scheme和sdk的配置

    项目配置规范

    • 路径配置添加上$(PROJECT_DIR)
      target里Paths相关的配置,如果是相对路径请修改为绝对路径,如下图所示,其中$(PROJECT_DIR) 表示 .xcodeproj 所在目录,这里是myproject.xcodeproj的所在路径:
      /Users/hzh/works/iOS-UI/myproject


      image.png
    • 引用自己项目里的文件使用 #import "XXX.h"
      如在myproject项目里,引用myproject里的头文件
      #import "WKAlertController.h" //正确
      #import <myproject/myproject.h> //不符合规范
      #import <myproject/WKAlertController.h> //不符合规范
      myproject里引用其它库里的文件,使用#import <xxx/xxx.h>
      #import <WKNetworking/WKNetworking.h> //正确

    FAQ

    • xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
      解决:终端执行命令
      sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

    相关文章

      网友评论

          本文标题:OClint的使用

          本文链接:https://www.haomeiwen.com/subject/zjouzctx.html