簡介
OCLint是一個 靜態代碼分析 工具,通過檢查C、c++
和Objective-C
代碼並尋找潛在的問題.
OCLint
就是一個建立在 Clang
上的工具,能夠發現代碼中潛在的問題,可以用來提高質量和減少缺陷, 它目前支持C, C++, Objective-C
語言
OCLint可以發現的問題
- 可能的bug - 空的 if / else / try / catch / finally 語句
- 未使用的代碼 - 未使用的局部變量和參數
- 複雜的代碼 - 高圈複雜度, NPath複雜, 高NCSS
- 冗餘代碼 - 多餘的if語句和無用的括號
- 壞味道的代碼 - 過長的方法和過長的參數列表
- 不好的使用 - 倒邏輯和入參重新賦值
- …
有關更多 OCLint
的介紹見 http://oclint.org/
使用
使用文檔 http://docs.oclint.org/en/stable/guide/xcodebuild.html
文檔中有很多種使用方式:
- 和 xctool 一起使用
- 和 xcpretty 一起使用
- 在 xcode 內置腳本使用
xcpretty
使用最爲簡單,這裏本人使用的 xcpretty
工具命令行
安裝
brew tap oclint/formulae
brew install oclint
//安裝xcpretty
sudo gem install xcpretty
//-help命令檢測是否安裝成功
oclint -help
創建所需要的文件
關於 xcpretty
我們使用其將 xcodebuild 的原始輸出格式化到文件 compile_commands.json
xcodebuild [flags] | xcpretty -r json-compilation-database -o compile_commands.json
如果希望保留原始的xcodebuild輸出,那麼可以這樣做:
xcodebuild [flags] | tee xcodebuild.log | xcpretty -r json-compilation-database -o compile_commands.json
tee xcodebuild.log
表示輸出xcode日誌爲xcodebuild.log
調用分析指令
現在,通過編譯命令。json文件,我們可以通過簡單的調用來運行代碼分析:
oclint-json-compilation-database -- [Your Option]
就會進行掃描,輸出報告
這裏可以選擇輸出爲html
或者其他類型文件 (--
後配置)有"text"、“html”、“json”、“pmd”、“xcode”幾個類型
oclint-json-compilation-database -- -report-type html -o analysis.html
然後生成類似報告:
可以看到AFNetworking
的錯誤都寫進去了,我們並不需要分析三方庫的代碼,OCLint 提供了過濾方法。
Pod等三方庫的過濾
-e
: 過濾掉某些文件
oclint-json-compilation-database -e Pods -- -report-type html -o analysis1.html
查看官方文檔可以看到相關的配置項
http://docs.oclint.org/en/stable/manual/oclint.html
官方文檔
http://docs.oclint.org/en/stable/guide/xcpretty.html#generating-json-compilation-database-with-xcpretty