wim*_*nat 11 lcov browserify istanbul sonarqube karma-coverage
我有一个带有一些测试的Angular项目.我的版本是用Gulp编写的.我使用Karma运行测试并生成lcov报告.
然后我使用gulp-sonar插件来运行Sonar.我的声纳配置看起来像这样:
"sonar": {
"host": {
"url": "http://mysonar.example.com.au"
},
"projectKey": "sonar:advertising-test",
"projectName": "advertising-test",
"projectVersion": "1.0.0",
"sources": "app/js",
"javascript": {
"lcov": {
"reportPath": "reports/coverage/lcov.info"
}
},
"exec": {
"maxBuffer": "1048576"
}
}
Run Code Online (Sandbox Code Playgroud)
Sonar运行并分析代码,但在尝试使用以下内容读取lcov报告时失败:
[09:38:58] 09:38:58.322 WARN - Problem during processing LCOV report: can't save DA data for line 0.
java.lang.IllegalArgumentException: Line with number 0 doesn't belong to file app/js/main.js
...
[09:38:58] 09:38:58.324 WARN - Problem during processing LCOV report: can't save DA data for line 65.
java.lang.IllegalArgumentException: Line with number 65 doesn't belong to file app/js/constants.js
Run Code Online (Sandbox Code Playgroud)
对于我拥有的几乎每个js文件等等.
如果我生成一个html覆盖率报告,那么报告看起来很好,所以看起来正在生成报告.
我想知道这是否是由我使用的karma-browserify步骤引起的.
有人可以帮助解决我的lcov报告错误吗?
有没有人设法获得与karma和browserify合作的lcov报道?
我想我找到了解决方案。我还没有测试过它,但阅读文档表明,这是正确的方法。
首先,问题不在于声纳,而在于业力。您的覆盖率报告是为处理后的打字稿文件构建的,因此存在行问题。
查看 karma-coverage-istanbul-reporter npm 包描述上的文档(粗体来自我):
这只是一个报告器,并不执行代码的实际检测。Babel 用户应该使用 istanbul babel 插件来检测你的代码,而webpack + typescript 用户应该使用 istanbul-instrumenter-loader,然后使用这个 karma 报告器来进行实际报告。请参阅测试配置,了解如何组合它们的 e2e 示例。
Angular 或多或少是 webpack + typescript。
这里提出了使用 istanbul Instrumenter loader 的相同解决方案: https: //www.linkedin.com/pulse/typescript-20-how-get- Correct-test-coverage-line-numbers-willem-liu
我建议我们应该重新配置 karma 配置以生成正确的 lcov.info 文件并查看结果。
归档时间: |
|
查看次数: |
1088 次 |
最近记录: |