SonarQube与iOS的集成

什么是SonarQube?

SonarQube是SonarSource开发的开放源代码平台,用于连续检查代码质量,以对代码进行静态分析来执行自动检查,以检测20多种编程语言中的错误,代码气味和安全漏洞。

声纳斯威夫特

Backelite开发的Swift插件帮助人们将Sonar集成到Swift项目中。 它涵盖以下几点。

代码覆盖率:这是Sonarqube中可用的度量之一,它描述了在运行自动测试时执行了多少行代码。
Sonar-Swift将为您提供已执行的代码块,并允许您深入数据并确切查看在特定测试期间执行和未执行的代码行。

在项目中设置代码覆盖率设置有助于保持代码的可维护性和易更改性,并且拥有涵盖大多数或全部应用程序的测试套件意味着您将拥有更高的安全性,以确保某些产品不会在生产中崩溃。

可维护性:声纳可维护性是代码气味的数量加上根据一组预定义规则(基于您使用的Lint)在代码中所欠的技术负担。 Sonar为每个部分提供了简单的评分,使您可以快速查看所分析的应用程序的性能。

可靠性:可靠性等同于正确性,发现和修复的错误数量,应用程序在交付中的一致性以及对代码例程已知结果的信心

安全性:关于安全性,Sonar涵盖了可以在项目中找到的漏洞数量。 几分钟即可显示解决所有漏洞问题的工作。

为Swift设置Sonar

步骤1.下载并设置SonarQube
1.下载SonarQube:https://www.sonarqube.org/downloads/
2.解压缩下载的文件。
3.将下载的文件移到/ Applications /文件夹下。
4.将其重命名为SonarQube并删除版本后缀。

第2步。下载并设置SonarScanner
1.下载SonarScanner:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner并单击Mac OS X 64位。 下载Mac OS X专用的SonarScanner
2.解压缩下载的文件。
3.将下载的文件移到/ Applications /文件夹下。
4.将其重命名为SonarScanner并删除版本后缀。

步骤3.使用新路径更新.bash_profile
1.启动终端并运行以下命令。
$ cd〜/
$ vi .bash_profile
2.上面的命令将在vi编辑器中打开您的bash_profile
3.使用向下箭头键跳至最后一行。
4.使用左右箭头导航到最后一个字符。
5.按i启用插入模式。
6.复制并粘贴以下行。
#声纳设置
导出PATH = $ PATH:/ Applications / SonarScanner / bin
导出PATH = $ PATH:/ Applications / SonarQube / bin
7.按Esc键,并且:会出现在vi编辑器的左下角。
8.输入wq! 保存并退出。

步骤4:从Backlite设置SonarSwift
1.下载:https://github.com/Backelite/sonar-swift/releases
2.下载jar。 就我而言,我下载了backelite-sonar-swift-plugin-0.4.4.jar
3.将此jar文件移动到以下文件夹中。
/ Applications / SonarQube /扩展/插件/

步骤5:启动SonarQube
1.运行以下命令以启动SonarQube服务器。
sh /Applications/SonarQube/bin/macosx-universal-64/sonar.sh控制台
2.如果一切顺利,您应该看到以下控制台。
正在运行SonarQube…
包装| →包装器开始作为控制台
包装| 正在启动JVM…
jvm 1 | 包装器(版本3.2.3) http://wrapper.tanukisoftware.org
jvm 1 | 版权所有1999–2006 Tanuki Software,Inc.保留所有权利。
jvm 1 |
jvm 1 | 2019.03.12 11:49:46 INFO应用程序[] [osaAppFileSystem]清洁或创建临时目录/ Applications / SonarQube / temp
jvm 1 | 2019.03.12 11:49:46 INFO应用程序[] [osaes.EsSettings] Elasticsearch监听/127.0.0.1:9001
jvm 1 | 2019.03.12 11:49:47 INFO app [] [osapProcessLauncherImpl]启动过程[[key =’es’,ipcIndex = 1,logFilenamePrefix = es]]来自[/ Applications / SonarQube / elasticsearch]:/ Applications / SonarQube / elasticsearch / bin / elasticsearch -Epath.conf = / Applications / SonarQube / temp / conf / es
jvm 1 | 2019.03.12 11:49:47 INFO应用程序[] [osaSchedulerImpl]等待Elasticsearch启动并运行
jvm 1 | 2019.03.12 11:49:47 INFO应用程序[] [oepPluginsService]未加载任何模块
jvm 1 | 2019.03.12 11:49:47 INFO应用[] [oepPluginsService]加载的插件[org.elasticsearch.transport.Netty4Plugin]
jvm 1 | 2019.03.12 11:49:54 INFO应用程序[] [osaSchedulerImpl]进程已启动

