OCLint編譯手冊(cè)

安裝CMake

官網(wǎng)下載dmg安裝

安裝后需要安裝命令行工具:Tool->How to install for command line use

提示三種方法,選擇一種:

sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install

也可以使用brew安裝

brew install cmake

安裝Ninja

brew install ninja

安裝openssl

brew install openssl

下載源碼

OClint on Github

編碼源碼

cd oclint-scripts
./make

時(shí)間會(huì)比較長

修改環(huán)境變量

export OCLINT="$HOME/Code/Sourcetree/oclint/build/oclint-release/bin"
export PATH=$OCLINT:$PATH
cd oclint
cp build/oclint-release/bin/oclint* /usr/local/bin/

以下是為了后面編譯源碼做準(zhǔn)備:

ln -s ~/Code/Sourcetree/oclint/build/oclint-release/lib/oclint /usr/local/lib
ln -s ~/Code/Sourcetree/oclint/build/oclint-release/lib/clang /usr/local/lib

檢驗(yàn)結(jié)果

終端執(zhí)行:

oclint --version

結(jié)果如下:

LLVM (http://llvm.org/):
  LLVM version 5.0.1
  Optimized build.
  Default target: x86_64-apple-darwin17.5.0
  Host CPU: skylake

OCLint (http://oclint.org/):
  OCLint version 0.13.1.
  Built May 28 2018 (17:58:53).

構(gòu)建XCode工程

構(gòu)建Rules工程

cd oclint
mkdir _rules
cd _rules
touch rules.sh
chmod +x rules.sh

輸入:

#! /bin/sh -e

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

然后:

chmod +ux rules.sh
./rules.sh

同樣的方法,修改shell腳本中的LLVM_ROOT目錄,構(gòu)建reporters和driver等其他目錄。

問題

  1. 'countly/Countly.h' file not found

添加 oclint/countly/include到 OCLintDriver target的build settings-->Header Search Paths

  1. ld: library not found for -lCountly

添加 oclint/build/countly/lib到 oclint-0.13.1 target的build settings-->Library Search Paths

構(gòu)建LLVM源碼XCode工程

cd oclint
mkdir _llvm
cd _llvm
cmake -G Xcode ../llvm -DCMAKE_BUILD_TYPE:STRING=MinSizeRel

將子工程鏈接起來

  1. 根據(jù)‘構(gòu)建OClint源碼XCode工程’的方法,分別創(chuàng)建driver,core,reporters,rules工程;
  2. 以driver為主工程,因?yàn)檫@是OClint的入口工程,將其他子工程添加到driver工程中;
  3. 最后將llvm工程添加到driver工程中;
  4. 配置driver編譯腳本:cp ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME} ../build/oclint-release/bin節(jié)省編譯后拷貝
  5. 配置llvm子工程編譯腳本:cp ${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a ../build/llvm-install/lib修改需要調(diào)試的項(xiàng)目即可

調(diào)試OClint方法

需要在XCode的Edit Scheme中的Arguments Passed On Launch中添加啟動(dòng)參數(shù):

-R /Users/zhongyafeng/Code/Sourcetree/oclint/_rules/rules.dl/Debug -p /Users/zhongyafeng/Code/JDJR/jdjrMobile_IOS_all --verbose -max-priority-1=10000 -max-priority-2=10000 -max-priority-3=10000 -report-type pmd -o oclint.xml /Users/zhongyafeng/Code/JDJR/jdjrMobile_IOS_all/JDWallet/JDWallet/CBLibrary/Addition/UIFont+CBAddition.m

參考資料

OCLint+Xcode實(shí)現(xiàn)Code Review

OCLint 如何自定義規(guī)則

如何調(diào)試OCLint自定義規(guī)則

Code Review-OCLint系列開篇

CMake入門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容