如何将 jasmine 报告导入 sonarqube 进行分析

Posted

技术标签:

【中文标题】如何将 jasmine 报告导入 sonarqube 进行分析【英文标题】:How to import the jasmine report to sonarqube for analysis 【发布时间】:2018-08-25 03:57:39 【问题描述】:

我们正在使用 SonarQube 5.2 版,它设置了 jenkins 以报告 SonarQube 服务器上的代码覆盖率,目前只有 java 代码覆盖率在 sonarQube 上到位,现在我们的目标是如果项目质量不合格,则 jenkins 构建失败门以及是否可以将 javascript 的 jasmine 测试与 SonarQube 集成以及如何实现它

【问题讨论】:

【参考方案1】:

要使构建成功取决于质量度量,您可以在 jasmine 业力测试中添加一个阈值。

    您可以在 karma.conf.js 中添加:

    coverageIstanbulReporter: 
      reports: [ 'html', 'lcovonly', 'text-summary', 'cobertura' ],
      fixWebpackSourcePaths: true,
      thresholds: 
        statements: 100,
        lines: 100,
        branches: 100,
        functions: 100
      
    ,
    

如果覆盖率小于100%,这会使ng test --watch=false --code-coverage 失败,您当然可以根据团队需要更改阈值。

    可以使用ng lint 使用tslint 来检查代码样式

    通过将sonar-project.properties 添加到根文件夹,使 SonarQube 检查您的源代码

    sonar.projectKey=YOUR_PROJECT_KEY
    sonar.projectName=YOUR_PROJECT_NAME
    sonar.projectVersion=YOUR_VERSION
    
    sonar.sources=src
    sonar.exclusions=**/node_modules/**
    sonar.tests=src/app
    sonar.test.inclusions=**/*.spec.ts
    sonar.sourceEncoding=UTF-8
    sonar.ts.tslintconfigpath=tslint.json
    sonar.typescript.lcov.reportPaths=coverage/lcov.info
    

在您的 CI 配置中,您需要确保您正在执行 ng test --code-coveragetslint 并且您需要激活 SonarQube。

快乐编码

【讨论】:

我尝试在 karma.conf 文件中添加值为 100 的阈值对象。我当前的代码覆盖率远低于 100。但它仍然没有失败,而是显示成功。有关如何解决此问题的任何指示? @SagarAgrawal 我很久以前就注意到了。如果代码覆盖率低于阈值(我相信从 NG 6 开始),Angular/cli 不会使测试任务失败。它得到修复,然后再次损坏,但我认为它终于可以在最新的 NG 版本中运行(不确定)......我最终使用自己的脚本检查覆盖率并手动退出非零代码。基本上,您需要一个 nodejs 脚本来读取覆盖率 html 报告并解析值并检查它们是否符合您的期望。我不推荐这种方法,最好是使用平台避免做额外的工作

以上是关于如何将 jasmine 报告导入 sonarqube 进行分析的主要内容,如果未能解决你的问题,请参考以下文章

Sonarqube:为多模块导入 Jacoco xml 报告

SonarQube 未正确导入 Python 项目的 coverage.xml 文件

SonarQube 和 Lcov 报告无法解析文件路径

SONARQUBE lcov 导入错误 - 无法解析 1 个文件路径

如何在 VSTS CI/CD 发送的构建电子邮件中添加 SonarQube 分析报告?

我如何在 jenkins 上发布 sonarqube 报告?使用 sonarqube portlet