mac下通过xcodebuild使用oclint

step1 :下载oclint并安装

下载地址: http://oclint.org/downloads.html

选择mac os x或者darwin的包,下载到本地。

目录类似下面:

oclint-release
|-bin
|-lib
|---clang
|-----3.4
|-------include
|-------lib
|---oclint
|-----rules
|-----reporters

安装官方指南: http://docs.oclint.org/en/dev/intro/installation.html

我们此时在bash(终端terminal)中运行oclint会告诉我们命令找不到,我们需要把它的执行文件路径加入到环境变量或者把执行文件拷贝到系统目录。

方法1(推荐):把路径加到环境变量中(实际是.bash_profile或者.bashrc文件中,关于这两者有不知道的同学可以搜索之)

OCLINT_HOME=/path/to/oclint-release   // /path/to/oclint-release 是执行文件存放路径,例如:/Users/xxx/Desktop/oclint-0.9.dev.a6ffa25
export PATH=$OCLINT_HOME/bin:$PATH
关于.bash_profile,mac系统里本身可能不存在,创建和编辑的步骤见下文:
http://blog.csdn.net/openglnewbee/article/details/36663591
关于bashrc,位于/etc目录下,使用command+shift+g 可以前往/etc,找到bashrc文件修改权限后可以编辑。

方法2:把执行文件拷贝到系统目录(请自行尝试)

