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

2021-08-15 14:01:12 字數 3775 閱讀 4755

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 專案不...