jenkins 环境的搭建,在这里不在赘述,下面我们写一写,如何接入oclint。

OCLint是一个强大的静态代码分析工具,可以用来提高代码质量,查找潜在的bug,主要针对c,c++和Objective-c的静态分析。功能非常强大。项目地址:http://oclint.org/

1、oclint 与 xcpretty的安装

推荐是用Homebrew 来安装,快速且节省精力,也可以选择源码安装或者release包来安装,不过需要配置环境变量的内容。使用Homebrew 安装时,需要先设置brew的第三方仓库,然后安装,xcpretty 用于解析xcodebuild 构建日志,解析后的结果交给oclint来使用:

oclint的安装:

brew tap oclint/formulae
brew install oclint
xcpretty的安装:

gem install xcpretty

2、构建与静态代码扫描

1)、构建与解析日志

我们使用xcodebuild 来构建。

xcodebuild 默认构建的格式Release ,需要构建Debug 或者 AdHoc 包自行添加相关参数来执行。build之后,使用xcpretty 来解析编译日志。

/usr/bin/xcodebuild | tee xcodebuild.log | xcpretty -r json-compilation-database

-r json-compilation-database 制定的数据的输出格式为json格式。输出的数据为build/reports/compilation_db.json

2)、解析结果使用oclint做扫描

使用oclint时需要将build/reports/compilation_db.json 重新命名为 compile_commands.json 并移动至当前目录。

oclint-json-compilation-database -- -report-type pmd -o oclint.xml

将结果输出格式为pmd 格式,然后通过jenkins的pmd插件就可以做结果的展示了。

3)、oclint其它参数

-e   Pods   去掉依赖的第三方库的扫描

-- -rc=LONG_LINE=200  改变默认函数行数为100

LINT_DISABLE_RULES="-disable-rule=LongClass \

-disable-rule=LongLine \

-disable-rule=LongMethod \

-disable-rule=LongVariableName \

-disable-rule=ShortVariableName \

-disable-rule=HighNcssMethod \

-disable-rule=DeepNestedBlock \

-disable-rule=TooManyFields \

-disable-rule=TooManyMethods \

-disable-rule=TooManyParameters \

-disable-rule=IvarAssignmentOutsideAccessorsOrInit"

命令行最后加入 $LINT_DISBALE_RULES 可以禁用某些不需要的规则

jenkins 使用oclint 扫描 oc 代码的更多相关文章

  1. Objective C静态代码扫描和代码质量管理 OClint + SonarQube

    OClint是针对C, C++及Objective C代码的静态扫描分析工具,而SonarQube是一个开源的代码质量管理平台.本文将实现将OClint的扫描结果导入到SonarQube中,已实现对O ...

  2. Jenkins 使用 SonarQube 扫描 Coding

    Jenkins 使用 SonarQube 扫描 Coding   系统环境: Jenkins 版本:2.176 SonarQube 版本:7.4.0 一.SonarQube 介绍 1.SonarQub ...

  3. JS代码和OC代码的相互调用

    JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...

  4. iOS 使用UIWebView把oc代码和javascript相关联

    首先请参看一篇文章,作者写的很明白,请参看原地址 http://blog.163.com/m_note/blog/static/208197045201293015844274/. 其实,oc和js的 ...

  5. ios-UIWebView中js和oc代码的互调

    webview是ios中显示远程数据的网页控件,webview能显示的内容很多,MP4.文本.pdf等等: 关于js和oc代码的互相调用 1:oc中调用js代码; >>oc中调用js代码很 ...

  6. Unity3D研究院之IOS全自动编辑framework、plist、oc代码

    Unity打IOS时会先生成一个Xcode工程,如果你需要增加一些第三方的framework那么需要手动一条一条的添加,这太烦了..而且可能你还需要修改Plist文件,甚至还可能要修改unity自动生 ...

  7. Jenkins+PMD构建自动化静态代码检测

    前言:软件缺陷是不可避免的,要尽量减少错误并提高软件质量,主要有两在类技术,即缺陷预防和缺陷检测 缺陷预防包括编写更好的设计规范.实施代码审核制度.运行代码静态分析工具.运行单元测试等 PMD是一种开 ...

  8. Jenkins系列——使用checkstyle进行代码规范检查【升级版】

    1.背景 在<Jenkins系列——使用checkstyle进行代码规范检查>一文中完成了ant实现代码规范检查的例子.但存在以下缺陷: 每个作业都需要配置一个不同的checkstyle ...

  9. jenkins实现以gitlab为代码仓库的构建

    简介 前一篇随笔是安装jenkins的过程,比较简单,这一次说一下用jenkins配置以gitlab为代码管理仓库的maven项目的完整个构建过程,以及我碰到的一些问题.由于是maven项目,所以我们 ...

随机推荐

  1. 【Python④】python恼人的字符串,格式化输出

    恼人的字符串 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母.数字和一些符号,这个编码 ...

  2. ICEM(1)—边界结构网格绘制

    以两个圆为例 1. geometry→ create curve→ 选择圆,随便画两个圆 2. block下选择create block,选择第一项,initial block,设置改为2D Plan ...

  3. Git ——分布式版本控制系统

    Git ——分布式版本控制系统 本人git主页地址:https://github.com/lendoon/test.git git使用心得:初次接触git在课堂上,老师给我们提供了一个代码托管的场所, ...

  4. JSP内置对象---request 对象

    request.jsp: <%@ page language="java" import="java.util.*" contentType=" ...

  5. glibc与MSVC CRT(转载)

    glibc与MSVC CRT 运行库是平台相关的,因为它与操作系统结合得非常紧密.C语言的运行库从某种程度上来讲是C语言的程序和不同操作系统平台之间的抽象层,它将不同的操作系统API抽象成相同的库函数 ...

  6. runtime学习实战一:类的属性进行归档解档

    #import <Foundation/Foundation.h> @interface PYPerson : NSObject @property (nonatomic, assign) ...

  7. 如何让UIView中的Button点击之后跳转到另一个ViewController上去,ViewController上也有一个按钮 可以返回

    第一种方法:如果使用导航第一个按钮方法:[self.navigationController pushViewController:secondVC animated:YES];第二个按钮方法:[se ...

  8. Java之多线程开发时多条件Condition接口的使用

    转:http://blog.csdn.net/a352193394/article/details/39454157 我们在多线程开发中,可能会出现这种情况.就是一个线程需要另外一个线程满足某某条件才 ...

  9. 【python】闭包、@修饰符(装饰器)、

    闭包:(返回函数的行为叫闭包??) #函数也是对象,所以可以被传递 def line_conf(a,b): def line(x): return a*x+b return line line1=li ...

  10. SQL sever 学习,2016,5,31,(重点:100行以后,字符串操作。)

    --别名和表达式select OrderDate,YEAR(OrderDate)as 订单年份from orders; --选择select OrderDate,YEAR(OrderDate)as 订 ...