现在代码质量在中国的大环境不那么被重视,搞得我都曾经怀疑过本身的价值观^_^。能够对代码质量视而不见的理由太多了,譬如没时间,或是以为对KPI没啥贡献之类的。若是你这么想了,你或许永远都数不清糟糕的代码风格给你和你的TEAM带来多少麻烦。html
咱们须要一个自动化的工具监控并改善代码质量,OCLint就是咱们想要的,支持Objective-C/C/C++语言。小试牛刀一把,在此分享本身的经验。json
官方文档提供了三种安装方式:xcode
我试过第一种,会报“找不到任何规则”的错误,不太推荐。HomeBrew安装可能走一半就失败,不想折腾的话就直接拷文件吧(也能够创建软连接)。我直接贴出官方文档的命令:浏览器
cp bin/oclint* /usr/local/bin/ cp -rp lib/* /usr/local/lib/ cp -rp include/* /usr/local/include/
如今,咱们须要一个配置文件来指定OCLint的规则和输出格式。最简单的方式是在你的项目根目录下新建一个.oclint文件,这样你的配置只会做用于本身的项目。OCLint的配置是基于YAML的,不熟悉请移步度娘。编辑器
小提示:工具
贴出个人配置文件:ui
disable-rules: - LongLine rule-configurations: - key: CYCLOMATIC_COMPLEXITY value: 15 - key: NPATH_COMPLEXITY value: 300 output: output.html report-type: html max-priority-1: 20 max-priority-2: 40 max-priority-3: 60 enable-clang-static-analyzer: true
oclint
命令须要传递clang编译参数。咱们使用xcodebuild
来编译项目,其实会向clang传递数量庞大的编译参数,不可能手动传递。虽然使用oclint时编译项目不是必须的,但咱们须要经过xcodebuild
命令配合xcpretty
/xctool
在编译时输出参数到json文件,而后使用oclint-json-compilation-database
命令读取json参数并生成报告。spa
我尝试了xctool
,会报错,可能由于它不兼容新版xcode?因而我使用xcpretty
代替:code
xcodebuild \ -workspace test.xcworkspace \ -scheme test \ -configuration DEBUG \ clean build | \ xcpretty -r json-compilation-database -o compile_commands.json oclint-json-compilation-database
执行完毕后,检查一下compile_commands.json文件中是否有json内容输出?在项目目录中就能够找到output.html了。用浏览器打开看一看,是否是很漂亮~xml
report-type还能够指定为xml、text、xcode等,能够动手试一试。
PS:以前趟过一个坑,clean
和build
要写在一行。若是分为两行写(官方的教程就是如此),好比这样:
xcodebuild clean xcodebuild 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.json oclint-json-compilation-database -- -report-type=xcode -o '-'
oclint-json-compilation-database
命令支持带oclint
参数(参考oclint -help),跟在--后面。咱们能够在这里覆盖.oclint配置中的内容。这里咱们覆盖了两个配置:
而后咱们运行项目,大功告成~