步骤6:登录
1.转到浏览器。 打开以下URL。
http:// localhost:9000 / about
2.单击登录。
3.使用admin作为用户名, admin作为密码。

声纳快速设置完成。 现在,将这一代码与您的XCode项目集成。

与XCode项目集成

  1. 创建一个演示XCode项目,并确保已选中Include Unit TestsInclude UI Tests

2.如果需要,为项目创建并安装Pod。 它将创建xcworkspace
3.编辑项目方案,选择“测试并检查所有目标的代码收集范围”

4.从此URL下载sonar-project.properties文件,并将其保存在项目根目录中

  • 更新您的Sonar服务器网址,用户名和密码。 (这里我们使用了本地主机声纳)
    sonar.host.url = http:// localhost:9000
    sonar.login =管理员
    sonar.password =管理员
  • 添加声纳项目详细信息
    sonar.projectKey = com.company.app (此键将为您添加声纳服务器)
    sonar.projectName = SonarDemoApp (这将是声纳上的项目名称)
    sonar.projectDescription =这是用于代码质量检查的Sonar演示应用程序
  • 添加项目语言。 如果您有一个混合ObjC / Swift的项目,请发表评论
    sonar.language = swift
  • 源目录的路径
    sonar.sources =。 (这将包括项目根目录中的所有目录)
  • 排除目录
    sonar.test.inclusions = ** / *测试* / **
    sonar.test.inclusions = *。swift
    sonar.exclusions = ** / *。xml,Pods / ** / *,Reports / ** / *
  • 测试目录的路径(如果没有测试,请添加注释)
    sonar.tests = SonarDemoTests,SonarDemoUITests
  • 目标模拟器运行surefire
    sonar.swift.simulator = platform = iOS Simulator,名称= iPhone 7,OS = 12.1
  • Xcode项目配置(.xcodeproj)
    sonar.swift.project = SonarDemo.xcodeproj
    sonar.swift.workspace = SonarDemo.xcworkspace
  • 指定您的应用名称
    sonar.swift.appName = SonarDemo
  • 建立您的应用程式的方案
    sonar.swift.appScheme =声纳演示
  • 用于方案的配置。 如果您未指定默认值为调试
    sonar.swift.appConfiguration =调试
  • run-sonar.sh生成的报告存储在sonar-reports /中
    sonar.junit.reportsPath = sonar-reports / TEST-report.xml
    sonar.swift.coverage.reportPattern = sonar-reports / coverage-swift * .xml
    sonar.swift.swiftlint.report = sonar-reports / * swiftlint.txt
    sonar.swift.tailor.report =声纳报告/*tailor.txt

5.从此URL下载run-sonar-swift.sh文件,并将其保存在项目根目录中
6.从项目根目录下的终端运行./run-sonar-swift.sh -v ,它将运行声纳脚本并在声纳服务器上上传代码分析报告。
7.刷新声纳页面,将显示项目统计信息,如下所示

8.它将显示代码覆盖率

9.它还将显示代码气味和漏洞

示范影片

请在下面找到演示视频,以帮助您了解集成。

示范项目

请在下面的演示项目中找到参考。

Pmobiledev /声纳演示
该项目将有助于将SonarQube与iOS项目集成– Pmobiledev / SonarDemo github.com

感谢您的参与。 如有任何问题或想了解更多信息,请随时添加评论。 干杯…