現在代碼質量在中國的大環境不那麼被重視,搞得我都曾經懷疑過本身的價值觀^_^。能夠對代碼質量視而不見的理由太多了,譬如沒時間,或是以爲對KPI沒啥貢獻之類的。若是你這麼想了,你或許永遠都數不清糟糕的代碼風格給你和你的TEAM帶來多少麻煩。html
咱們須要一個自動化的工具監控並改善代碼質量,OCLint就是咱們想要的,支持Objective-C/C/C++語言。小試牛刀一把,在此分享本身的經驗。json
官方文檔提供了三種安裝方式:xcode
我試過第一種,會報「找不到任何規則」的錯誤,不太推薦。HomeBrew安裝可能走一半就失敗,不想折騰的話就直接拷文件吧(也能夠創建軟連接)。我直接貼出官方文檔的命令:瀏覽器
cp bin/oclint* /usr/local/bin/ cp -rp lib/* /usr/local/lib/ cp -rp include/* /usr/local/include/
如今,咱們須要一個配置文件來指定OCLint的規則和輸出格式。最簡單的方式是在你的項目根目錄下新建一個.oclint文件,這樣你的配置只會做用於本身的項目。OCLint的配置是基於YAML的,不熟悉請移步度娘。編輯器
小提示:工具
貼出個人配置文件:ui
disable-rules: - LongLine rule-configurations: - key: CYCLOMATIC_COMPLEXITY value: 15 - key: NPATH_COMPLEXITY value: 300 output: output.html report-type: html max-priority-1: 20 max-priority-2: 40 max-priority-3: 60 enable-clang-static-analyzer: true
oclint
命令須要傳遞clang編譯參數。咱們使用xcodebuild
來編譯項目,其實會向clang傳遞數量龐大的編譯參數,不可能手動傳遞。雖然使用oclint時編譯項目不是必須的,但咱們須要經過xcodebuild
命令配合xcpretty
/xctool
在編譯時輸出參數到json文件,而後使用oclint-json-compilation-database
命令讀取json參數並生成報告。spa
我嘗試了xctool
,會報錯,可能由於它不兼容新版xcode?因而我使用xcpretty
代替:code
xcodebuild \ -workspace test.xcworkspace \ -scheme test \ -configuration DEBUG \ clean build | \ xcpretty -r json-compilation-database -o compile_commands.json oclint-json-compilation-database
執行完畢後,檢查一下compile_commands.json文件中是否有json內容輸出?在項目目錄中就能夠找到output.html了。用瀏覽器打開看一看,是否是很漂亮~xml
report-type還能夠指定爲xml、text、xcode等,能夠動手試一試。
PS:以前趟過一個坑,clean
和build
要寫在一行。若是分爲兩行寫(官方的教程就是如此),好比這樣:
xcodebuild clean xcodebuild build
在終端執行彷佛沒問題,在XCode中以編譯腳本的方式執行會發現輸出內容比較少(也許和XCode版本有關係),compile_commands.json中內容是空的。後續oclint-json-compilation-database
命令會缺乏參數報錯。糾結了好久,你們引覺得戒~
OCLint還支持集成到XCode,這樣咱們就能夠在編輯器裏以warning的形式查看OCLint的建議,比較直觀。
創建一個Aggregate目標:
而後在Build Phases中新建一段腳本:
xcodebuild -workspace test.xcworkspace -scheme test -configuration DEBUG clean build | \ xcpretty -r json-compilation-database -o compile_commands.json oclint-json-compilation-database -- -report-type=xcode -o '-'
oclint-json-compilation-database
命令支持帶oclint
參數(參考oclint -help),跟在--後面。咱們能夠在這裏覆蓋.oclint配置中的內容。這裏咱們覆蓋了兩個配置:
而後咱們運行項目,大功告成~