OCLint 使用

最近要在持續化交付上添加一環,靜態代碼分析。雖然xcodeAnalyze 也有這個功能,但是那個工具用起來比較麻煩,需要手動去操作。接下來就看看OCLint的使用吧。

本次環境配置是在xcode8 環境下,xctool 已不再支持xcode8.

我是用homebrew安裝的。首先添加下載源 ,然后正式安裝。

    brew tap oclint/formulae
    brew install oclint

安裝oclint完成后需要安裝xcpretty ,該工具可以將編譯的代碼產生的信息格式化輸出。

    gem install xcpretty

每次編譯前記得先 clean 一下,以下是我的命令。

xcodebuild clean -workspace Hospital_Doctor/Hospital_Doctor.xcworkspace -scheme Hospital_Doctor -configuration 'Debug'

xcodebuild -workspace Hospital_Doctor/Hospital_Doctor.xcworkspace -scheme Hospital_Doctor -configuration 'Debug'| xcpretty --report json-compilation-database

然后會在build/reports 目錄下生成 compilation_db.json 文件,但是oclint 識別的是 compile_commands.json 文件。

cp Hospital_Doctor/build/reports/compilation_db.json compile_commands.json

然后用oclint 解析上面的文件

oclint-json-compilation-database -v -e Pods -e Carthage -e Hospital_DoctorTests -e Hospital_DoctorUITests
-e 參數是忽略的文件或文件夾

在這里我還在項目根目錄(當前目錄)配了一個.oclint文件,該文件中的配置在執行oclint 命令時自動加載,也可以在個人用戶目錄下新建這個.oclint 文件,即~/.oclint,下面是我的配置文件。

    rule-configurations:
      - key: CYCLOMATIC_COMPLEXITY
        value: 15
      - key: LONG_LINE
        value: 300
      - key: TOO_MANY_PARAMETERS
        value: 10
    output: oclint.html
    report-type: html
    max-priority-1: 0
    max-priority-2: 1000
    max-priority-3: 3000
    enable-clang-static-analyzer: false

rule-configurations中是一些代碼的規范,這里是修改的默認的,也可以不填用默認的。oclint 導出的html 文件可以在瀏覽器中查看。

之后我想把他集成到fastlane中,fastlane 中提供了oclint action,我用xcodebuild 先生成了json 文件,然后執行oclint 的動作,發現有問題,打印出來后fastlane 中具體執行的命令是如下

oclint -report-type=pmd -o=oclint_report.pmd -rc=LONG_LINE=200 -rc=LONG_METHOD=200 -max-priority-1=10 -max-priority-2=1000 -max-priority-3=2000 -p . "***"

同樣可以生成html文件,可以直接在瀏覽器打開查看。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容