美文网首页SonarQube
iOS-SonarQue——展示OCLint分析结果

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

作者: Aaron升 | 来源:发表于2021-04-10 00:25 被阅读0次

    传送门

    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后台,却没显示任何分析报告。

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

    SonarQube设置“质量配置”为OCLint

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

    项目配置-质量配置 指定一个质量配置-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分析)。

    SonarQube首页 CSSonarDemo项目

    Sonar结合OCLint展示分析结果

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

    关于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首页 问题列表 具体问题代码

    参考资料

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

    相关文章

      网友评论

        本文标题:iOS-SonarQue——展示OCLint分析结果

        本文链接:https://www.haomeiwen.com/subject/fjiikltx.html