OCLint 安裝與使用

姜家志發表於2016-05-19

OCLint是一個強大的靜態程式碼分析工具,可以用來提高程式碼質量,查詢潛在的bug,主要針對 C、C++和Objective-C的靜態分析。功能非常強大,而且是出自國人之手。專案地址:http://oclint.org/

主要能檢查到的程式碼缺陷:

安裝OCLint

OCLint是一個開源的專案,你可以通過原始碼安裝,需要設定對應的環境變數,也可以使用作者釋出的release進行安裝,不過我更習慣使用Homebrew安裝。

首先需要設定brew的第三方倉庫oclint/formulae

brew tap oclint/formulae

然後安裝OCLint

brew install oclint

針對對OCLint升級的方法:

brew update
brew upgrade oclint

使用brew cleanup可以清理舊版本的安裝資料。

xcodebuild

xcodebuild是xcode的編譯命令。
可以檢視xcodebuild的版本資訊:

xcodebuild -version

也可以檢視當前系統的sdk以及其版本:

xcodebuild -showsdks

需要使用xcodebuild [flags]命令進行編譯並把相關的日誌資訊輸入到xcodebuild.log中,需要在.xcodeproj檔案所在的目錄裡面執行。

xcodebuild | tee xocdebuild.log

flags引數預設使用Release,這樣就得到了一份編譯程式碼資訊相關的日誌。
下面需要對日誌使用OCLint進行分析

分析日誌

我們需要使用OCLint對日誌資訊進行分析執行命令

oclint-xcodebuild xcodebuild.log

得到的資訊:

oclint-xcodebuild不在使用了,需要安裝xcpretty,使用xcpretty命令分析日誌資訊。
xcpretty是用來格式化xcodebuild輸出的工具,使用ruby開發。
安裝:

gem install xcpretty

使用引數--report json-compilation-database或者-r json-compilation-database可以生成指定生成資料的格式,當前指定為json格式。
執行命令:

xcodebuild |xcpretty -r json-compilation-database

build/reports中得到檔案compilation_db.json

分析json資料

對於json資料的分析需要使用oclint-json-compilation-database
執行命令

oclint-json-compilation-database — -o=report.html

這樣可以到一個html的報告。
但是執行的執行的時候卻得到了一個錯誤資訊:

找不到complie_commands.json檔案,使用xcpretty生成的檔名是:compilation_db.json,在目錄build/reports目錄中。

因此需要把xcpretty生成的檔案compilation_db.json複製到當前目錄下。重新命名為compile_commands.json

再次執行命令得到生成結果:report.html。

oclint分析json引數

開發者會在專案中會大量使用第三方庫,在做OCLint需要忽略對於第三方庫的檢查,在執行oclint-json-comilation-database的時候可以使用-e忽略不需要分析的目錄比如:

oclint-json-compilation-database -e Pods — -o=report.html

還可以改變一些檢查的方式,比如OCLint有一個方法數的檢查Long method P3 Method with 179 lines exceeds limit of 100,方法數超過100行就會出現這個警告,可以通過引數改變預設100行的限制。

oclint-json-compilation-database -e Pods — -rc=LONG_LINE=200 -o=report.html

指令碼化

根據上面的步驟寫了一個shell指令碼用來執行OCLint的檢查