xcode 为什么右大括号显示没有代码覆盖率?

fd3cxomn  于 2023-01-10  发布在  其他
关注(0)|答案(3)|浏览(176)

我有一个Swift函数,Xcode显示代码覆盖率为0。该行是一个右括号(下面用红色突出显示)。
这是Xcode中的一个bug吗?如果不是,我需要满足什么条件才能运行那一行?我以为我已经覆盖了这个方法的所有路径。

envsm3lx

envsm3lx1#

很肯定这是Xcode代码覆盖率的一个bug(特性?)。问题归结为return语句不允许它下降到空的else语句,从而表明代码没有执行。return语句会对它们正在做的计算代码行数的工作施加影响。
在try/catch块的示例中,您实际上没有太多的选择来防止空执行。
作为一个实验,删除return语句,并找到一个更好的方法来捕获writeToURL语句,这样它就不会在error/catch语句中执行,这可能会为该行给予干净的代码覆盖率。

wnvonmuf

wnvonmuf2#

Xcode报告包括结束括号的测量,这通常不是所希望的。在配置中没有什么可以做的来修复这个问题(据我所知)。
(FD我在Codecov工作)你可以使用Codecov,一个托管的解决方案,它会自动删除这些多余的行。在https://github.com/codecov/example-xcode了解更多信息。谢谢:)

aoyhnmkz

aoyhnmkz3#

如果你仍然遇到这个问题,试着在-fprofile-arcs-ftest-coverage之外添加编译选项-fno-elide-constructors-fno-default-inline,因为它也可以帮助覆盖“丢失”的构造函数和内联函数。这修复了我在使用GNU/GCC 11.3时遇到的类似问题。

相关问题