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

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

【问题讨论】:

    标签: javascript jasmine sonarqube version jenkins-2


    【解决方案1】:

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

    1. 您可以在 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 失败,您当然可以根据团队需要更改阈值。

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

    2. 通过将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 报告并解析值并检查它们是否符合您的期望。我不推荐这种方法,最好是使用平台避免做额外的工作
    猜你喜欢
    • 2017-11-19
    • 2021-12-26
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多