5

根据 MSDN:

代码块是具有单个入口点、单个出口点和一组指令的代码路径,它们都按顺序运行。代码块在到达决策点时结束,例如新的条件语句块、函数调用、异常抛出、进入、离开、尝试、捕获或 finally 构造。

考虑到这一点,我仍然不知道为什么,根据VS2010的代码覆盖率分析,这个方法有三个块:

public Type Foo()
{
     return typeof(string);
}

这个方法有两个块:

public void FooTwo()
{
     return;
}

代码行更直接。它们是包括大括号在内的代码行数。但是什么是代码块?

卡尔文

4

1 回答 1

0

代码块是指通用中间语言/微软中间语言级别的连续路径。不幸的是,上面的 MSDN 文章中没有提到这一点。

微软大师们在这里给出了很好的解释:

http://www.testingmentor.com/imtesty/2009/11/18/basic-blocks-arent-so-basic/

http://blogs.msdn.com/b/scarroll/archive/2005/01/14/353427.aspx?wa=wsignin1.0

简而言之,仔细计算 CIL 代码块是没有意义的。它们与我们编写的代码处于不同的平面上,它们甚至可以根据您的编译是调试还是发布而有所不同。

于 2010-10-28T18:09:29.700 回答