如今**質量在中國的大環境不那麼被重視,搞得我都曾經懷疑過自己的價值觀^_^。可以對**質量視而不見的理由太多了,譬如沒時間,或是覺得對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:之前趟過乙個坑,clean
和build
要寫在一行。如果分為兩行寫(官方的教程就是如此),比如這樣:
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...