A few directories are supposed to be in the system PATH already, to mention a few, /usr/local/bin, /usr/bin, /bin, etc. Therefore, it’s also possible to copy the OCLint binaries into one of these folders, and move the dependencies over. As an example, presumes /usr/local/bin is in the PATH (may require root permission).

  1. cp bin/oclint* /usr/local/bin/
  2. cp -rp lib/* /usr/local/lib/

Dependency libraries are required to be put into appropriate directory, because oclint executable searches $(/path/to/bin/oclint)/../lib/clang, $(/path/to/bin/oclint)/../lib/oclint/rules and $(/path/to/bin/oclint)/../lib/oclint/reporters for builtin headers and dynamic libraries by default.

以上两个方法执行完其中1个我们就可以说oclint已经安装完成了,此时在bash中运行oclint应该得到如下提示:

oclint: Not enough positional command line arguments specified!

step 2:通过xcodebuild执行oclint命令
1.在bash中通过cd命令进到需要lint的工程路径下
2.在bash中执行:xcodebuild | tee xcodebuild.log 
(若工程中存在多个不同的target,按照如下格式输入: xcodebuild  -target selectedTargetName | tee xcodebuild.log,将需要跑的target名字填入到命令中  )
 此命令调用xcodebuild进行了编译并把相关日志信息输入到xcodebuild.log,该log文件是后续步骤的必要条件,生成在当前的工程目录中.官方解释如下:
We need to save the xcodebuild output to a log file, by convention, name it xcodebuild.log. We can use xcodebuild <options> | tee xcodebuild.log to pipe every line of the output to xcodebuild.log file.

3.在bash中执行 oclint-xcodebuild xcodebuild.log
此步骤是利用之前的.log文件通过oclint-xcodebuild的可执行文件生成了名为compile_commands.json的json格式文件,该文件应该包含了多组内容,其中的key分别为directory、command、file,该文件不应该为空。此文件是下一步输入的必要条件。

4. 在bash中执行 oclint-json-compilation-database,此步骤是真正执行了lint,执行完应该在终端输出结果。
若希望输出报告到文件中,运行如下命令:
oclint-json-compilation-database -- -o=report.html

官方参考指南:http://docs.oclint.org/en/dev/guide/xcodebuild.html

注意事项:
1.octool 0.7及以前的版本不支持xcode5.
2.在运行前注意执行clean,也可在step2中的第二步执行如下命令:

xcodebuild -dry-run | tee xcodebuild.log 说明如下:

If a source file has been built by xcodebuild, and it’s not been modified since last build, then it might not be compiled again when you invoke xcodebuild the second time. In other words, if it happens, this file won’t be shown in the log. So we won’t see it in the compile_commands.json. To avoid that, use clean build by removing all build products and intermediate files from the build directory.

However, cleaning and building the entire project takes longer time, especially for those big projects. In this case, if file structure hasn’t been changed, and build settings haven’t been modified, then it’s okay to keep the existing xcodebuild.log and compile_commands.json to save time.

If the xcodebuild build can be guaranteed to be successful with the options specified, then we could also use -dry-run option to build the project without actually running the commands, so that we can still capture the xcodebuild log but with reduced time.

				
时间: 2024-09-20 06:29:35

mac下通过xcodebuild使用oclint的相关文章

解决小米、红米及其他 Android 手机无法在 Mac 下进行真机调试

在 Mac OSX 下做 Android 真机测试的时候,发现 Android Device Chooser 里,小米手机的状态显示为 unknown.但是手机的 USB 调试已经打开了.难道是因为驱动的问题?然而小米并没有提供 Mac 下的驱动程序. 注:小米手机打开 USB 调试模式的方法--在"关于手机"里,连续点击"Android 版本"四次,然后回到上一级,"关于手机"上面就出现了"开发者选项" 其实在 Linux

如何在mac下搭建云服务器?

问题描述 如何在mac下搭建云服务器? 最近学习了android,想自己搭建个云服务器,在mac用什么程序搭建比较好?mac怎么连接云服务器也不是很清楚.或者是推荐看看什么书? 解决方案 http://www.cnblogs.com/wx1993/p/5022670.html

Mac下安装nginx

Mac下安装nginx   Installing GnuPG 1.4.11 on Mac OS X 10.6.6 Snow Leopard Another day, another GPG install. Different machine, and slightly different versions of Mac OS X and GPG. Unlike other times, I found I didn't need to pass the --disable-asm flag t

Mac下如何通过远程桌面向Windows发送Ctrl+Alt+Delete

今天在Mac中通过远程桌面给Windows安装Git Extensions,在安装程序自动关闭资源管理器时,Windows无响应,桌面显示黑屏.于是,想通过Ctrl+Alt+Delete快捷键调出对话框注销当前用户登录. 可是,很简单的一个问题竟然变成了一个难题--如何通过远程桌面向Windows发送Ctrl+Alt+Delete快捷键而且是在Mac下? 在Mac下没有专门的Delete键,需要借助shift+fn组合健,于是试了试control+option(alt)+shift+fn,没有效

Mac下Excel中无法用键盘方向键切换单元格的原因

事在Mac下的Excel表要切换单元格,一般来说通过键盘即可,但是却发现单元格无法切换反而整个表会跟着移动.google后,用了这个方法解决:外接一个USB键盘,然后按Ctrl+Scroll Lock解决,因为Mac没有Scroll Lock.线索在此:http://forums.macrumors.com/showthread.php?t=524751 原文在此:http://forums.macrumors.com/showthread.php?t=524751 查看本栏目更多精彩内容:ht

Mac 下搭建Android开发环境

1.Java运行时: 在bash终端中输入java,如果没有安装java运行时会自动弹出一个Dialog提示是否安装,点击安装即可. 2.Eclipse + ADT + SDK: 在Mac下好像不需要下载Eclipse,又或者是现在Google专门打包定制了开发环境,反正只需要到:http://developer.android.com/sdk/index.html#download下载集成包即可.顺便白一句,在Mac下打开android.com明显快很多,没理由啊-- 无需单独下载Eclips

Mac下3款词典翻译工具软件横评

近日,在windows平台上占有率最高的翻译软件有道词典推出了Mac版本,给久已波澜不惊的Mac翻译软件市场注入了一股新的活力,值得关注.相对于 windows平台的大众化,Mac平台由于其用户群体高端.整体风格简洁清爽.开发系统封闭等特点,用户选择软件的关注点也不同于windows平台,软件品牌份额及市场格局与windows平台下大相径庭.那么,众多Mac平台的翻译软件品牌中,哪款的表现更出色?哪款更适合Mac平台下的使用?作为资深的Mac用户,小编特地挑选了两款目前比较流行的Mac端词典软件

MAC下的SLICY切图神器怎么用

  MAC下的SLICY切图神器怎么用 切图方便,简单的拖放即可,傻瓜式操作2. 培养为图片资源合理命名的好习惯 自动生成@2x两套图片,极大方便IOS开发者 二.软件使用 1.PSD文件的预处理 这一步可以由设计师来处理,不过个人推荐程序员亲自完成这一步骤,因为这里涉及到图片的命名,我们自己来对图片进行命名可以更好的使之符合整个项目的命名规则,方便在项目中对对应图片资源进行调用和管理. 首先用PhotoShop打开设计师给你的PSD文件,如下图: 图中的绿色状态图标即为本次需要切出的素材图片

如何解决无法释放Mac下删除文件磁盘空间

  如何解决无法释放Mac下删除文件磁盘空间         方法/步骤 首先呢,不知道是不是我这里才遇到:删除文件(之后清理掉Trash)或者用rm -rf直接命令行删除后,磁盘空间不释放. df -h或者用About this Mac看,磁盘空间都没变化.inode节点使用情况也没变化.后来没办法,查来查去,发现根目录下有一个.MobileBackups,占据空间巨大.查文档得知,这是Time Machine的本地备份. 问题是:我已经关闭Time Machine了,但是依然会在这里追加东西