如何将 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-coverage
、tslint
并且您需要激活 SonarQube。
快乐编码
【讨论】:
我尝试在 karma.conf 文件中添加值为 100 的阈值对象。我当前的代码覆盖率远低于 100。但它仍然没有失败,而是显示成功。有关如何解决此问题的任何指示? @SagarAgrawal 我很久以前就注意到了。如果代码覆盖率低于阈值(我相信从 NG 6 开始),Angular/cli 不会使测试任务失败。它得到修复,然后再次损坏,但我认为它终于可以在最新的 NG 版本中运行(不确定)......我最终使用自己的脚本检查覆盖率并手动退出非零代码。基本上,您需要一个 nodejs 脚本来读取覆盖率 html 报告并解析值并检查它们是否符合您的期望。我不推荐这种方法,最好是使用平台避免做额外的工作以上是关于如何将 jasmine 报告导入 sonarqube 进行分析的主要内容,如果未能解决你的问题,请参考以下文章
Sonarqube:为多模块导入 Jacoco xml 报告
SonarQube 未正确导入 Python 项目的 coverage.xml 文件
SONARQUBE lcov 导入错误 - 无法解析 1 个文件路径