OCLint编译手册

作者: vincentgemini | 来源:发表于2018-06-05 17:39 被阅读0次

安装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入门

相关文章

  • OCLint编译手册

    安装CMake 官网下载dmg安装 安装后需要安装命令行工具:Tool->How to install for c...

  • Oclint -help

    参考:OClint安装和使用和OClint手册

  • OCLint集成

    OCLint集成 编译OCLint 1、安装CMake和Ninja这两个编译工具 2、clone OCLint项目...

  • OClint的使用

    关于OCLint OCLint 是基于LLVM/Clang(前端编译)而开发的代码静态分析工具。 OCLint可用...

  • OCLint的环境搭建

    OCLint的环境搭建 download 选择预编译二进制 预编译二进制可以视为开始的快捷方式.OCLint的二进...

  • OCLint、Clang 静态分析器、Infer

    OCLint OCLint 是基于 Clang Tooling 开发的静态分析工具,主要用来发现编译器检查不到的那...

  • iOS使用OCLint进行CodeReview

    OCLint OCLint依赖于抽象语法树的源代码,能检测到编译器没有检测的一些缺陷,可以很好的规避一些潜在的bu...

  • OCLint 代码的静态分析工具 - Xcode

    OCLint的作用 Git 地址https://github.com/oclint/oclint OClint是针...

  • iOS代码扫描-OCLint

    1、OCLint是什么 OCLint[https://github.com/oclint/oclint] 是基于L...

  • 2021-07-16

    OClint使用 brew tap oclint/formulate brew install oclint 直接...

网友评论

    本文标题:OCLint编译手册

    本文链接:https://www.haomeiwen.com/subject/svdmsftx.html