javascript - 总体覆盖率指标并不反射(reflect)我的本地结果

标签 javascript typescript sonarqube sonarqube-scan

我们的项目中混合了 javascript 和 typescript 源,这些源在我们的 SonarQube 实例中进行了报告。

直到最近,我们还在运行纯 JavaScript 代码库,因此使用默认的 JavaScript 插件和 Sonar 来衡量我们的指标。

现在将大部分代码迁移到 typescript 后,我们已经配置了 SonarTsPlugin ( https://github.com/Pablissimo/SonarTsPlugin ) 并生成了两个 lcov 文件(使用 gulp 和 istanbul),一个用于我们的 js 源,另一个用于 ts。

在本地查看结果时,我们的综合覆盖率超过 95%(使用 gulp istanbul-combine),但是当 SonarQube 在读取 lcov 文件后应用其计算时,它显示总体覆盖率略低于 90%。我看过其他帖子解释 Sonar 如何计算其整体数字 - Sonar-Overall Coverage

我试图找出为什么会有如此大的差异。

我们使用 Jenkins 及其 Sonar 扫描仪插件,当它连接到我们的 Sonar 实例并发布结果时查看构建日志时,我看到以下内容:

enter image description here

整体覆盖传感器似乎只有在读取与 javascript 源相关的 lov 文件后才会启动。

当在日志​​中进一步读取 typesecript 源的 karma-remapped-coverage.json 文件时,传感器似乎不会再次触发。我想知道这可能是我看到这种差异的原因吗?

最佳答案

您没有列出您的 SonarQube 版本,但 6.2 包含“强制覆盖率为零”功能(适用于分析器提供必要的“可执行行”数据的语言)。标准覆盖率报告完全忽略没有测试的文件。

假设我有 10 个文件,每个文件有 100 行。其中八个经过 100% 测试,其中两个根本没有经过测试。标准覆盖率报告会说我的覆盖率是 100%,而实际上覆盖率是 80%。

SonarQube 6.2 的“强制覆盖范围为 0”功能为您提供了更准确的图像,这很可能是您在 SonarQube 中看到较低的总覆盖范围数字的原因。

关于javascript - 总体覆盖率指标并不反射(reflect)我的本地结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979813/

相关文章:

javascript - 请求 SQL 2 左外连接

javascript - 如何将文本文件读取为数组

typescript - 用于比较(和更新)Typescript 中对象的某些字段的类型定义

java - Windows 10 上的 Sonarqube 6.7 社区版无法启动

delphi - 使用 Ant 配置 Sonar 模块的 build.xml 文件

Javascript 与我的 Admin LTE 主题的 css 冲突

javascript - 如何使 Windows 应用商店应用程序非全屏?

java - 无法在 Sonar 5.2 中导入质量配置文件规则集

javascript - puppeteer 师 typescript : Fails with errors when transpilling

javascript - postgres 不支持 TypeORM 数组?