美文网首页
代码检查工具之OClint

代码检查工具之OClint

作者: 每天多一点 | 来源:发表于2018-12-05 10:03 被阅读42次

    动机

    说到Objective-C的lint检查,很多人可能首先想到的就是OClint,可惜的是,OClint目前更新到0.13就不更新了。

    安装

    $ brew tap oclint/formulae
    $ brew install oclint
    

    验证一下

    $ oclint -version
    LLVM (http://llvm.org/):
      LLVM version 5.0.0svn-r313528
      Optimized build.
      Default target: x86_64-apple-darwin18.2.0
      Host CPU: skylake
    
    OCLint (http://oclint.org/):
      OCLint version 0.13.
      Built Sep 18 2017 (08:58:40).
    

    安装 xcpretty

    $ gem install xcpretty
    

    当然,你还需要Xcode的command line tool

    ⚠️注意:不需要安装xctool,因为xctool的使用是在配合xcode7那段时期,现在已经不适用了。

    使用

    按照官网上的说明,你可能会遇到问题:

    • 如果你使用xctool,会发先xctool其实并不能编译工程了,因为xctool的编译已经被废弃了。

    • 如果你使用xcodebuild,会发现调用oclint-json-compilation-database生成报告时,会出现error。这是因为配置参数不正确同时xcodebuild的输出其实不能直接生成compile_commands.json文件了。

    经过实验和摸索,目前可用的方法如下:

    1. 首先确认工程可以通过命令行编译通过, sdk的参数可以通过命令行查看并选择适合自己的
    $ xcodebuild -workspace XXX.xcworkspace -scheme YYY -configuration Debug -sdk iphonesimulator12.1
    
    1. clean
    $ xcodebuild -workspace XXX.xcworkspace -scheme YYY -configuration Debug -sdk iphonesimulator12.1 clean
    
    1. 编译并生成compile_commands.json
    $ xcodebuild -workspace XXX.xcworkspace -scheme YYY -configuration Debug -sdk iphonesimulator12.1 CLANG_ENABLE_MODULE_DEBUGGING=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO ENABLE_BITCODE=NO COMPILER_INDEX_STORE_ENABLE=NO | tee xcodebuild.log | xcpretty -r json-compilation-database --output compile_commands.json
    
    1. compile_commands.json的同级目录下生成报告
    $ oclint-json-compilation-database -- -max-priority-1 '10' -max-priority-2 '2000' -max-priority-3 '5000' -report-type html -o result.html
    

    如果需要xml格式的结果,可以用如下的命令:

    $ oclint-json-compilation-database -- -max-priority-1 '10' -max-priority-2 '2000' -max-priority-3 '5000' -report-type pmd -o result.xml
    

    ⚠️注意 生成报告的时间可能会有点长,而且中间没有任何交互环节,所以请耐心等待。

    参考

    相关文章

      网友评论

          本文标题:代码检查工具之OClint

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