iOS-SonarQue——展示OCLint分析结果

传送门

Demo源码:https://gitee.com/hcsaaron/cssonar-demo

《iOS-SonarQue——安装及使用》

当前文章:《iOS-SonarQue——展示OCLint分析结果》

《iOS-SonarQue——使用slather生成覆盖率报告》

系统环境

Mac OS 10.15.6

前言

看完《iOS-SonarQue——安装及使用》,我们学会如何搭建本地SonarQube服务器,连接PostgresSQL,使用Sonar-Scanner分析iOS项目。但在SonarQube后台,却没显示任何分析报告。

iOS-SonarQue——展示OCLint分析结果_第1张图片

由于使用免费的SonarQube Community版本,似乎不支持Objective-C分析,就又尝试下载使用SonarQube Developer版本,但发现无法成功分析项目,原因是无使用许可证,而最便宜的竟然要120欧元/年,只能放弃。
经过摸索,似乎找到一个插件支持分析Swift和Objective-C,下面尝试使用。

SonarQube设置“质量配置”为OCLint

点击项目-项目配置-质量配置-指定一个质量-OCLint-保存

iOS-SonarQue——展示OCLint分析结果_第2张图片
项目配置-质量配置
iOS-SonarQue——展示OCLint分析结果_第3张图片
指定一个质量配置-OCLint

添加sonar-swift插件(该插件支持分析Swift、Objective-C)

  • 直接下载插件
    从 sonar-swift 这里下载插件backelite-sonar-swift-plugin-0.4.6.jar,放到$SONARQUBE_HOME/extensions/plugins/下($SONARQUBE_HOME为SonarQube的目录路径)

  • 下载源码编译生成插件
    源码地址:https://github.com/Idean/sonar-swift
    下载源码后,修改build-and-deploy.sh中的SONARQUBE_HOME指向SonarQube目录,然后编译build-and-deploy.sh成功后,会生成backelite-sonar-swift-plugin-0.4.7-SNAPSHOT.jar并自动放到$SONARQUBE_HOME/extensions/plugins

接着重启SonarQube

./sonar.sh stop
./sonar.sh console

重新登录SonarQube服务器,在应用市场可以看到这里显示Swift (Backelite) 0.46已安装

使用sonar-scanner重新分析项目,完了再刷新SonarQube后台,可以看到刚分析的项目有了报告信息,只不过都是完美通过的(因为还未通过OCLint分析)。

iOS-SonarQue——展示OCLint分析结果_第4张图片
SonarQube首页
iOS-SonarQue——展示OCLint分析结果_第5张图片
CSSonarDemo项目

Sonar结合OCLint展示分析结果

在SonarQube后台,我们进入项目配置-设置,可以在左侧看到前面添加的插件Swift (Backelite),点击后可以右侧看到一些路径配置,OCLint的报告的相对路径(Path to OCLint pmd formatted report)sonar-reports/*oclint.xml,我们在可以将OCLint分析报告放置在此路径中,SonarQube即可显示出分析结果。

iOS-SonarQue——展示OCLint分析结果_第6张图片

关于OCLint的使用,可以移步《OCLint学习》

在工程目录中新建run-sonar.sh编辑脚本如下:

PROJECT_NAME="CSSonarDemo.xcworkspace"
TARGET_NAME="CSSonarDemo"

rm -rf sonar-reports

mkdir sonar-reports

rm -rf ./build/derivedData

xcodebuild clean -UseModernBuildSystem=NO

xcodebuild -workspace ${PROJECT_NAME} -scheme ${TARGET_NAME} -UseModernBuildSystem=NO -derivedDataPath ./build/derivedData -configuration Debug COMPILER_INDEX_STORE_ENABLE=NO | xcpretty -r json-compilation-database -o compile_commands.json

oclint-json-compilation-database -e Pods -- -report-type html -o oclintReport.html
oclint-json-compilation-database -e Pods -- -report-type pmd -o sonar-reports/oclint.xml \
-max-priority-1=9999 \
-max-priority-2=9999 \
-max-priority-3=9999 \
    
/bin/sh sonar-scanner -X

然后在工程目录中执行以下命令:

sh run-sonar.sh

现在来看SonarQube后台,可以看到首页中的项目显示有15个异味,点击项目-问题,可以看到清晰的问题列表,点击某个问题,还能进入到具体问题代码。

SonarQube首页
iOS-SonarQue——展示OCLint分析结果_第7张图片
问题列表
iOS-SonarQue——展示OCLint分析结果_第8张图片
具体问题代码

参考资料

sonar-swift插件:https://github.com/Idean/sonar-swift

你可能感兴趣的:(iOS-SonarQue——展示OCLint分析结果)