Javascript 总体覆盖率指标不能反映我的本地结果

Javascript 总体覆盖率指标不能反映我的本地结果,javascript,typescript,sonarqube,sonarqube-scan,Javascript,Typescript,Sonarqube,Sonarqube Scan,我们的项目中混合了javascript和typescript源代码,我们的SonarQube实例中正在报告这些源代码 直到最近,我们还在运行一个纯javascript代码库,因此使用默认的javascript插件和Sonar作为我们的度量标准 现在我们已经将大部分代码迁移到了typescript,我们已经配置了SonarTsPlugin(),并生成了两个lcov文件(使用gulp和istanbul),一个用于js源代码,另一个用于ts 在本地查看结果时,我们的综合覆盖率超过95%(使用gulp-

我们的项目中混合了javascript和typescript源代码,我们的SonarQube实例中正在报告这些源代码

直到最近,我们还在运行一个纯javascript代码库,因此使用默认的javascript插件和Sonar作为我们的度量标准

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

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

然而,我试图弄明白为什么会有如此大的差异

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

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


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

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

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


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

Hmm好,我们使用的是5.6版,我不认为我们的基础设施团队在一段时间内不会有任何计划的升级。IIRC 5.6包含了一个错误版本的“强制覆盖率为零”,所以这仍然可能是刚刚阅读文档的解释,我对强制零覆盖设置感到困惑,为什么你认为它会对我有帮助?它说如果指定lcov报告,它将优先于强制零覆盖设置,所以听起来这对我没有帮助,因为我提供了lcov路径供声纳使用,然后我记错了。也许您应该编辑您的问题,以包括版本。那我就不回答了。好的,谢谢。经过进一步的挖掘,我想我已经找到了一些进一步的线索来解释为什么我看到了差异,但这需要一个新的问题!