美文网首页
学习OCLint的使用

学习OCLint的使用

作者: 里克尔梅西 | 来源:发表于2021-05-06 20:27 被阅读0次

    最近看了下自动代码静态分析的工具,学习了一下OCLint的使用,将整个的安装、脚本记录如下。

    一、OCLint 的下载和安装

    有3种方式安装,分别为 Homebrew、源代码编译安装、下载安装包安装。 区别:

    • 如果需要自定义 Lint 规则,则需要下载源码编译安装
    • 如果仅仅是使用自带的规则来 Lint,那么以上3种安装方式都可以

    1、这里我选择用Homebrew进行安装

    brew tap oclint/formulae   
    brew install oclint
    

    验证下 OCLint 是否安装成功。输入 oclint --version

    1. xcodebuild 的安装

    xcode 下载安装好就已经成功安装了

    1. xcpretty 的安装

    先决条件,你的机器已经安装好了 Ruby gem.

    gem install xcpretty
    

    二、 使用 OCLint

    直接使用脚本,运行,生成报告

    #!/bin/bash
    
    COLOR_ERR="\033[1;31m"    #出错提示
    COLOR_SUCC="\033[0;32m"  #成功提示
    COLOR_QS="\033[1;37m"  #问题颜色
    COLOR_AW="\033[0;37m"  #答案提示
    COLOR_END="\033[1;34m"     #颜色结束符
    
    # 寻找项目的 ProjectName
    function searchProjectName () {
      # maxdepth 查找文件夹的深度
      find . -maxdepth 1 -name "*.xcodeproj"
    }
    
    function oclintForProject () {
        # 预先检测所需的安装包是否存在
        if which xcodebuild 2>/dev/null; then
            echo 'xcodebuild exist'
        else
            echo '🤔️ 连 xcodebuild 都没有安装,玩鸡毛啊? 🤔️'
        fi
    
        if which oclint 2>/dev/null; then
            echo 'oclint exist'
        else
            echo '😠 完蛋了你,玩 oclint 却不安装吗,你要闹哪样 😠'
            echo '😠 乖乖按照博文:https://github.com/FantasticLBP/knowledge-kit/blob/master/第一部分%20iOS/1.63.md 安装所需环境 😠'
        fi
        if which xcpretty 2>/dev/null; then
            echo 'xcpretty exist'
        else
            gem install xcpretty
        fi
    
    
        # 指定编码
        export LANG="zh_CN.UTF-8"
        export LC_COLLATE="zh_CN.UTF-8"
        export LC_CTYPE="zh_CN.UTF-8"
        export LC_MESSAGES="zh_CN.UTF-8"
        export LC_MONETARY="zh_CN.UTF-8"
        export LC_NUMERIC="zh_CN.UTF-8"
        export LC_TIME="zh_CN.UTF-8"
        export xcpretty=/usr/local/bin/xcpretty # xcpretty 的安装位置可以在终端用 which xcpretty找到
    
        myworkspace=JCJD.xcworkspace
        myscheme=JCJDDevelopment
    
    
        # 清除上次编译数据
        if [ -d ./derivedData ]; then
            echo -e $COLOR_SUCC'-----清除上次编译数据derivedData-----'$COLOR_SUCC
            rm -rf ./derivedData
        fi
    
        # xcodebuild clean
        xcodebuild -scheme $myscheme -workspace $myworkspace clean
    
    
        # # 生成编译数据
        xcodebuild -scheme $myscheme -workspace $myworkspace -configuration Development | xcpretty -r json-compilation-database -o compile_commands.json
    
        if [ -f ./compile_commands.json ]; then
            echo -e $COLOR_SUCC'编译数据生成完毕😄😄😄'$COLOR_SUCC
        else
            echo -e $COLOR_ERR'编译数据生成失败😭😭😭'$COLOR_ERR
            return -1
        fi
    
        # 生成报表
        oclint-json-compilation-database -e Pods -- -report-type html -o oclintReport.html \
        -rc LONG_LINE=200 \
        -disable-rule ShortVariableName \
        -disable-rule ObjCAssignIvarOutsideAccessors \
        -disable-rule AssignIvarOutsideAccessors \
        -max-priority-1=100000 \
        -max-priority-2=100000 \
        -max-priority-3=100000
    
        if [ -f ./oclintReport.html ]; then
            rm compile_commands.json
            echo -e $COLOR_SUCC'😄分析完毕😄'$COLOR_SUCC
        else
            echo -e $COLOR_ERR'😢分析失败😢'$COLOR_ERR
            return -1
        fi
        echo -e $COLOR_AW'将为大爷自动打开 lint 的分析结果'$COLOR_AW
        # 用 safari 浏览器打开 oclint 的结果
        open -a "/Applications/Safari.app" oclintReport.html
    }
    
    oclintForProject
    
    

    当然我们也可以通过Jenkins,来集成脚本,做到自动化检查的目的,这里就不写了。

    参考的文章很全面:

    相关文章

      网友评论

          本文标题:学习OCLint的使用

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