为了进一步加强测试质量,同时探索测试左移在同步中的实践,iOS同步助手尝试接入静态代码扫描工具。希望通过不同的途径提前发现日常测试中难发现的问题。
然而iOS静态代码扫描工具有不少,它们都有什么不同?我应该选哪一个?因此,本文主要针对主流的几个工具,对同步助手的代码进行扫描,并分析对比它们的扫描结果,再敲定后续的接入计划。
该文章从以下几部分进行阐述,可按需阅读:
一、工具介绍
二、遇到的坑点
三、扫描能力对比
四、部分结果分析
一、工具介绍
本次选取了四个主流的扫描工具: coverity、infer、clang、oclint。
1、coverity
Coverity是检测和解决C、C++、Java和C#源代码中最严重的缺陷的领先的自动化方法。它将基于布尔可满足性验证技术应用于源代码分析引擎,分析引擎利用其专利的软件DNA图谱技术和meta-compilation技术,综合分析源代码、编译构建系统和操作系统等可能使软件产生的缺陷。
2、clang
Clang作为LLVM编译器框架的前端,最主要的任务是词法分析、语法分析,中间代码生成。源代码通过clang语法分析后,生成了语法分析树(AST)后,可作为静态分析工具对AST进行分析。
Clang命令行调用方法:
(1)下载clang:http://clang-analyzer.llvm.org/
(2)命令行cd到项目代码所在目录:$ cd /path
(3)使用clang扫描,命令开头为clang的scan-build所在目录:$
/Users/kylinhuang/Documents/tools/analyzer/bin/scan-build -vxcodebuild
-target QQPimPro -configuration Developer
(4)可以看到生成报告在指定目录下