| File docs/uncov-gcov.1 changed (mode: 100644) (index da815ea..860149e) |
| 1 |
|
.\" Automatically generated by Pandoc 3.1.11.1 |
|
|
1 |
|
.\" Automatically generated by Pandoc 3.10 |
| 2 |
2 |
.\" |
.\" |
| 3 |
|
.TH "uncov-gcov" "1" "January 20, 2024" "uncov v0.5" "" |
|
|
3 |
|
.TH "uncov-gcov" "1" "July 20, 2026" "uncov v0.5" |
| 4 |
4 |
.SH NAME |
.SH NAME |
| 5 |
5 |
uncov\-gcov is coverage information collector for C and C++ languages |
uncov\-gcov is coverage information collector for C and C++ languages |
| 6 |
6 |
that can be used with \f[B]uncov(1)\f[R]. |
that can be used with \f[B]uncov(1)\f[R]. |
| 7 |
7 |
.PP |
.PP |
| 8 |
|
\f[B]NOTE:\f[R] since uncov\-gcov isn\[cq]t the only way to collect C |
|
| 9 |
|
and C++ coverage for uncov anymore, its use is discouraged. |
|
|
8 |
|
\f[B]NOTE:\f[R] since uncov\-gcov isn\(cqt the only way to collect C and |
|
9 |
|
C++ coverage for uncov anymore, its use is discouraged. |
| 10 |
10 |
It is provided in case it might work better in some contexts because of |
It is provided in case it might work better in some contexts because of |
| 11 |
11 |
some unique options (like taking exclusion markers of LCOV into |
some unique options (like taking exclusion markers of LCOV into |
| 12 |
12 |
account). |
account). |
| 13 |
|
It might be a good idea to switch to using \[lq]uncov new\-gcovi\[rq] |
|
|
13 |
|
It might be a good idea to switch to using \(lquncov new\-gcovi\(rq |
| 14 |
14 |
subcommand. |
subcommand. |
| 15 |
15 |
.SH SYNOPSIS |
.SH SYNOPSIS |
| 16 |
16 |
\f[B]uncov\-gcov\f[R] \f[B]\-h|\-\-help\f[R] |
\f[B]uncov\-gcov\f[R] \f[B]\-h|\-\-help\f[R] |
| |
| ... |
... |
Print verbose messages. |
| 29 |
29 |
Run the script without printing report. |
Run the script without printing report. |
| 30 |
30 |
.SS \f[B]\-\-gcov\f[R] [=gcov] |
.SS \f[B]\-\-gcov\f[R] [=gcov] |
| 31 |
31 |
Set the location of gcov. |
Set the location of gcov. |
| 32 |
|
.SS \f[B]\-\-gcov\-options\f[R] [=\[lq]\[rq]] |
|
|
32 |
|
.SS \f[B]\-\-gcov\-options\f[R] [=\(lq\(rq] |
| 33 |
33 |
Set the options given to gcov. |
Set the options given to gcov. |
| 34 |
34 |
.SS \f[B]\-r\f[R], \f[B]\-\-root\f[R] [=.] |
.SS \f[B]\-r\f[R], \f[B]\-\-root\f[R] [=.] |
| 35 |
35 |
Set the root directory. |
Set the root directory. |
| |
| ... |
... |
needs to run in the same directory as the compiler in order to find the |
| 42 |
42 |
source files. |
source files. |
| 43 |
43 |
.SS \f[B]\-\-collect\-root\f[R] [={value of \-\-root}] |
.SS \f[B]\-\-collect\-root\f[R] [={value of \-\-root}] |
| 44 |
44 |
Directory to look gcov files in. |
Directory to look gcov files in. |
| 45 |
|
.SS \f[B]\-e\f[R], \f[B]\-\-exclude\f[R] [=\[lq]\[rq]] |
|
|
45 |
|
.SS \f[B]\-e\f[R], \f[B]\-\-exclude\f[R] [=\(lq\(rq] |
| 46 |
46 |
List of paths to exclude. |
List of paths to exclude. |
| 47 |
47 |
Can be specifieid multiple times. |
Can be specifieid multiple times. |
| 48 |
48 |
.PP |
.PP |
| 49 |
49 |
Examples: |
Examples: |
| 50 |
50 |
.IP |
.IP |
| 51 |
51 |
.EX |
.EX |
| 52 |
|
uncov\-gcov \-\[rs]\-exclude build\-release \-\[rs]\-exclude build\-debug ... |
|
| 53 |
|
uncov\-gcov \-\[rs]\-exclude build\-release build\-debug ... |
|
| 54 |
|
uncov\-gcov \-\[rs]\-exclude build* ... |
|
|
52 |
|
uncov\-gcov \-\(rs\-exclude build\-release \-\(rs\-exclude build\-debug ... |
|
53 |
|
uncov\-gcov \-\(rs\-exclude build\-release build\-debug ... |
|
54 |
|
uncov\-gcov \-\(rs\-exclude build* ... |
| 55 |
55 |
.EE |
.EE |
| 56 |
|
.SS \f[B]\-i\f[R], \f[B]\-\-include\f[R] [=\[lq]\[rq]] |
|
|
56 |
|
.SS \f[B]\-i\f[R], \f[B]\-\-include\f[R] [=\(lq\(rq] |
| 57 |
57 |
List of paths to include. |
List of paths to include. |
| 58 |
58 |
Can be specifieid multiple times. |
Can be specifieid multiple times. |
| 59 |
59 |
See \f[B]\-\-exclude\f[R] for examples. |
See \f[B]\-\-exclude\f[R] for examples. |
| 60 |
|
.SS \f[B]\-E\f[R], \f[B]\-\-exclude\-pattern\f[R] [=\[lq]\[rq]] |
|
|
60 |
|
.SS \f[B]\-E\f[R], \f[B]\-\-exclude\-pattern\f[R] [=\(lq\(rq] |
| 61 |
61 |
Set exclude file/directory pattern. |
Set exclude file/directory pattern. |
| 62 |
62 |
.SS \f[B]\-x\f[R], \f[B]\-\-extension\f[R] [=.h,.hh,.hpp,.hxx,.c,.cc,.cpp,.cxx,.m,.mm] |
.SS \f[B]\-x\f[R], \f[B]\-\-extension\f[R] [=.h,.hh,.hpp,.hxx,.c,.cc,.cpp,.cxx,.m,.mm] |
| 63 |
63 |
Set extension of files to process. |
Set extension of files to process. |
| |
| ... |
... |
information is as follows: |
| 84 |
84 |
.IP |
.IP |
| 85 |
85 |
.EX |
.EX |
| 86 |
86 |
# reset coverage counters from previous runs |
# reset coverage counters from previous runs |
| 87 |
|
find . \-name \[aq]*.gcda\[aq] \-delete |
|
|
87 |
|
find . \-name \(aq*.gcda\(aq \-delete |
| 88 |
88 |
|
|
| 89 |
|
# run tests here with something like \[ga]make check\[ga] |
|
|
89 |
|
# run tests here with something like \(gamake check\(ga |
| 90 |
90 |
|
|
| 91 |
|
# generage coverage for every object file found (change \[dq].\[dq] to build root) |
|
| 92 |
|
find . \-name \[aq]*.o\[aq] \-exec gcov \-p {} + |
|
|
91 |
|
# generage coverage for every object file found (change \(dq.\(dq to build root) |
|
92 |
|
find . \-name \(aq*.o\(aq \-exec gcov \-p {} + |
| 93 |
93 |
|
|
| 94 |
|
# generage and combine coverage reports (\-\[rs]\-capture\-worktree automatically |
|
|
94 |
|
# generage and combine coverage reports (\-\(rs\-capture\-worktree automatically |
| 95 |
95 |
# makes stray commit if repository is dirty) |
# makes stray commit if repository is dirty) |
| 96 |
|
uncov\-gcov \-\[rs]\-root . \-\[rs]\-no\-gcov \-\[rs]\-capture\-worktree \-\[rs]\-exclude tests | uncov new |
|
|
96 |
|
uncov\-gcov \-\(rs\-root . \-\(rs\-no\-gcov \-\(rs\-capture\-worktree \-\(rs\-exclude tests | uncov new |
| 97 |
97 |
|
|
| 98 |
98 |
# remove coverage reports |
# remove coverage reports |
| 99 |
|
find . \-name \[aq]*.gcov\[aq] \-delete |
|
|
99 |
|
find . \-name \(aq*.gcov\(aq \-delete |
| 100 |
100 |
.EE |
.EE |
| 101 |
101 |
.PP |
.PP |
| 102 |
102 |
These commands can be put in a separate script or embedded directly into |
These commands can be put in a separate script or embedded directly into |
| File docs/uncov.1 changed (mode: 100644) (index a2b01d7..29a03a3) |
| 1 |
|
.\" Automatically generated by Pandoc 3.1.11.1 |
|
|
1 |
|
.\" Automatically generated by Pandoc 3.10 |
| 2 |
2 |
.\" |
.\" |
| 3 |
|
.TH "uncov" "1" "January 20, 2024" "uncov v0.5" "" |
|
|
3 |
|
.TH "uncov" "1" "July 20, 2026" "uncov v0.5" |
| 4 |
4 |
.SH NAME |
.SH NAME |
| 5 |
5 |
uncov is a software development tool that collect and processes coverage |
uncov is a software development tool that collect and processes coverage |
| 6 |
6 |
reports. |
reports. |
| 7 |
7 |
.PP |
.PP |
| 8 |
|
\f[B]NOTE:\f[R] since uncov\-gcov isn\[cq]t the only way to collect C |
|
| 9 |
|
and C++ coverage for uncov anymore, it is deprecated. |
|
|
8 |
|
\f[B]NOTE:\f[R] since uncov\-gcov isn\(cqt the only way to collect C and |
|
9 |
|
C++ coverage for uncov anymore, it is deprecated. |
| 10 |
10 |
However, it is still provided in case it might be useful in some |
However, it is still provided in case it might be useful in some |
| 11 |
11 |
environments. |
environments. |
| 12 |
|
Using \[lq]uncov new\-gcovi\[rq] should work noticeably faster and |
|
| 13 |
|
doesn\[cq]t require sources on adding build to the database. |
|
|
12 |
|
Using \(lquncov new\-gcovi\(rq should work noticeably faster and |
|
13 |
|
doesn\(cqt require sources on adding build to the database. |
| 14 |
14 |
.SH SYNOPSIS |
.SH SYNOPSIS |
| 15 |
15 |
\f[B]uncov\f[R] \f[B]\-h|\-\-help\f[R] |
\f[B]uncov\f[R] \f[B]\-h|\-\-help\f[R] |
| 16 |
16 |
.PP |
.PP |
| |
| ... |
... |
While the relation by default is of one\-to\-one kind, same |
| 35 |
35 |
repository by linking or copying \f[CR]uncov.sqlite\f[R] file manually. |
repository by linking or copying \f[CR]uncov.sqlite\f[R] file manually. |
| 36 |
36 |
.PP |
.PP |
| 37 |
37 |
Repository that corresponds to current working directory is discovered |
Repository that corresponds to current working directory is discovered |
| 38 |
|
automatically and doesn\[cq]t need to be specified explicitly. |
|
|
38 |
|
automatically and doesn\(cqt need to be specified explicitly. |
| 39 |
39 |
Otherwise \f[B]<repo\-path>\f[R] can point either to repository |
Otherwise \f[B]<repo\-path>\f[R] can point either to repository |
| 40 |
|
directory (\f[CR].git\f[R]) or its main worktree (doesn\[cq]t seem to |
|
|
40 |
|
directory (\f[CR].git\f[R]) or its main worktree (doesn\(cqt seem to |
| 41 |
41 |
work with secondary worktrees). |
work with secondary worktrees). |
| 42 |
42 |
.SS Builds |
.SS Builds |
| 43 |
43 |
The largest entity \f[CR]uncov\f[R] operates within repository is a |
The largest entity \f[CR]uncov\f[R] operates within repository is a |
| 44 |
44 |
build. |
build. |
| 45 |
45 |
A build has the following properties: |
A build has the following properties: |
| 46 |
|
.IP \[bu] 2 |
|
|
46 |
|
.IP \(bu 2 |
| 47 |
47 |
number identifying the build (greater than \f[CR]0\f[R]); |
number identifying the build (greater than \f[CR]0\f[R]); |
| 48 |
|
.IP \[bu] 2 |
|
|
48 |
|
.IP \(bu 2 |
| 49 |
49 |
name of reference within repository (branch usually); |
name of reference within repository (branch usually); |
| 50 |
|
.IP \[bu] 2 |
|
|
50 |
|
.IP \(bu 2 |
| 51 |
51 |
commit object that corresponds to the build; |
commit object that corresponds to the build; |
| 52 |
|
.IP \[bu] 2 |
|
|
52 |
|
.IP \(bu 2 |
| 53 |
53 |
date and time at which it was imported; |
date and time at which it was imported; |
| 54 |
|
.IP \[bu] 2 |
|
|
54 |
|
.IP \(bu 2 |
| 55 |
55 |
finally, set of files with their coverage that constitute a build. |
finally, set of files with their coverage that constitute a build. |
| 56 |
56 |
.SS Files |
.SS Files |
| 57 |
57 |
File is the second most important thing after a build. |
File is the second most important thing after a build. |
| 58 |
|
It\[cq]s characterised by: |
|
| 59 |
|
.IP \[bu] 2 |
|
|
58 |
|
It\(cqs characterised by: |
|
59 |
|
.IP \(bu 2 |
| 60 |
60 |
path within repository; |
path within repository; |
| 61 |
|
.IP \[bu] 2 |
|
|
61 |
|
.IP \(bu 2 |
| 62 |
62 |
coverage information (basically an array specifying which lines are |
coverage information (basically an array specifying which lines are |
| 63 |
63 |
covered); |
covered); |
| 64 |
|
.IP \[bu] 2 |
|
|
64 |
|
.IP \(bu 2 |
| 65 |
65 |
MD5 hash (to verify that \f[CR]uncov\f[R] state is consistent with |
MD5 hash (to verify that \f[CR]uncov\f[R] state is consistent with |
| 66 |
66 |
repository). |
repository). |
| 67 |
67 |
.SS Directories |
.SS Directories |
| |
| ... |
... |
Based on data provided any line of code is classified as either |
| 81 |
81 |
\f[I]relevant\f[R] or \f[I]not relevant\f[R]. |
\f[I]relevant\f[R] or \f[I]not relevant\f[R]. |
| 82 |
82 |
Relevant lines in turn can be \f[I]covered\f[R] or \f[I]missed\f[R]. |
Relevant lines in turn can be \f[I]covered\f[R] or \f[I]missed\f[R]. |
| 83 |
83 |
So each source line must be in one of three states: |
So each source line must be in one of three states: |
| 84 |
|
.IP \[bu] 2 |
|
|
84 |
|
.IP \(bu 2 |
| 85 |
85 |
not relevant; |
not relevant; |
| 86 |
|
.IP \[bu] 2 |
|
|
86 |
|
.IP \(bu 2 |
| 87 |
87 |
not covered (with number of hits being \f[CR]0\f[R]); |
not covered (with number of hits being \f[CR]0\f[R]); |
| 88 |
|
.IP \[bu] 2 |
|
|
88 |
|
.IP \(bu 2 |
| 89 |
89 |
covered (with number of hits being greater than \f[CR]0\f[R]). |
covered (with number of hits being greater than \f[CR]0\f[R]). |
| 90 |
90 |
.PP |
.PP |
| 91 |
91 |
Coverage rate is defined simply as number of covered lines divided by |
Coverage rate is defined simply as number of covered lines divided by |
| 92 |
92 |
number of relevant lines. |
number of relevant lines. |
| 93 |
93 |
If file consists solely of not relevant lines (which is also the case |
If file consists solely of not relevant lines (which is also the case |
| 94 |
|
for files that don\[cq]t exist in one of builds being compared), |
|
| 95 |
|
it\[cq]s assumed to have 100% coverage. |
|
|
94 |
|
for files that don\(cqt exist in one of builds being compared), it\(cqs |
|
95 |
|
assumed to have 100% coverage. |
| 96 |
96 |
We also have number of lines covered, missed and total number of |
We also have number of lines covered, missed and total number of |
| 97 |
97 |
relevant lines (sum of previous two) and can calculate their changes. |
relevant lines (sum of previous two) and can calculate their changes. |
| 98 |
98 |
.PP |
.PP |
| |
| ... |
... |
files, directory comparison compares files under specified path, file |
| 106 |
106 |
comparison compares only one file. |
comparison compares only one file. |
| 107 |
107 |
.PP |
.PP |
| 108 |
108 |
However, comparing coverage is not exactly the same as comparing files. |
However, comparing coverage is not exactly the same as comparing files. |
| 109 |
|
While we are interested in whether changed code is covered we don\[cq]t |
|
| 110 |
|
really care about addition or removal of lines that aren\[cq]t relevant |
|
|
109 |
|
While we are interested in whether changed code is covered we don\(cqt |
|
110 |
|
really care about addition or removal of lines that aren\(cqt relevant |
| 111 |
111 |
for coverage. |
for coverage. |
| 112 |
112 |
So these uninteresting changes are not shown. |
So these uninteresting changes are not shown. |
| 113 |
113 |
.PP |
.PP |
| |
| ... |
... |
On the other hand, change of coverage when only number of line hits |
| 115 |
115 |
increased or decreased is also irrelevant in most cases and are shown |
increased or decreased is also irrelevant in most cases and are shown |
| 116 |
116 |
only by separate command. |
only by separate command. |
| 117 |
117 |
Regular comparison draws attention mainly to lines that have changed |
Regular comparison draws attention mainly to lines that have changed |
| 118 |
|
their state (e.g., from \[lq]not covered\[rq] to \[lq]covered\[rq] or |
|
| 119 |
|
vice versa). |
|
|
118 |
|
their state (e.g., from \(lqnot covered\(rq to \(lqcovered\(rq or vice |
|
119 |
|
versa). |
| 120 |
120 |
Should such lines be part of diff context, they are displayed as |
Should such lines be part of diff context, they are displayed as |
| 121 |
121 |
somewhat dimmed compared to lines with interesting changes. |
somewhat dimmed compared to lines with interesting changes. |
| 122 |
122 |
.SS Notations |
.SS Notations |
| 123 |
123 |
For the sake of brevity interface uses several intuitive abbreviations: |
For the sake of brevity interface uses several intuitive abbreviations: |
| 124 |
|
.IP \[bu] 2 |
|
| 125 |
|
Cov \[en] coverage; |
|
| 126 |
|
.IP \[bu] 2 |
|
| 127 |
|
Ref \[en] reference (of VCS); |
|
| 128 |
|
.IP \[bu] 2 |
|
| 129 |
|
C \[en] covered; |
|
| 130 |
|
.IP \[bu] 2 |
|
| 131 |
|
M \[en] missed; |
|
| 132 |
|
.IP \[bu] 2 |
|
| 133 |
|
R \[en] relevant. |
|
|
124 |
|
.IP \(bu 2 |
|
125 |
|
Cov \(en coverage; |
|
126 |
|
.IP \(bu 2 |
|
127 |
|
Ref \(en reference (of VCS); |
|
128 |
|
.IP \(bu 2 |
|
129 |
|
C \(en covered; |
|
130 |
|
.IP \(bu 2 |
|
131 |
|
M \(en missed; |
|
132 |
|
.IP \(bu 2 |
|
133 |
|
R \(en relevant. |
| 134 |
134 |
.SH SUBCOMMANDS |
.SH SUBCOMMANDS |
| 135 |
135 |
.SS Syntax of build numbers |
.SS Syntax of build numbers |
| 136 |
136 |
Build numbers are specified in arguments for subcommands by being |
Build numbers are specified in arguments for subcommands by being |
| 137 |
|
prepended with \f[CR]\[at]\f[R] sign. |
|
|
137 |
|
prepended with \f[CR]\(at\f[R] sign. |
| 138 |
138 |
So to refer to build number \f[CR]5\f[R], one would write |
So to refer to build number \f[CR]5\f[R], one would write |
| 139 |
|
\f[CR]\[at]5\f[R]. |
|
|
139 |
|
\f[CR]\(at5\f[R]. |
| 140 |
140 |
.PP |
.PP |
| 141 |
|
Build numbers start at \f[CR]1\f[R], this leaves \f[CR]\[at]0\f[R] |
|
|
141 |
|
Build numbers start at \f[CR]1\f[R], this leaves \f[CR]\(at0\f[R] |
| 142 |
142 |
unused. |
unused. |
| 143 |
143 |
It is thus repurposed to be a handy shortcut for the latest build. |
It is thus repurposed to be a handy shortcut for the latest build. |
| 144 |
|
An alternative form of writing \f[CR]\[at]0\f[R] is |
|
| 145 |
|
\f[CR]\[at]\[at]\f[R]. |
|
|
144 |
|
An alternative form of writing \f[CR]\(at0\f[R] is \f[CR]\(at\(at\f[R]. |
| 146 |
145 |
.PP |
.PP |
| 147 |
|
Build numbers can also be specified in the form of \f[CR]\[at]\-N\f[R], |
|
|
146 |
|
Build numbers can also be specified in the form of \f[CR]\(at\-N\f[R], |
| 148 |
147 |
in which case they select Nth to the latest build. |
in which case they select Nth to the latest build. |
| 149 |
148 |
For example, to specify range from previous build to one build before |
For example, to specify range from previous build to one build before |
| 150 |
|
that one would write \f[CR]\[at]\-1 \[at]\-2\f[R]. |
|
|
149 |
|
that one would write \f[CR]\(at\-1 \(at\-2\f[R]. |
| 151 |
150 |
.PP |
.PP |
| 152 |
151 |
Lastly, branch names can be used to specify latest build from that |
Lastly, branch names can be used to specify latest build from that |
| 153 |
|
branch (e.g., \f[CR]\[at]master\f[R]). |
|
|
152 |
|
branch (e.g., \f[CR]\(atmaster\f[R]). |
| 154 |
153 |
.SS Resolving ambiguity |
.SS Resolving ambiguity |
| 155 |
154 |
Some commands can take optional build number, which opens the door for |
Some commands can take optional build number, which opens the door for |
| 156 |
155 |
ambiguity between file/directory names and build identifiers. |
ambiguity between file/directory names and build identifiers. |
| 157 |
|
Anything that starts with \f[CR]\[at]\f[R] at a suitable position on |
|
|
156 |
|
Anything that starts with \f[CR]\(at\f[R] at a suitable position on |
| 158 |
157 |
command\-line is assumed to be build number. |
command\-line is assumed to be build number. |
| 159 |
|
For files which have \f[CR]\[at]\f[R] as prefix, specifying build number |
|
|
158 |
|
For files which have \f[CR]\(at\f[R] as prefix, specifying build number |
| 160 |
159 |
becomes mandatory. |
becomes mandatory. |
| 161 |
160 |
As an example: |
As an example: |
| 162 |
161 |
.IP |
.IP |
| 163 |
162 |
.EX |
.EX |
| 164 |
|
# this doesn\[aq]t work |
|
| 165 |
|
uncov show \[at]strangely\-named\-file |
|
| 166 |
|
# this is equivalent and works |
|
| 167 |
|
uncov show \[at]\[at] \[at]strangely\-named\-file |
|
|
163 |
|
\f[I]# this doesn\(aqt work\f[R] |
|
164 |
|
uncov show \(atstrangely\-named\-file |
|
165 |
|
\f[I]# this is equivalent and works\f[R] |
|
166 |
|
uncov show \(at\(at \(atstrangely\-named\-file |
| 168 |
167 |
.EE |
.EE |
| 169 |
168 |
.SS Default build |
.SS Default build |
| 170 |
|
If a subcommand accepts build number, in almost all cases it\[cq]s an |
|
|
169 |
|
If a subcommand accepts build number, in almost all cases it\(cqs an |
| 171 |
170 |
optional parameter and latest build is used when this argument is |
optional parameter and latest build is used when this argument is |
| 172 |
171 |
omitted. |
omitted. |
| 173 |
172 |
.SS Subcommand aliases |
.SS Subcommand aliases |
| |
| ... |
... |
hits of a line to be significant change. |
| 239 |
238 |
.PP |
.PP |
| 240 |
239 |
See description of \f[B]diff\f[R] subcommand above for syntax. |
See description of \f[B]diff\f[R] subcommand above for syntax. |
| 241 |
240 |
.SS dirs |
.SS dirs |
| 242 |
|
Lists statistics of files grouped by directories they\[cq]re located in. |
|
|
241 |
|
Lists statistics of files grouped by directories they\(cqre located in. |
| 243 |
242 |
.PP |
.PP |
| 244 |
243 |
\f[B]Usage: dirs\f[R] |
\f[B]Usage: dirs\f[R] |
| 245 |
244 |
.PP |
.PP |
| |
| ... |
... |
Lists files of \f[B]<build>\f[R] (or last build) located under |
| 289 |
288 |
\f[B]Usage: files [<old build>] [<new build>] <path>\f[R] |
\f[B]Usage: files [<old build>] [<new build>] <path>\f[R] |
| 290 |
289 |
.PP |
.PP |
| 291 |
290 |
See forms above for information about first two arguments. |
See forms above for information about first two arguments. |
| 292 |
|
Lists files located under \f[B]<path>\f[R] (if it\[cq]s a directory) or |
|
|
291 |
|
Lists files located under \f[B]<path>\f[R] (if it\(cqs a directory) or |
| 293 |
292 |
single file that exactly matches the path. |
single file that exactly matches the path. |
| 294 |
293 |
.SS get |
.SS get |
| 295 |
294 |
Dumps coverage information of a file. |
Dumps coverage information of a file. |
| |
| ... |
... |
Reads coverage information from standard input in the following format: |
| 341 |
340 |
.EE |
.EE |
| 342 |
341 |
.PP |
.PP |
| 343 |
342 |
Integers have the following meaning: |
Integers have the following meaning: |
| 344 |
|
.IP \[bu] 2 |
|
| 345 |
|
when less than zero (specifically \f[CR]\-1\f[R]) \[en] line is not |
|
|
343 |
|
.IP \(bu 2 |
|
344 |
|
when less than zero (specifically \f[CR]\-1\f[R]) \(en line is not |
| 346 |
345 |
relevant; |
relevant; |
| 347 |
|
.IP \[bu] 2 |
|
| 348 |
|
when equal to zero \[en] line is not covered (missed); |
|
| 349 |
|
.IP \[bu] 2 |
|
| 350 |
|
when greater than zero \[en] line is covered and was hit that many |
|
| 351 |
|
times. |
|
|
346 |
|
.IP \(bu 2 |
|
347 |
|
when equal to zero \(en line is not covered (missed); |
|
348 |
|
.IP \(bu 2 |
|
349 |
|
when greater than zero \(en line is covered and was hit that many times. |
| 352 |
350 |
.SS new\-gcovi |
.SS new\-gcovi |
| 353 |
351 |
Generates coverage via \f[CR]gcov\f[R] and imports it. |
Generates coverage via \f[CR]gcov\f[R] and imports it. |
| 354 |
352 |
.PP |
.PP |
| |
| ... |
... |
Generates coverage via \f[CR]gcov\f[R] and imports it. |
| 356 |
354 |
[covoutroot]\f[R] |
[covoutroot]\f[R] |
| 357 |
355 |
.PP |
.PP |
| 358 |
356 |
\f[B]Parameters:\f[R] |
\f[B]Parameters:\f[R] |
| 359 |
|
.IP \[bu] 2 |
|
| 360 |
|
\f[B]covoutroot\f[R] \[en] where to look for generated coverage data. |
|
|
357 |
|
.IP \(bu 2 |
|
358 |
|
\f[B]covoutroot\f[R] \(en where to look for generated coverage data. |
| 361 |
359 |
.PP |
.PP |
| 362 |
360 |
\f[B]Options:\f[R] |
\f[B]Options:\f[R] |
| 363 |
|
.IP \[bu] 2 |
|
| 364 |
|
\f[B]\-h [ \-\-help ]\f[R] \[en] display help message; |
|
| 365 |
|
.IP \[bu] 2 |
|
| 366 |
|
\f[B]\-v [ \-\-verbose ]\f[R] \[en] print output of external commands; |
|
| 367 |
|
.IP \[bu] 2 |
|
| 368 |
|
\f[B]\-e [ \-\-exclude ] arg\f[R] \[en] specifies a path to exclude (can |
|
|
361 |
|
.IP \(bu 2 |
|
362 |
|
\f[B]\-h [ \-\-help ]\f[R] \(en display help message; |
|
363 |
|
.IP \(bu 2 |
|
364 |
|
\f[B]\-v [ \-\-verbose ]\f[R] \(en print output of external commands; |
|
365 |
|
.IP \(bu 2 |
|
366 |
|
\f[B]\-e [ \-\-exclude ] arg\f[R] \(en specifies a path to exclude (can |
| 369 |
367 |
be repeated), paths are taken to be relative to the root of the |
be repeated), paths are taken to be relative to the root of the |
| 370 |
368 |
repository; |
repository; |
| 371 |
|
.IP \[bu] 2 |
|
| 372 |
|
\f[B]\-\-prefix arg\f[R] \[en] prefix to be added to relative path of |
|
|
369 |
|
.IP \(bu 2 |
|
370 |
|
\f[B]\-\-prefix arg\f[R] \(en prefix to be added to relative path of |
| 373 |
371 |
sources; |
sources; |
| 374 |
|
.IP \[bu] 2 |
|
| 375 |
|
\f[B]\-\-ref\-name arg\f[R] \[en] forces custom ref name; |
|
| 376 |
|
.IP \[bu] 2 |
|
| 377 |
|
\f[B]\-c [ \-\-capture\-worktree ]\f[R] \[en] make a dangling commit if |
|
|
372 |
|
.IP \(bu 2 |
|
373 |
|
\f[B]\-\-ref\-name arg\f[R] \(en forces custom ref name; |
|
374 |
|
.IP \(bu 2 |
|
375 |
|
\f[B]\-c [ \-\-capture\-worktree ]\f[R] \(en make a dangling commit if |
| 378 |
376 |
working directory is dirty. |
working directory is dirty. |
| 379 |
377 |
.PP |
.PP |
| 380 |
378 |
To do its work this subcommand invokes \f[CR]gcov\f[R] and then parses |
To do its work this subcommand invokes \f[CR]gcov\f[R] and then parses |
| |
| ... |
... |
Imports new build in JSON format from standard input. |
| 388 |
386 |
Reads coverage information from standard input in the following format: |
Reads coverage information from standard input in the following format: |
| 389 |
387 |
.IP |
.IP |
| 390 |
388 |
.EX |
.EX |
| 391 |
|
<prefix that doesn\[aq]t contain { character> |
|
|
389 |
|
<prefix that doesn\(aqt contain { character> |
| 392 |
390 |
{ |
{ |
| 393 |
|
\[dq]source_files\[dq]: [ |
|
|
391 |
|
\(dqsource_files\(dq: [ |
| 394 |
392 |
{ |
{ |
| 395 |
|
\[dq]source_digest\[dq]: \[dq]<MD5 hash>\[dq], |
|
| 396 |
|
\[dq]source\[dq]: \[dq]<source, which can be used instead of source_digest>\[dq], |
|
| 397 |
|
\[dq]name\[dq]: \[dq]file name relative to repository root\[dq], |
|
| 398 |
|
\[dq]coverage\[dq]: [null for not relevant lines, int for number of hits] |
|
|
393 |
|
\(dqsource_digest\(dq: \(dq<MD5 hash>\(dq, |
|
394 |
|
\(dqsource\(dq: \(dq<source, which can be used instead of source_digest>\(dq, |
|
395 |
|
\(dqname\(dq: \(dqfile name relative to repository root\(dq, |
|
396 |
|
\(dqcoverage\(dq: [null for not relevant lines, int for number of hits] |
| 399 |
397 |
} |
} |
| 400 |
398 |
... |
... |
| 401 |
399 |
], |
], |
| 402 |
|
\[dq]git\[dq]: { |
|
| 403 |
|
\[dq]head\[dq]: { |
|
| 404 |
|
\[dq]id\[dq]: \[dq]<commit>\[dq] |
|
|
400 |
|
\(dqgit\(dq: { |
|
401 |
|
\(dqhead\(dq: { |
|
402 |
|
\(dqid\(dq: \(dq<commit>\(dq |
| 405 |
403 |
}, |
}, |
| 406 |
|
\[dq]branch\[dq]: \[dq]<branch>\[dq] |
|
|
404 |
|
\(dqbranch\(dq: \(dq<branch>\(dq |
| 407 |
405 |
} |
} |
| 408 |
406 |
} |
} |
| 409 |
407 |
.EE |
.EE |
| |
| ... |
... |
Reads coverage information from standard input in the following format: |
| 411 |
409 |
Any other elements are ignored. |
Any other elements are ignored. |
| 412 |
410 |
.SS regress |
.SS regress |
| 413 |
411 |
Same as \f[B]diff\f[R] subcommand, but displays introduced lines that |
Same as \f[B]diff\f[R] subcommand, but displays introduced lines that |
| 414 |
|
aren\[cq]t covered. |
|
|
412 |
|
aren\(cqt covered. |
| 415 |
413 |
.PP |
.PP |
| 416 |
414 |
See description of \f[B]diff\f[R] subcommand above for syntax. |
See description of \f[B]diff\f[R] subcommand above for syntax. |
| 417 |
415 |
.SS show |
.SS show |
| |
| ... |
... |
Prints files of \f[B]<build>\f[R] (or last build) located under |
| 434 |
432 |
.SS Location and format |
.SS Location and format |
| 435 |
433 |
Configuration is read from \f[B]<repository\-directory>/uncov.ini\f[R] |
Configuration is read from \f[B]<repository\-directory>/uncov.ini\f[R] |
| 436 |
434 |
file. |
file. |
| 437 |
|
If it doesn\[cq]t exist or contains invalid data (e.g., duplicated |
|
| 438 |
|
keys), default settings remain intact. |
|
|
435 |
|
If it doesn\(cqt exist or contains invalid data (e.g., duplicated keys), |
|
436 |
|
default settings remain intact. |
| 439 |
437 |
.PP |
.PP |
| 440 |
438 |
The file has regular ini\-format and can contain either comments that |
The file has regular ini\-format and can contain either comments that |
| 441 |
439 |
start with \f[B];\f[R] or key\-value pairs like \f[B]tab\-size = 2\f[R] |
start with \f[B];\f[R] or key\-value pairs like \f[B]tab\-size = 2\f[R] |
| |
| ... |
... |
Whether line numbers are displayed in diffs. |
| 487 |
485 |
for a worktree (see \f[B]git\-worktree\f[R](1)) or for the repository |
for a worktree (see \f[B]git\-worktree\f[R](1)) or for the repository |
| 488 |
486 |
that owns it, whichever has either of those files when checking |
that owns it, whichever has either of those files when checking |
| 489 |
487 |
directories in the order they are mentioned. |
directories in the order they are mentioned. |
| 490 |
|
If no files found, repository\[cq]s git\-directory is used. |
|
|
488 |
|
If no files found, repository\(cqs git\-directory is used. |
| 491 |
489 |
.PP |
.PP |
| 492 |
|
\f[B]<data\-directory>/uncov.sqlite\f[R] \[en] storage of coverage data. |
|
|
490 |
|
\f[B]<data\-directory>/uncov.sqlite\f[R] \(en storage of coverage data. |
| 493 |
491 |
.PP |
.PP |
| 494 |
|
\f[B]<data\-directory>/uncov.ini\f[R] \[en] configuration. |
|
|
492 |
|
\f[B]<data\-directory>/uncov.ini\f[R] \(en configuration. |
| 495 |
493 |
.SH SEE ALSO |
.SH SEE ALSO |
| 496 |
494 |
\f[B]uncov\-gcov\f[R](1), \f[B]uncov\-web\f[R](1) |
\f[B]uncov\-gcov\f[R](1), \f[B]uncov\-web\f[R](1) |
| 497 |
495 |
.SH AUTHORS |
.SH AUTHORS |