在伊斯坦布尔显示真实的测试覆盖率,无需'Ignore'注释



是否可以显示伊斯坦布尔的实际代码覆盖率,忽略"忽略">注释?

例如,不要忽略下一个:

/* istanbul ignore next */

我们的覆盖率报告100%覆盖率,但在代码中忽略了这一点。

我意识到这不是你想听到的答案,尽管对我来说,这是唯一合乎逻辑的答案:从你的代码库中删除这些行。

让我解释一下原因:这些行的唯一功能是确保以下行/语句不包含在覆盖范围结果中。因此,如果您不希望它被忽略,请删除行。

如果出于某种原因,您真的想保留代码库中的行。您可以考虑使用基于CI的解决方案。创建一个首先删除所有要删除的行的作业。类似这样的东西:

for file in *.js
do
sed '/istanbul ignore/d' "$file" > "$file".new_file.js
mv "$file".new_file.js "$file".js
done

然后像往常一样计算代码覆盖率

尽管如此,由于这将更改所有文件,因此在本地运行并不理想,因为您可能需要在词后gitrevert所有更改。因此,我建议CI,因为在那里你可以简单地结束工作,忽略你所做的更改。

正如您在评论中所建议的那样,添加lint规则以防止使用/* istanbul ignore ... */可能是最好的解决方案。

然而,由于Istanbul是开源JavaScript软件,您也可以很容易地对其进行修改,使其忽略/* istanbul ignore ... */语句。这里有一个快速而肮脏的特别解决方案(正确的解决方案是派生项目、修改源代码、构建和安装它(:

  1. 在项目的node_modules文件夹中找到伊斯坦布尔依赖项
  2. 在已识别的文件夹中搜索/^s*istanbuls+ignores+,这是正则表达式模式的一部分,Istanbul使用它来正确识别忽略注释
  3. 修改找到的源文件中的模式,例如将istanbul和/或ignore更改为其他术语,这样项目源代码中现有的/* istanbul ignore ... */注释就不再匹配(或者取消整个机制,但这可能更困难,风险更大(

我不推荐这种方法。我只是想表明,这是可以做到的。根据您的具体设置,它可能很容易实现,也可能很难实现。我刚刚在VS Code的ES 2015项目中尝试了一下,效果很好。

相关内容

  • 没有找到相关文章

最新更新