前言
oclint 是對(duì)C、C++屯蹦、Objective-C進(jìn)行靜態(tài)代碼檢查的工具 ,使用 oclint 對(duì)代碼進(jìn)行靜態(tài)分析可以檢查和提高項(xiàng)目代碼質(zhì)量、尋找潛在的問(wèn)題........
oclint 的安裝
1.通過(guò) homebrew 安裝非常方便、快速?
2.使用 xcode 代碼分析需要安裝 oclint和xcpretty兜挨,都可以在終端進(jìn)行安裝
打開(kāi)終端 命令行 依次輸入以下命令安裝 oclint
brew tap oclint/formulae ?
brew install oclint
用gem安裝xcpretty
sudo?gem?install?xcpretty
確認(rèn)下是否成功安裝 oclint
終端輸入 oclint ?如給出以下提示职抡,代表成功安裝 oclint
3.使用 oclint
oclint 詳細(xì)使用方法
使用 oclint 對(duì) xcode 項(xiàng)目進(jìn)行靜態(tài)代碼分析首先需要項(xiàng)目配置葬燎,即添加 target
1.file-new-target
?next
2.在xcode項(xiàng)目目錄下創(chuàng)建分析的Shell腳本文件analysis.sh
3.在.sh 文件中寫(xiě)入以下示例內(nèi)容(compile_commands.json是生成的日志文件名)
# 移除原有的生成文件
xcodebuild clean | xcpretty
rm -r build
rm -r compile_commands.json
# Build和把日志寫(xiě)到目標(biāo)文件
xcodebuild | xcpretty -r json-compilation-database --output compile_commands.json
4.使用終端打開(kāi)項(xiàng)目目錄
cd 項(xiàng)目路徑?
打開(kāi).sh文件 sudo ?./analysis.sh
如果報(bào)錯(cuò)
使用sh?./analysis.sh打開(kāi)即可,終端如以下即開(kāi)始分析生成目標(biāo)文件(compile_commands.json)
5.分析完之后打開(kāi) xcode缚甩,來(lái)輸入可執(zhí)行的腳本即可
接下來(lái) command + b 編譯 谱净,如果編譯過(guò)程中報(bào)錯(cuò)?oclint: error: violations exceed threshold
錯(cuò)誤原因是超過(guò)了issue 的閾值,在腳本末尾加上 -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999?
過(guò)濾項(xiàng)目中的第三方警告
如果 pod 導(dǎo)入 ?添加腳本?oclint-json-compilation-database?-e?Pods
如果手動(dòng)導(dǎo)入 ? 添加腳本 ?oclint-json-compilation-database -e FMDB -e XMLReader -e Masonry -e MJRefresh ? 類(lèi)似即可
編譯成功后Xcode上會(huì)在不符合規(guī)則的代碼上顯示W(wǎng)arning
序
可以自己參考規(guī)則列表?來(lái)自定義個(gè)人需要的規(guī)則
關(guān)于 oclint 指令?oclint擅威、oclint-json-compilation-database壕探、oclint-xcodebuild
oclint 是核心指令?oclint?[options]??--?[compiler?flags]?
[options]為一些參數(shù)選項(xiàng),可以是規(guī)則加載選項(xiàng)郊丛、報(bào)告形式選項(xiàng)等:
-R <路徑> : 檢測(cè)所用的規(guī)則的路徑李请,默認(rèn)路徑$(/path/to/bin/oclint)/../lib/oclint/rules
-disable-rule <規(guī)則名>: 讓相對(duì)應(yīng)的規(guī)則失效。
-rc <參數(shù)>=<值> :修改閾值
-report-type <報(bào)告類(lèi)型>厉熟,有"text"导盅、“html”、“json”揍瑟、“pmd”白翻、“xcode”幾個(gè)類(lèi)型
-o <路徑> 報(bào)告生成路徑。
例:oclint??-R??/path/to/rules???-disable-rule?ObjCAssignIvarOutsideAccessors?-report-type?xcode 是指忽略掉規(guī)則文件中指定規(guī)則
oclint-json-compilation-database 指令
oclint-json-compilation-database?指令有過(guò)濾文件選項(xiàng)
-i :包含進(jìn)某些文件
-e : 過(guò)濾掉某些文件
xcpretty
用xcpretty生成OClint 解析用的json 文件