讓XCode自動CodeReview你的代碼-OCLint使用

前言

OCLint 是一個靜態分析代碼的工具,支持自定義規則,能夠很好地幫助咱們規範代碼,這篇文章主要介紹經過OCLint讓XCode來幫你Code Review,規範代碼。
OCLint相關的詳細內容也能夠到OCLint官網上查看。html

安裝OCLint 和 xcpretty

這裏須要安裝OCLintxcpretty 工具git

一、 安裝xcpretty

gem安裝xcpretty github

sudo gem install xcpretty複製代碼

用sudo是防止一些權限出現問題json

二、安裝OCLint

安裝OCLint有兩種經常使用的方法:xcode

1)經過安裝包:

從oclint的github項目連接中下載安裝包oclint-0.10.3-x86_64-darwin-15.5.0.tar.gz.
解壓後在當前用戶的.bashrc中配置環境變量緩存

OCLINT_HOME=/pathexport PATH=$PATH:OCLINT_HOME/bin複製代碼

而後source .bashrc便可bash

2)經過Homebrew
brew tap oclint/formulae
brew install oclint複製代碼
3)確認安裝成功

運行oclint確認環境配置正確ide

$ oclint複製代碼

若是展現如下內容即爲安裝成功:工具

oclint: Not enough positional command line arguments specified!Must specify at least 1 positional arguments: See: oclint -help複製代碼

OCLint 的使用

這裏介紹一些簡單經常使用的用法,足夠應對不少場景,其餘詳細用法能夠到OCLint Manual上查看。ui


OCLint 有三個指令: oclintoclint-json-compilation-databaseoclint-xcodebuild

一、oclint:常規核心指令。
二、oclint-json-compilation-database:從編譯好的compile_commands.json 文件中讀取配置信息並執行 oclint。
三、oclint-xcodebuild:主要用於生成compile_commands.json文件,如今已經不進行維護了,咱們能夠用xcpretty替代,來生成json文件。

oclint指令

使用語法

oclint [options] <source> -- [compiler flags]複製代碼

[options]爲一些參數選項,能夠是規則加載選項、報告形式選項等:

一、 -R <路徑> : 檢測所用的規則的路徑,默認路徑$(/path/to/bin/oclint)/../lib/oclint/rules
二、-disable-rule <規則名>: 讓相對應的規則失效(OCLint 規則列表)。
三、-rc <參數>=<值> :修改閾值
四、-report-type <報告類型>,有"text"、「html」、「json」、「pmd」、「xcode」幾個類型
五、-o <路徑> 報告生成路徑。

eg:

oclint  -R  /path/to/rules   -disable-rule ObjCAssignIvarOutsideAccessors -report-type xcode複製代碼
oclint-json-compilation-database 指令

這是咱們主要用到的指令,它是oclint 指令的升級版,使用起來相對 oclint 指令簡單方便。
能夠經過 -- 的方式在指令的最後加上oclint 選項。

oclint-json-compilation-database 指令有過濾文件選項
-i :包含進某些文件
-e : 過濾掉某些文件
eg:

# 排除Pods 裏的文件
oclint-json-compilation-database -e Pods 
# 包含進Pods裏的文件
oclint-json-compilation-database -i Pods複製代碼
oclint-xcodebuild 指令。

由於oclint-xcodebuild 指令已經再也不維護,實際應用中用xcpretty代替,因此這裏就不進行介紹。

其餘命令工具:xcodebuild 和 xcpretty

xcodebuild

xcodebuild是蘋果發佈自動構建的工具,能夠經過命令行腳本的方式編譯、打包Xcode 工程。
能夠在終端輸入man xcodebuild來查詢相關用法

xcpretty

用xcpretty生成OClint 解析用的json 文件
這裏用xcpretty是由於oclint-xcodebuild再也不維護了,在XCode 8以後採用xcpretty來生成。

用XCode檢測代碼

首先在targets點添加按鈕:


在Cross-platform選項中,選「Aggregate」,而後命名爲"OCLint":

接着選中OCLint Target,進入Build Phases選項,點左上角的加號,選擇「New Run Script Phase」

而後輸入腳本便可:

示例腳本:

source ~/.bash_profile
cd ${SRCROOT}
xcodebuild clean
xcodebuild  -workspace demo.xcworkspace -scheme demo | xcpretty -r json-compilation-database --output compile_commands.json
oclint-json-compilation-database -v \
-e Pods \
-e MGLivenessDetection \
-e MGBaseKit \
-e MGIDCard \
oclint_args -- -report-type xcode \
-disable-rule ObjCAssignIvarOutsideAccessors \
-disable-rule ShortVariableName \
-rc=MINIMUM_CASES_IN_SWITCH=3 \
-rc=CYCLOMATIC_COMPLEXITY=10 \
-rc=LONG_CLASS=700 \
-rc=LONG_LINE=200 \
-rc=NCSS_METHOD=40 \
-rc=NESTED_BLOCK_DEPTH=5 \
-rc=TOO_MANY_FIELDS=20 \
-rc=TOO_MANY_METHODS=30 \
-rc=TOO_MANY_PARAMETERS=6
exit複製代碼

接着選擇OCLint Scheme,Command+B就能夠執行了
在執行前最好刪除drivedata裏面的數據緩存,以保證不會解析到舊的編譯內容。
編譯成功後Xcode上會在不符合規則的代碼上顯示Warning:

參考連接:

iOS 工程自動化 - OCLint 使用詳解
用OCLint給iOS代碼作靜態分析

相關文章
相關標籤/搜索