Track #66: document some considerations
diff --git a/org.jacoco.doc/docroot/doc/flow.html b/org.jacoco.doc/docroot/doc/flow.html
index 53b0def..07e90ef 100644
--- a/org.jacoco.doc/docroot/doc/flow.html
+++ b/org.jacoco.doc/docroot/doc/flow.html
@@ -144,14 +144,22 @@
</tbody>
</table>
+<p>
+ For the first implementation approach we ignore edges caused by exceptions
+ and the the method entry. This means we consider SEQUENCE, JUMP and EXIT.
+</p>
+
<h2>Probe Insertion Strategy</h2>
+<p>
+ Probes are additional instructions that can be inserted between existing
+ instructions. Probes record the fact that they have been executed. One can
+ think probes are placed on edges of the control flow graph. Therefore if a
+ probe has been executed we know that the corresponding edge has been visited.
+ From this edge we can conclude to other preceding nodes and edges:
+</p>
+
<ul>
- <li>Probes are additional instructions that can be inserted between existing
- instructions. Probes record the fact that they have been executed. One can
- think probes are placed on edges of the control flow graph. Therefore if
- a probe has been executed we know that the corresponding edge has been
- visited.</li>
<li>If a edge has been visited, we know that the source node of the this edge
has been executed.</li>
<li>If a node has been executed and the node is the target of only one edge
@@ -169,15 +177,52 @@
</ul>
<p>
- The execution status of all other edges and instructions can be derived from
- the status of this probes by recursively applying the rules above.
+ Given the example method above we see that <code>INVOKE d()</code> is the only
+ node with more than one incoming edge. So we need to place probes on those
+ edges and another probe on the only exit node:
</p>
<img src=".resources/flow-2.png" alt="Probe positions"/>
+<p>
+ <i>TODO: Insertion strategies for SEQUENCE</i>
+</p>
+
+<img src=".resources/flow-3.png" alt="SEQUENCE Probe"/>
+
+<table class="coverage">
+ <thead>
+ <tr>
+ <td>Type</td>
+ <td>Before</td>
+ <td>After</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>SEQUENCE</td>
+ <td><img src=".resources/flow-3a.png" alt="SEQUENCE"/></td>
+ <td><img src=".resources/flow-3b.png" alt="SEQUENCE with Probe"/></td>
+ </tr>
+ <tr>
+ <td>JUMP (unconditional)</td>
+ <td><img src=".resources/flow-4a.png" alt="JUMP"/></td>
+ <td><img src=".resources/flow-4b.png" alt="JUMP with Probe"/></td>
+ </tr>
+ <tr>
+ <td>JUMP (conditional)</td>
+ <td><img src=".resources/flow-5a.png" alt="JUMP"/></td>
+ <td><img src=".resources/flow-5b.png" alt="JUMP with Probe"/></td>
+ </tr>
+ </tbody>
+</table>
<h2>Coverage Analysis</h2>
+<p>
+ The execution status of all other edges and instructions can be derived from
+ the status of this probes by recursively applying the rules above.
+</p>
<h2>Probe Implementation</h2>