美文网首页
OCLint 代码的静态分析工具 - Xcode

OCLint 代码的静态分析工具 - Xcode

作者: 儒雅的减肥大哥 | 来源:发表于2019-01-22 14:09 被阅读42次

    OCLint的作用

    Git 地址https://github.com/oclint/oclint

    OClint是针对于C,C++,Objective-C 代码的静态分析工具,目的是提高软件质量并且减少代码中存在的潜在问题

    • 可能出现的bug:if/else/try/catch 等条件语句空的声明
    • 未使用的代码:未使用的局部变量以及参数
    • 复杂的代码逻辑:高循环复杂度、NP 复杂度(懵)、高NCSS(懵)
    • 冗余代码:冗余的条件表达式以及无效的括号
    • 代码嗅觉:方法代码行过长或者参数过多
    • 不好的代码习惯:颠倒的逻辑和参数的错误分配

    静态代码分析工具是侦测编译器不可见的潜在缺陷的关键技术。OCLint 具有以下先进的代码检验特性:

    • 依靠源码的抽象语法树来提高分析的精确度以及效率,误报率低动态规则
    • 灵活可扩展的配置,确保用户可以自定义分析行为
    • 命令行式的调用使持续集成成为可能

    OCLint的需要安装支持

    OCLint 的安装方式有很多中,这里我们选择最简单的方式:通过 Homebrew 安装。

    安装 Homebrew
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
    安装xcpretty
    sudo gem install -n /usr/local/bin  xcpretty
    
    安装OCLint
    brew tap oclint/formulae
    brew install oclint
    

    OCLint的使用

    OCLint 有三个指令:oclint、oclint-json-compilation-database、oclint-xcodebuild。

    • oclint:常规核心指令。
    • oclint-json-compilation-database:从编译好的compile_commands.json 文件中读取配置信息并执行 oclint。
    • oclint-xcodebuild:主要用于生成compile_commands.json文件,现在已经不进行维护了,我们可以用xcpretty替代,来生成json文件。

    OCLint的使用

    用Xcode检测代码 Demo

    • 创建项目,首先在targets点添加按钮
    • 在Cross-platform选项中,选“Aggregate”,然后命名为"OCLint":
    • 接着选中OCLint Target,进入Build Phases选项,点左上角的加号,选择"New Run Script Phase"
    • 然后输入脚本:
    source ~/.bash_profile
    
    cd ${PROJECT_DIR}
    
    xcodebuild clean
    
    xcodebuild | tee xcodebuild.log | xcpretty -r json-compilation-database -o compile_commands.json
    
    oclint-json-compilation-database -- -report-type xcode
    
    

    注: 如果 pod 导入 添加脚本 oclint-json-compilation-database -e Pods

    • 接着选择OCLint Scheme,Command+B就可以执行了在执行前最好删除drivedata里面的数据缓存,以保证不会解析到旧的编译内容。编译成功后Xcode上会在不符合规则的代码上显示Warning:

    测试结果

    测试结果

    学习记录,欢迎批评指正

    相关文章

      网友评论

          本文标题:OCLint 代码的静态分析工具 - Xcode

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