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

时间:2017-02-01 12:26:46

标签: javascript typescript sonarqube sonarqube-scan

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

直到最近,我们还运行了纯粹的javascript代码库,所以我们使用Sonar的默认javascript插件作为我们的指标。

现在已将我们的大部分代码迁移到打字稿,我们已配置SonarTsPlugin(https://github.com/Pablissimo/SonarTsPlugin)并生成两个lcov文件(使用gulp& istanbul),因此一个用于我们的js源,另一个用于TS。

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

我试图弄清楚为什么会有这么大的差异。

我们使用Jenkins和他们的声纳扫描程序插件,在查看构建日志的同时连接到我们的Sonar实例并发布结果时,我看到以下内容:

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

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

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

SonarQube 6.2"强制覆盖0"功能为您提供更准确的图片,这可能是您在SonarQube中看到较低聚合覆盖率的原因。