静态代码分析工具及框架DevSupport

OCLint编译手册

2018-06-05  本文已影响0人  vincentgemini

安装CMake

官网下载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

时间会比较长

修改环境变量

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/

以下是为了后面编译源码做准备:

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

检验结果

终端执行:

oclint --version

结果如下:

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).

构建XCode工程

构建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目录,构建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

构建LLVM源码XCode工程

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

将子工程链接起来

  1. 根据‘构建OClint源码XCode工程’的方法,分别创建driver,core,reporters,rules工程;
  2. 以driver为主工程,因为这是OClint的入口工程,将其他子工程添加到driver工程中;
  3. 最后将llvm工程添加到driver工程中;
  4. 配置driver编译脚本:cp ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME} ../build/oclint-release/bin节省编译后拷贝
  5. 配置llvm子工程编译脚本:cp ${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a ../build/llvm-install/lib修改需要调试的项目即可

调试OClint方法

需要在XCode的Edit Scheme中的Arguments Passed On Launch中添加启动参数:

-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实现Code Review

OCLint 如何自定义规则

如何调试OCLint自定义规则

Code Review-OCLint系列开篇

CMake入门

上一篇下一篇

猜你喜欢

热点阅读