浏览代码

[docs] Touch up the code coverage doc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281881 91177308-0d34-0410-b5e6-96231b3b80d8
Vedant Kumar 9 年之前
父节点
当前提交
c338f66d39
共有 1 个文件被更改,包括 29 次插入9 次删除
  1. 29 9
      docs/SourceBasedCodeCoverage.rst

+ 29 - 9
docs/SourceBasedCodeCoverage.rst

@@ -125,24 +125,24 @@ region counts (even in macro expansions):
 
 
 .. code-block:: none
 .. code-block:: none
 
 
-       20|    1|#define BAR(x) ((x) || (x))
+        1|   20|#define BAR(x) ((x) || (x))
                                ^20     ^2
                                ^20     ^2
         2|    2|template <typename T> void foo(T x) {
         2|    2|template <typename T> void foo(T x) {
-       22|    3|  for (unsigned I = 0; I < 10; ++I) { BAR(I); }
+        3|   22|  for (unsigned I = 0; I < 10; ++I) { BAR(I); }
                                        ^22     ^20  ^20^20
                                        ^22     ^20  ^20^20
-        2|    4|}
+        4|    2|}
     ------------------
     ------------------
     | void foo<int>(int):
     | void foo<int>(int):
-    |      1|    2|template <typename T> void foo(T x) {
-    |     11|    3|  for (unsigned I = 0; I < 10; ++I) { BAR(I); }
+    |      2|    1|template <typename T> void foo(T x) {
+    |      3|   11|  for (unsigned I = 0; I < 10; ++I) { BAR(I); }
     |                                     ^11     ^10  ^10^10
     |                                     ^11     ^10  ^10^10
-    |      1|    4|}
+    |      4|    1|}
     ------------------
     ------------------
     | void foo<float>(int):
     | void foo<float>(int):
-    |      1|    2|template <typename T> void foo(T x) {
-    |     11|    3|  for (unsigned I = 0; I < 10; ++I) { BAR(I); }
+    |      2|    1|template <typename T> void foo(T x) {
+    |      3|   11|  for (unsigned I = 0; I < 10; ++I) { BAR(I); }
     |                                     ^11     ^10  ^10^10
     |                                     ^11     ^10  ^10^10
-    |      1|    4|}
+    |      4|    1|}
     ------------------
     ------------------
 
 
 It's possible to generate a file-level summary of coverage statistics (instead
 It's possible to generate a file-level summary of coverage statistics (instead
@@ -177,6 +177,26 @@ A few final notes:
 
 
       % llvm-profdata merge -sparse foo1.profraw foo2.profdata -o foo3.profdata
       % llvm-profdata merge -sparse foo1.profraw foo2.profdata -o foo3.profdata
 
 
+Interpreting reports
+====================
+
+There are four statistics tracked in a coverage summary:
+
+* Function coverage is the percentage of functions which have been executed at
+  least once. A function is treated as having been executed if any of its
+  instantiations are executed.
+
+* Instantiation coverage is the percentage of function instantiations which
+  have been executed at least once.
+
+* Line coverage is the percentage of code lines which have been executed at
+  least once.
+
+* Region coverage is the percentage of code regions which have been executed at
+  least once. A code region may span multiple lines (e.g a large function with
+  no control flow). However, it's also possible for a single line to contain
+  multiple code regions (e.g some short-circuited logic).
+
 Format compatibility guarantees
 Format compatibility guarantees
 ===============================
 ===============================