[OCLint]iOS项目中使用OCLint指导手册

来源:互联网 发布:mac唇部打底 专柜价 编辑:程序博客网 时间:2024/05/03 20:51

这篇文章会向你展示如何使用OCLint来分析一个Xcode项目的代码质量

参阅
如果你使用FaceBook的xctool来build你的Xcode项目、请使用json-compilation-database来简化你的操作。我们非常推荐你使用xctool 来代替xcodebuild,另外、如果你使用xcodebuild、可以考虑使用xcpretty.

先决条件

  • oclint-manual
  • oclint-json-compilation-database manual
  • [OCLint] oclint-xcodebuild 使用手册
  • Apple’s official xcodebuild Manual Page

背景

OCLint 可以识别一个叫做complie_commands.json的文件来配置分析每个文件的选项,对于xcode的用户来说、这些编译的选项都被暗中在Xcode的build setting、使用命令行的时候我们可以看到实际发生了什么。我们要通过捕捉xcodebuild的log、使用oclint-xcdoebuild来提取合适的编译选项,把他们转换成JSON格式的编译数据、然后保存到compile_command.log文件中,然后使用 oclint-json-compilation-database 来运行分析工作。

运行xcodebuild

对某些人来说,配置好正确的选项、然后运行xcodebuild是一个相当简单的任务。但是、一些人会觉得不是很直观、所以请耐心一些、花费些时间。你会发现很多有帮助的在线手册和博客。

基本上、先让我们建立一个demoProject,然后知道我们有哪些选项、输入 xcodebuild -list:

$ xcodebuild -listInformation about project "DemoProject":    Targets:        DemoProject        DemoProjectTests    Build Configurations:        Debug        Release    If no build configuration is specified and -scheme is not passed then "Release" is used.    Schemes:        DemoProject

我们可以在GUI中看到这些选项:

GUI

基于我们在Xcode中的选项、我们可以为xcodebuild配置正确的选项。现在,我们可以build 我们的demoProject :

xcodebuild -target DemoProject -configuration Debug -scheme DemoProject

我们可以看到xcodebuild的细节和结尾的 * BUILD SUCCEEDED * 。xcodebuild有很多的选项、比如:workspace,arch,sdk等、当需要的时候、我们可以使用他们。

捕捉输出

我们需要保存xcodebuild的log信息到一个文件中、按照惯例、命名为xcodebuild.log。可以使用xcodebuild | tee xcodebuild.log把每一行log都输入到xcodebuild.log中。

运行 oclint-xcodebuild

以root权限运行oclint-xcodebuild,一个compile_command.json文件应该会被生成。

运行 oclint-json-compilation-database

终于到了最后一步了!运行 oclint-json-compilation-database,我们就可以开始代码分析了。我们可以过滤JSON的编译数据、然后分析我们感兴趣的文件。也可以改变OCLint的行为来满足特殊的需求。

讨论

Clean Code

如有一个源文件已经被xcodebuild build过、而且自从上次build之后没有任何的更改、那它可能不会被再次编译,如果你再次调用xcodebuild的话。另外、如果这真的发生的话、这个文件不会在log中展示。因此我们不会在compile_command.log文件中看到它。为了避免这个问题的发生,我们需要clean build 来移除build 文件夹中的所有信息。

但是、clean和build整个的项目需要花费很长的时间,尤其是对于大型的项目。在这种情况下、如果文件的结构没有变化、build的设置也没有被改变,保存已存在的xcodebuild.log和compile_command.json来节省时间是没问题的。

如果使用特定的设置、可以保证xcodebuild一定会成功、那我们还可以使用-dry -run 的选项、这样可以不运行这些命令、build项目、从而节省时间。

保存到仓库

compile_command.json是环境敏感的。当环境改变时、比如Mac的系统升级、Xcode升级、或者其他SDK的改变、这个时候、请移除xcodebuild.log和compile_command.json、然后在更新选项之后运行xcodebuild、来生成心的compile_command.json文件。

把compile_commands.json放到源代码的仓库不是必须的。相反、最好是在有变化后重新生一个compile_command.json文件。

我们还可以把整个过程都写成脚本、然后使用脚本来检查。所有的开发者就可以使用这个脚本生成最适合自己本地环境的compile_command.json文件。

你也许会对 using OCLint in
Xcode感兴趣。

本文翻译自http://docs.oclint.org/en/stable/guide/xcodebuild.html,您可以移步看最正宗的内容。

0 0