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. daydayup2 codeforces143D

    这题很考察分析 题意:让你构造n*m的矩阵,使得不存在两个点的距离的平方为5 1若n=1  ,答案为m 2若m=1,答案为n 3若n=2 则这样 110011001100.. 110011001100 ...

  2. 用Laravel+Grunt+Bower管理你的应用

    来源:http://yansu.org/2014/03/10/grunt-bower-and-laravel.html 为什么这么选择? 如今开源盛行,从后端的各个类库,到如今前端的jQuery插件, ...

  3. python 打印 网格

    #/usr/bin/python # -*- coding:utf-8 -*- # width 单个网格有多少个 - 宽度# height 单个网格有多少个 | 高度# lateral 横向有多少个网 ...

  4. 翻转和翻页效果TextFile的几种自定义例子

    前一篇文章,已经介绍了BMR的基础用法,再结合Spark和Scala的文档,我想应该是可以开始你的数据分析之路的.这一篇文章,着重进行一些简单的思路上的引导和分析.如果你分析招聘数据时,卡在了某个环节 ...

  5. 正则匹配中文 UTF-8 & GBK

    在php 中: //GB2312汉字字母数字下划线正则表达式 GBK: preg_match("/^[".chr(0xa1)."-".chr(0xff).&qu ...

  6. MicroERP软件更新记录1.1

    MicroERP软件更新记录 最新版本:1.1 1.增加固定资产检修.租赁.转移记录 2.增加产品质检单 3.增加零售单(收银台) 4.支持各种主流关系型数据库 5.完善了数据字典,如加入原材料材质. ...

  7. extjs combobox

    states.js中 Ext.example.states=[ ['AL','ALabama','The Heart of Dixie'], ['AK','Alaska','The Land of t ...

  8. Ubuntu的多文件编译以及c语言的数组、函数

    闲言少叙,直接切入主题. 一.Linux下的多文件编译(Ubuntu系统). 对于小程序来说,往往一个.c文件就足够了,里面包含了各种主函数和功能函数,以及函数的声明等等.但是这样的弊端主要有两点,一 ...

  9. 简单高效快捷的百度地图demo

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  10. DotSpatial 创建面状要素——含空洞

    private void toolStripButton23_Click(object sender, EventArgs e) { //选择图层 FeatureSet fs = null; fs = ...