在 ethereum/solidity 项目中,他们最近启用了代码覆盖率报告,并将报告发送到 codecov。我正在审查它,我发现了这个奇怪的事情:
在Rematerializer.cpp 文件的第 45 行,您可以看到该行是白色的。但是,该行正在由YulRematerialiser/do_not_move_out_of_scope test执行。我用调试器确认了这一点。那么,为什么这条线不是绿色的呢?一条线没有颜色是什么意思?
在 ethereum/solidity 项目中,他们最近启用了代码覆盖率报告,并将报告发送到 codecov。我正在审查它,我发现了这个奇怪的事情:
在Rematerializer.cpp 文件的第 45 行,您可以看到该行是白色的。但是,该行正在由YulRematerialiser/do_not_move_out_of_scope test执行。我用调试器确认了这一点。那么,为什么这条线不是绿色的呢?一条线没有颜色是什么意思?
for 循环仅经过部分测试,看起来像,因为它是黄色的。他们没有提到它,但文档基本上说(当考虑到示例图片时;不能链接它,因为它只是下载):
绿线已经运行。它们旁边的# 是点击数。
红线尚未运行。
黄线已部分运行,但有一个或多个“执行路径”尚未运行,黄色区域中包含的白线是因此未测试的线。
不在 C/C++ 中,但我猜想表达式中的 if 在 45 附近的白线之前的循环中总是在测试中失败,因此它从未运行块中的代码。不过,我几乎可以肯定以某种方式读错了代码,所以这很容易出错。