iOS开发-OCLint如何自定义静态扫描代码规则

一、开发准备

1、MacOS一般默认都有Xcode,Git和Ruby

2、下载OCLint代码

OCLint-Github地址

下载到本地的目录如下:

3、cd进入oclint-scripts文件加,执行./make

如果没有报错的话,大约30分钟后编译完成,大概过程是下载LLVM、clang的源代码,编译LLVM、clang与OCLint的默认规则。

不过一般都会遇到一些问题:

1、如果没有安装cmake一般都会报错

cmake官网,下载Mac操作系统对应的安装包。安装完成之后,运行cmake图形界面程序,在左上角的选项栏中选择Tools,点击How to install for Command Line Use。 之后弹出来一个消息框:

One may add CMake to the PATH:
PATH="/Applications/CMake.app/Contents/bin":"$PATH"
Or, to install symlinks to '/usr/local/bin', run:
sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install
Or, to install symlinks to another directory, run:
sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install=/path/to/bin
复制代码

三种安装cmake command line tool 的方法,即终端能够识别cmake命令的方法。复制sudo"/Applications/CMake.app/Contents/bin/cmake-gui" --install 命令到终端,然后运行,当然你也可以打出来。 之后再在终端打cmake命令,就不会再提示什么command not found之类的错误了,到此安装成功了。

在Mac安装cmake command line tool cmake :command not found解决

2、报错fatal error: 'openssl/ssl.h' file not found

brew install openssl 参考文章: fatal error: openssl/ssl.h 安装失败 解决方案 参考2

3、报错ninjia not found

brew install ninjia CMake + Ninja OSX issue

4、创建自定义的规则

在oclint-scripts目录下OCLint提供了一个叫scaffoldRule的脚本程序。可以传入要生成的规则名,级别,类型,脚本就会在目录oclint-rules/rules/custom/自动生成一个模板代码,并且加入编译路径中。 举个例子:

# 生成一个名为myDemoRule类型是ASTVisitor的规则模板

oclint-scripts/scaffoldRule myDemoRule -t ASTVisitor
复制代码

执行命令后:

5、编译自定义的规则成动态库

编译方法1:重新执行oclint-scripts/make

这个太慢了,不推荐,很不方便。

编译方法2:将规则相关的内容整合成一个Xcode工程

将规则相关的内容整合成一个Xcode工程,并且我们的每个规则都是一个scheme,编译时可以只选择编译那个选择的规则生成对应的dylib。 OCLint工程使用CMakeLists的方式维护各个文件的依赖关系,可以使用CMake自带的功能将这些CMakeLists生成一个xcodeproj工程文件。

在OCLint源码目录下建立一个文件夹oclint-xcodeproject

xcode-debug.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
复制代码

执行命令

bash xcode-debug.sh
复制代码

编译出来的动态库

然后将编译好的动态库放到oclint的规则文件夹,这样就可以使用自己新加的自定义规则了 路径:/usr/local/Cellar/oclint/0.13/lib/oclint/rules

参考文章 OCLint 如何自定义规则

iOS 持续集成系列 - 自动化 Code Review

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值