oclint是乙個靜態**分析工具,提高質量和減少缺陷通過檢查c 、c++ 和objective-c **和尋找潛在的問題
可能的缺陷 - 空的if / else / try / catch / finally語句
未使用的** - 未使用的區域性變數和引數
複雜的** - 很高的圈複雜度,npath複雜性和太高的ncss
**異味 - 長方法和引數列表
長方法和引數列表不好的實踐——倒邏輯和引數重新分配
…
靜態**分析是乙個來檢測對於編譯不可見的缺陷的關鍵技術。
oclint官網位址
homebrew官網安裝
使用第三方的軟體會比使用xcodebuild方便些
最新xctool的build方法已經棄用,不能配合oclint使用,推薦使用xcpretty
// 安裝oclint
brew tap oclint/formulae
brew install oclint
// 安裝xcpretty
gem install xcpretty
// 以後可能需要更新
brew update
brew upgrade oclint
在終端進入專案目錄,然後替換workspace的名字和scheme的名字,將修改好的命令貼上到終端執行,等待命令執行完畢
myworkspace=haha.xcworkspace # 替換workspace的名字
myscheme=haha # 替換scheme的名字
xcodebuild -workspace $myworkspace -scheme $myscheme clean&&
xcodebuild -workspace $myworkspace -scheme $myscheme \
-configuration debug \
| xcpretty -r json-compilation-database -o compile_commands.json&&
oclint-json-compilation-database -e pods -- \
-report-type html -o oclint_result.html \
-rc long_line=200 \
-max-priority-1=100000 \
-max-priority-2=100000 \
-max-priority-3=100000; \
rm compile_commands.json;
if [ -f ./oclint_result.html ]; then
echo
'-----分析完畢-----'
else
echo
"-----分析失敗-----"; fi
中間可能會在build succeeded後面等待一段時間,這是因為oclint在分析檔案
等待命令執行完成,終端會列印出—–分析完畢—–字樣,
開啟專案目錄,會看到目錄下會多出乙個oclint_result.html的檔案
如果沒有使用cocoapods,則去掉myworkspace=haha.xcworkspace、-workspace my
work
spac
e、−w
orks
pace
myworkspace,然後再在終端執行
另外可以自己建乙個xx.sh的檔案,將上面**貼上進去,每次在命令列進入xx.sh所在目錄執行bash xx.sh就可以了
xcode-select: error: tool 'xcodebuild' requires xcode, but active developer directory
'/library/developer/commandlinetools' is a
command
line
tools
instance
解決方法:
有時候編譯不通過報錯:
解決方案
參考文章
解決了,podfile新增hook:
post_install do |installer|
installer.pods_project.targets.each
do |target|
target.build_configurations.each
do |config|
config.build_settings['compiler_index_store_enable'] = "no"
end end
end同時,pod的主工程也需要設定compiler_index_store_enable這個值為no
oclint的分析結果:
優先順序的級別是從priority 1, priority 2, priority 3 依次降低的
total files 總檔案數
files with violations 違規檔案數
compiler warnings 表示專案中的警告⚠️
compiler errors 表示編譯錯誤
location 表示警告的位置
報告中的描述其實非常清晰,一般找到**位置,結合**理解下,自己基本都能明白了
上面的命令中
-e pods
表示移除pods資料夾裡**的分析, 如果有繼續-e debug.m
-report-type html
表示分析後輸出的檔案型別為html,檢視其他支援的檔案型別
-o oclint_result.html
表示輸出到oclint_result.html
這個檔案中()
-rc long_line=200
表示每行最大位元組長度為200(預設值為100,感覺在oc中100完全不夠用啊)
一些常用規則的注釋
# --命名
# 變數名字最長位元組
#-rc=long_variable_name=20 \
# 變數名字最短位元組
#-disable-rule shortvariablename \
# --size
# 圈複雜度
#-re=cyclomatic_complexity=10 \
# 每個類最行數
#-rc=long_class=700 \
# 每行位元組數量
#-rc=long_line=200 \
# 每個方法行數
#-rc=long_method=80 \
# 忽略注釋後括號後的有效**行數
#-rc=ncss_method=40 \
# 巢狀深度
#-rc=nested_block_depth=5 \
# 字段數量
#-rc=too_many_fields=20 \
# 方法數量
#-rc=too_many_methods=30 \
# 方法引數
#-rc=too_many_parameters=6
oclint-json-compilation-database命令手冊
oclint命令手冊
oclint自定義規則介紹
oclint全部規則介紹
文件裡面有每個規則的demo和對應的命令名字。
iOS開發 OCLint的安裝和使用 命令列
oclint是乙個靜態 分析工具,提高質量和減少缺陷通過檢查c c 和objective c 和尋找潛在的問題 可能的缺陷 空的if else try catch finally語句 未使用的 未使用的區域性變數和引數 複雜的 很高的圈複雜度,npath複雜性和太高的ncss 異味 長方法和引數列表...
OCLint靜態分析工具的安裝和使用
如今 質量在中國的大環境不那麼被重視,搞得我都曾經懷疑過自己的價值觀 可以對 質量視而不見的理由太多了,譬如沒時間,或是覺得對kpi沒啥貢獻之類的。如果你這麼想了,你或許永遠都數不清糟糕的 風格給你和你的team帶來多少麻煩。我們需要乙個自動化的工具監控並改善 質量,oclint就是我們想要的,支援...
iOS開發 CocoaPods安裝和使用
隨著 ios 開發者的增多,業界也出現了為 ios 程式提供依賴管理的工具,它的名字叫做 cocoapods。cocoapods專案的原始碼 在 github 上管理。該專案開始於 2011 年 8 月 12 日,經過多年發展,現在已經成為 ios 開發事實上的依賴管理標準工具。開發 ios 專案不...