Øystein Grøvlen wrote:
- What is the meaning of blocks? I thought it was a block of
statements, but the report says there are more blocks than lines.
(E.g., Blob.isBinaryStream is reported to have 1 line and 10
blocks.)
A basic block is basically a sequence of bytecode instructions with a single
entry point and a single exit point. I found an explanation on the Emma web
site:
http://emma.sourceforge.net/faq.html#q.blockcoverage
I don't think I remember enough from grad school to be able to explain exactly
why Blob.isBinaryStream() is reported to have 10 blocks; it may also be possible
that the code coverage tool has its own interpretation. The method's bytecode
would look something like this:
public boolean isBinaryStream();
Code:
0: aload_0
1: getfield #2; //Field dataType_:I
4: aload_0
5: getfield #3; //Field BINARY_STREAM:I
8: iand
9: aload_0
10: getfield #3; //Field BINARY_STREAM:I
13: if_icmpne 20
16: iconst_1
17: goto 21
20: iconst_0
21: ireturn
(I used javap to find this)
--
John