iOS Sonar 集成

1.Sonar介绍

 Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。

与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

 在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。

iOS Sonar 集成_第1张图片

技术债务:sonar根据"规则"扫描出不符合规则的代码;

覆盖率:单元测试覆盖率;

重复:重复的代码, 有利于提醒封装;

在Sonar工具中配置检测工具(规则), 然后sonar根据规则检测"质量报告文件", 得出问题数目。 比如本文配置的规则是OCLint。每个规则都有对应的处理时间, 最后:问题类型1数目 * 对应时间 + 问题类型2数目 * 对应时间 +... 得到时间。

Sonar原生并不支持iOS, 所以就需要我们自己按照Sonar原理来安装各个工具, 并将各个工具连接起来, 生成质量结果, 并由Jenkins来实现自动化执行。

2.Sonar环境配置

由于安卓的小伙伴率先试用了得以sonar服务器搭建步骤忽略。剩下的配置sonar环境,我是在Jenkins的slave机器上做实验的。需要使用的工具OCLint、Gcovr、jenkins等等。主要是通过jenkins定时触发 + 配置任务来实现。Jenkins可以通过协同很多别的工具工作, 本文就是通过.sh(脚本)来协同SVN/Git 与 各个工具, 来生成文件并传给Sonar服务器。此处相关的配置不做介绍,主要记录一下使用过程中遇到的部分小坑。

SonarQube Scanner下载安装

配置jenkins脚本

iOS Sonar 集成_第2张图片

sonar默认没有安装oc的插件,需要手动下载:sonar-objective-c-plugin-0.5.0-SNAPSHOT.jar下载地址

在项目与*.xocdeproj同级目录下新建文本sonar-project.properties配置待测试项目信息。引用地址

此外 Sonar Xcode8兼容需要特别注意

执行过程中遇到sonar-runner: command not问题,需要检查一下你Mac的环境变量配置。需要把  sonar-runner  这个执行文件的路径,  配在环境变量里了。引用地址

PATH=/usr/local/etc/sonar-runner-2.4/bin:$PATH在    .bash_profile    文件里加了一行    =后面是  sonnar-runner可执行文件的路径,在    .bash_profile    文件里加了下面这一行PATH=/usr/local/etc/sonar-runner-2.4/bin:$PATH,=后面是  sonnar-runner可执行文件的路径。

sonar-runner已经被scanner代替了。

iOS Sonar 集成_第3张图片

这里的路径只是写 类文件所在的文件夹的名字,如不管用可以填上全路径也可以。

遇到此类错误在配置项里注释掉上述三项就好了。

compile_commands.json文件一定要有东西的。

执行jenkins的时候有没有遇到FATAL: SonarQube Scanner executable was not found for SonarQube Scanner 2.8错误时,下载最新的Scanner找到对应目录替换即可。

参考文章:

1、iOS Sonar集成流程详解

2、基于Sonar的iOS代码质量检测系统

3、IOS测试之sonar检查ios代码质量

4、[实践]Sonar Xcode8兼容

5、IOS-Sonar代码质量监控

也可以加QQ群交流:323276186

你可能感兴趣的:(iOS Sonar 集成)