【iOS测试系列】静态代码分析工具Xcode Analyze+OCLint

2016-06-06   出处: 搜狗测试  作/译者:NY

                                  

静态代码检测是白盒测试中很有效的发现代码问题的一种手段,通过一些工具的辅助,我们可以在进行详细的白盒测试前发现程序中一些潜在的问题,本文小编将给大家介绍两种对Objective-C代码的静态检查工具。

Xcode Analyze

简介 

Xcode Analyze 是直接集成在Xcode中的静态代码分析工具,它功能强大且使用简单,主要会对代码中的几类错误加以标识:

    1.  逻辑缺陷,如访问未初始化的变量等

    2.  内存泄露(对ARC的代码无法检测)

    3.  无用存储逻辑(永远不会被访问的变量、永远不会执行的代码) 

    …… 
    下面结合实例介绍一下它的用法。

使用方法和问题描述

    1. 点击Product -> Analyze开始执行


    2. 执行完成后,在左侧导航栏,我们可以看到分析的结果,如图:

        按问题类型分类

        按问题文件分类

        在代码中的标注

            1. Memory 

            2. Logic error 

            3. Dead store

OCLint

简介

    OCLint是一款在mac和linux下使用的,针对OC代码的静态分析工具,个人感觉它更偏向于代码规范的检测,通常可发现如下几种问题:

    1. Possible bugs – empty if/else/try/catch/finally statements

    2. Unused code

    3. Complicated code    

    4. Redundant code

    5. Code smells

    6. Bad practices 

    ……

安装、环境配置

    step1:下载OCLint并安装

     下载地址:http://oclint.org/downloads.html,选择mac os或darwin的包,目前最新版本OCLint 0.9。

    step2:配置环境变量

    OCLINT_HOME = /path/to/oclint-release(表示可执行文件的存放路径)

    export PATH = $OCLINT_HOME/bin: PATH

    将上面两条环境变量添加到.bash_profile或.bashrc文件中中

使用方法

通过xcodebuild使用OCLint
    step1:在bash中通过cd命令进到需要lint的工程路径下
    step2:在bash中执行:xcodebuild < options > | tee xcodebuild.log

 step2表示通过xcodebuild命令进行编译并把相关日志信息输入到xcodebuild.log,该log文件是后续步骤的必要条件,生成在当前的工程目录中

    step3:在bash中执行 oclint-xcodebuild xcodebuild.log

 此步骤是利用之前的.log文件通过oclint-xcodebuild的可执行文件生成了名为compile_commands.json的json格式文件。

    step4:在bash中执行 oclint-json-compilation-database,此步骤是真正执行了lint,执行完应该在终端输出结果。
  

若希望输出报告到文件中,运行如下命令:oclint-json-compilation-database -- -o=report.html

通过xctool使用OCLint
   

xctool也是mac下的一款命令行工具,相比xcodebuild功能更加强大。通过xctool使用OCLint的步骤与xcodebuild基本一致,只不过脚本更简化。

    step1:生成包含编译信息的.json文件

   path/to/xctool.sh \    -project YourProject.xcodeproj \ -scheme YourScheme \ -        reporter json-compilation-database:compile_commands.json \ build

    step2:生成分析报告

   oclint-json-compilation-database -- -o= report.html



声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
952° /9528 人阅读/0 条评论 发表评论

登录 后发表评论