美文网首页
OCLint 使用

OCLint 使用

作者: 不要人夸颜色好 | 来源:发表于2017-10-25 13:49 被阅读78次

    最近要在持续化交付上添加一环,静态代码分析。虽然xcodeAnalyze 也有这个功能,但是那个工具用起来比较麻烦,需要手动去操作。接下来就看看OCLint的使用吧。

    本次环境配置是在xcode8 环境下,xctool 已不再支持xcode8.

    我是用homebrew安装的。首先添加下载源 ,然后正式安装。

        brew tap oclint/formulae
        brew install oclint
    

    安装oclint完成后需要安装xcpretty ,该工具可以将编译的代码产生的信息格式化输出。

        gem install xcpretty
    

    每次编译前记得先 clean 一下,以下是我的命令。

    xcodebuild clean -workspace Hospital_Doctor/Hospital_Doctor.xcworkspace -scheme Hospital_Doctor -configuration 'Debug'
    
    xcodebuild -workspace Hospital_Doctor/Hospital_Doctor.xcworkspace -scheme Hospital_Doctor -configuration 'Debug'| xcpretty --report json-compilation-database
    

    然后会在build/reports 目录下生成 compilation_db.json 文件,但是oclint 识别的是 compile_commands.json 文件。

    cp Hospital_Doctor/build/reports/compilation_db.json compile_commands.json
    

    然后用oclint 解析上面的文件

    oclint-json-compilation-database -v -e Pods -e Carthage -e Hospital_DoctorTests -e Hospital_DoctorUITests
    
    -e 参数是忽略的文件或文件夹
    

    在这里我还在项目根目录(当前目录)配了一个.oclint文件,该文件中的配置在执行oclint 命令时自动加载,也可以在个人用户目录下新建这个.oclint 文件,即~/.oclint,下面是我的配置文件。

        rule-configurations:
          - key: CYCLOMATIC_COMPLEXITY
            value: 15
          - key: LONG_LINE
            value: 300
          - key: TOO_MANY_PARAMETERS
            value: 10
        output: oclint.html
        report-type: html
        max-priority-1: 0
        max-priority-2: 1000
        max-priority-3: 3000
        enable-clang-static-analyzer: false
    

    rule-configurations中是一些代码的规范,这里是修改的默认的,也可以不填用默认的。oclint 导出的html 文件可以在浏览器中查看。

    之后我想把他集成到fastlane中,fastlane 中提供了oclint action,我用xcodebuild 先生成了json 文件,然后执行oclint 的动作,发现有问题,打印出来后fastlane 中具体执行的命令是如下

    oclint -report-type=pmd -o=oclint_report.pmd -rc=LONG_LINE=200 -rc=LONG_METHOD=200 -max-priority-1=10 -max-priority-2=1000 -max-priority-3=2000 -p . "***"
    

    同样可以生成html文件,可以直接在浏览器打开查看。

    相关文章

      网友评论

          本文标题:OCLint 使用

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