博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OCLint静态分析工具的安装和使用
阅读量:5791 次
发布时间:2019-06-18

本文共 2125 字,大约阅读时间需要 7 分钟。

如今代码质量在中国的大环境不那么被重视,搞得我都曾经怀疑过自己的价值观^_^。可以对代码质量视而不见的理由太多了,譬如没时间,或是觉得对KPI没啥贡献之类的。如果你这么想了,你或许永远都数不清糟糕的代码风格给你和你的TEAM带来多少麻烦。

我们需要一个自动化的工具监控并改善代码质量,OCLint就是我们想要的,支持Objective-C/C/C++语言。小试牛刀一把,在此分享自己的经验。

官方文档提供了三种安装方式:

  • 添加到系统PATH
  • 使用HomeBrew
  • 直接拷贝文件到系统路径

我试过第一种,会报“找不到任何规则”的错误,不太推荐。HomeBrew安装可能走一半就失败,不想折腾的话就直接拷文件吧(也可以建立软链接)。我直接贴出官方文档的命令:

cp bin/oclint* /usr/local/bin/cp -rp lib/* /usr/local/lib/cp -rp include/* /usr/local/include/

现在,我们需要一个配置文件来指定OCLint的规则和输出格式。最简单的方式是在你的项目根目录下新建一个.oclint文件,这样你的配置只会作用于自己的项目。OCLint的配置是基于YAML的,不熟悉请移步度娘。

小提示:

  • 注意缩进,否则会报错。
  • 字符串可以用单引号包括起来,当你的字符中含有“-”等特殊符号时,这是必须的。

贴出我的配置文件:

disable-rules:- LongLinerule-configurations:- key: CYCLOMATIC_COMPLEXITY  value: 15- key: NPATH_COMPLEXITY  value: 300output: output.htmlreport-type: htmlmax-priority-1: 20max-priority-2: 40max-priority-3: 60enable-clang-static-analyzer: true

oclint命令需要传递clang编译参数。我们使用xcodebuild来编译项目,其实会向clang传递数量庞大的编译参数,不可能手动传递。虽然使用oclint时编译项目不是必须的,但我们需要通过xcodebuild命令配合xcpretty/xctool在编译时输出参数到json文件,然后使用oclint-json-compilation-database命令读取json参数并生成报告。

我尝试了xctool,会报错,可能因为它不兼容新版xcode?于是我使用xcpretty代替:

xcodebuild \    -workspace test.xcworkspace \    -scheme test \    -configuration DEBUG \     clean build | \    xcpretty -r json-compilation-database -o compile_commands.jsonoclint-json-compilation-database

执行完毕后,检查一下compile_commands.json文件中是否有json内容输出?在项目目录中就可以找到output.html了。用浏览器打开看一看,是不是很漂亮~

report-type还可以指定为xml、text、xcode等,可以动手试一试。

PS:之前趟过一个坑,cleanbuild要写在一行。如果分为两行写(官方的教程就是如此),比如这样:

xcodebuild cleanxcodebuild build

在终端执行似乎没问题,在XCode中以编译脚本的方式执行会发现输出内容比较少(也许和XCode版本有关系),compile_commands.json中内容是空的。后续oclint-json-compilation-database命令会缺少参数报错。纠结了很久,大家引以为戒~

OCLint还支持集成到XCode,这样我们就可以在编辑器里以warning的形式查看OCLint的建议,比较直观。

建立一个Aggregate目标:

图片描述

然后在Build Phases中新建一段脚本:

xcodebuild -workspace test.xcworkspace -scheme test -configuration DEBUG clean build | \xcpretty -r json-compilation-database -o compile_commands.jsonoclint-json-compilation-database -- -report-type=xcode -o '-'

oclint-json-compilation-database命令支持带oclint参数(参考oclint -help),跟在--后面。我们可以在这里覆盖.oclint配置中的内容。这里我们覆盖了两个配置:

  1. 指定输出类型为xcode。
  2. 指定输出文件名为-,意思是输出到stdout,否则会看不到提示。

然后我们运行项目,大功告成~

图片描述

转载地址:http://jqwfx.baihongyu.com/

你可能感兴趣的文章
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>
在SpringMVC利用MockMvc进行单元测试
查看>>
Nagios监控生产环境redis群集服务战
查看>>
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
查看>>
Android BlueDroid(一):BlueDroid概述
查看>>
Java利用httpasyncclient进行异步HTTP请求
查看>>
宿舍局域网的应用
查看>>
html代码究竟什么用途
查看>>
Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
查看>>
Python version 2.7 required, which was not foun...
查看>>
context:annotation-config vs component-scan
查看>>
经典sql
查看>>
CSS3边框会动的信封
查看>>
JavaWeb实例设计思路(订单管理系统)
查看>>
source insight中的快捷键总结
查看>>
PC-IIS因为端口问题报错的解决方法
查看>>
java四种线程池简介,使用
查看>>
ios View之间的切换 屏幕旋转
查看>>