OCLint靜態分析工具的安裝和使用

2021-09-13 20:08:26 字數 2706 閱讀 4945

如今**質量在中國的大環境不那麼被重視,搞得我都曾經懷疑過自己的價值觀^_^。可以對**質量視而不見的理由太多了,譬如沒時間,或是覺得對kpi沒啥貢獻之類的。如果你這麼想了,你或許永遠都數不清糟糕的**風格給你和你的team帶來多少麻煩。

我們需要乙個自動化的工具監控並改善**質量,oclint就是我們想要的,支援objective-c/c/c++語言。小試牛刀一把,在此分享自己的經驗。

官方文件提供了三種安裝方式:

cp bin/oclint* /usr/local/bin/

cp -rp lib/* /usr/local/lib/

cp -rp include/* /usr/local/include/

現在,我們需要乙個配置檔案來指定oclint的規則和輸出格式。最簡單的方式是在你的專案根目錄下新建乙個.oclint檔案,這樣你的配置只會作用於自己的專案。oclint的配置是基於yaml的,不熟悉請移步度娘。

貼出我的配置檔案:

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引數並生成報告。

我嘗試了xctool,會報錯,可能因為它不相容新版xcode?於是我使用xcpretty代替:

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了。用瀏覽器開啟看一看,是不是很漂亮~

report-type還可以指定為xml、text、xcode等,可以動手試一試。

ps:之前趟過乙個坑,cleanbuild要寫在一行。如果分為兩行寫(官方的教程就是如此),比如這樣:

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配置中的內容。這裡我們覆蓋了兩個配置:

指定輸出型別為xcode。

指定輸出檔名為-,意思是輸出到stdout,否則會看不到提示。

然後我們執行專案,大功告成~

iOS開發 OCLint的安裝和使用 命令列

oclint是乙個靜態 分析工具,提高質量和減少缺陷通過檢查c c 和objective c 和尋找潛在的問題 可能的缺陷 空的if else try catch finally語句 未使用的 未使用的區域性變數和引數 複雜的 很高的圈複雜度,npath複雜性和太高的ncss 異味 長方法和引數列表...

iOS開發 OCLint的安裝和使用 命令列

oclint是乙個靜態 分析工具,提高質量和減少缺陷通過檢查c c 和objective c 和尋找潛在的問題 可能的缺陷 空的if else try catch finally語句 未使用的 未使用的區域性變數和引數 複雜的 很高的圈複雜度,npath複雜性和太高的ncss 異味 長方法和引數列表...

資料分析工具安裝 jupyter notebook

資料分析工具安裝 jupyter notebook 安裝好你需要的python環境 2.0 or 3.0 命令視窗cmd 執行 pip install jupyter notebook 命令視窗cmd 輸入 jupyter notebook 安裝成功則會彈出瀏覽器 修改埠號 cmd 輸入 jupyt...