代碼檢查工具之OClint

動機

說到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那段時期,現(xiàn)在已經(jīng)不適用了。

使用

按照官網(wǎng)上的說明,你可能會遇到問題:

  • 如果你使用xctool,會發(fā)先xctool其實并不能編譯工程了,因為xctool的編譯已經(jīng)被廢棄了。

  • 如果你使用xcodebuild,會發(fā)現(xiàn)調(diào)用oclint-json-compilation-database生成報告時,會出現(xiàn)error。這是因為配置參數(shù)不正確同時xcodebuild的輸出其實不能直接生成compile_commands.json文件了。

經(jīng)過實驗和摸索,目前可用的方法如下:

  1. 首先確認工程可以通過命令行編譯通過, sdk的參數(shù)可以通過命令行查看并選擇適合自己的
$ 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格式的結(jié)果,可以用如下的命令:

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

??注意 生成報告的時間可能會有點長,而且中間沒有任何交互環(huán)節(jié),所以請耐心等待。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容