關於OCLint自定義規則

Yang1492955186752發表於2017-12-14

###2017.9.25 升級Xcode9GM版本後是無法用Xcode9的命令列工具的,建議切換到Xcode8的命令列工具,或者等到OCLint新版本適配Xcode9

###靜態編譯分析 這段時間公司要求新增靜態掃描的功能,還要能自定義規則,所以就花了兩天進行研究。

1.Xcode內部自帶的Clang Static Analyzer(簡稱CSA) 2.OCLint

兩者都是基於clang的前端編譯,CSA由於被內建,所以使用起來比較方便,但是可用的檢查規則比較少,只有16條,大部分是核心向的功能例如空指標檢測,型別轉換檢測,空判斷檢測,記憶體洩漏檢測,無法檢測程式碼風格,可擴充套件性比較差。 OCLint可用的檢查規則有70+條,比OSA支援的規則多很多。所以選擇了OCLint。

在Google搜+看OCLint文件+Clang文件+各種踩坑總結了如下步驟 OClint步驟: 前置操作: 安裝xcpretty: sudo gem install -n /usr/local/bin xcpretty 1.直接下載github原始碼。然後通過homebrew安裝cmake(後面要用)

2.cd 到oclint-scripts命令,執行./make 。

3.為profile_bash新增以下內容: OCLINT_HOME=YourOCLIntRootPath export PATH=$OCLINT_HOME/bin:$PATH()

4.cd 到根目錄 然後執行oclint-scripts/scaffoldRule RuleName -t ASTVisitor

  1. mkdir oclint-xcoderules

  2. touch create-xcode-rules.sh

  3. cd到oclint-xcoderules,在create-xcode-rules.sh中新增cmake -G Xcode -D CMAKE_CXX_COMPILER=../build/llvm-install/bin/clang++ -D CMAKE_C_COMPILER=../build/llvm-install/bin/clang -D OCLINT_BUILD_DIR=../build/oclint-core -D OCLINT_SOURCE_DIR=../oclint-core -D OCLINT_METRICS_SOURCE_DIR=../oclint-metrics -D OCLINT_METRICS_BUILD_DIR=../build/oclint-metrics -D LLVM_ROOT=../build/llvm-install/ ../oclint-rules 然後執行該指令碼

  4. 開啟生成的OCLINT_RULES.xcodeproj,選擇自定義的規則,重寫visitxxx方法然後編譯,得到生成的dylib,把dylib放到./build/oclint-release/lib/oclint/rules。就能讓OClint識別自定義規則了。 以上是配置步驟。

目前只寫了掃描自定義類名是否符合規範的規則,關於用C++重寫AST的其它方法,我還要繼續學習下去。

相關文章