質問編集履歴

2

2017/09/06 03:03

投稿

hydrangeas
hydrangeas

スコア6

test CHANGED
@@ -1 +1 @@
1
- コードカバレッジ結果フォーマットのデファクトを知りたい
1
+ コードカバレッジ結果を保存するフォーマットのデファクトを知りたい
test CHANGED
File without changes

1

2017/09/06 03:03

投稿

hydrangeas
hydrangeas

スコア6

test CHANGED
File without changes
test CHANGED
@@ -6,258 +6,8 @@
6
6
 
7
7
 
8
8
 
9
- ** コードカバレッジ結果を保存するためのフォーマットを探しています。**
9
+ そこで、** コードカバレッジ結果を保存するためのフォーマットを探しています。**
10
10
 
11
11
 
12
12
 
13
- * [LLVM Code Coverage Format](https://llvm.org/docs/CoverageMappingFormat.html)
14
-
15
-
16
-
17
- 上記の情報が求めているものに非常に近いので、**バイナリフォーマット**のサンプル・説明等、参考サイトのリンクだけでも結構ですので、ご教示いただければ幸いです。
18
-
19
-
20
-
21
- ###試したこと
22
-
23
-
24
-
25
- 以下でいうところの**default.profdata/default.profraw**のデータフォーマットが知りたいです。
26
-
27
- また、JSONで出力されたデータがバイナリデータと1:1となっており、情報の欠落・追加等がないかといった点についても知りたいと思っています。
28
-
29
-
30
-
31
- ```bash
32
-
33
- $ cat a.c
34
-
35
- #include <stdio.h>
36
-
37
-
38
-
39
- int main(void) {
40
-
41
- printf("Hello, World\n");
42
-
43
- return 0;
44
-
45
- }
46
-
47
- $ xcrun clang -g -Wall -Werror -O0 -fprofile-instr-generate -fcoverage-mapping a.c
48
-
49
- $ ./a.out
50
-
51
- $ xcrun llvm-profdata merge -o default.profdata default.profraw
52
-
53
- $ xcrun llvm-cov show ./a.out -instr-profile=default.profdata a.c
54
-
55
- 1| |#include <stdio.h>
56
-
57
- 2| |
58
-
59
- 3| 1|int main(void) {
60
-
61
- 4| 1| printf("Hello, World\n");
62
-
63
- 5| 1| return 0;
64
-
65
- 6| 1|}
66
-
67
- $ xcrun llvm-cov export ./a.out -instr-profile=default.profdata a.c|jq [/tmp]
68
-
69
- {
70
-
71
- "version": "2.0.0",
72
-
73
- "type": "llvm.coverage.json.export",
74
-
75
- "data": [
76
-
77
- {
78
-
79
- "files": [
80
-
81
- {
82
-
83
- "filename": "/tmp/a.c",
84
-
85
- "segments": [
86
-
87
- [
88
-
89
- 3,
90
-
91
- 16,
92
-
93
- 1,
94
-
95
- 1,
96
-
97
- 1
98
-
99
- ],
100
-
101
- [
102
-
103
- 6,
104
-
105
- 2,
106
-
107
- 0,
108
-
109
- 0,
110
-
111
- 0
112
-
113
- ]
114
-
115
- ],
116
-
117
- "expansions": [],
118
-
119
- "summary": {
120
-
121
- "lines": {
122
-
123
- "count": 4,
124
-
125
- "covered": 4,
126
-
127
- "percent": 100
128
-
129
- },
130
-
131
- "functions": {
132
-
133
- "count": 1,
134
-
135
- "covered": 1,
136
-
137
- "percent": 100
138
-
139
- },
140
-
141
- "instantiations": {
142
-
143
- "count": 1,
144
-
145
- "covered": 1,
146
-
147
- "percent": 100
148
-
149
- },
150
-
151
- "regions": {
152
-
153
- "count": 1,
154
-
155
- "covered": 1,
156
-
157
- "notcovered": 0,
158
-
159
- "percent": 100
160
-
161
- }
162
-
163
- }
164
-
165
- }
166
-
167
- ],
168
-
169
- "functions": [
170
-
171
- {
172
-
173
- "name": "main",
174
-
175
- "count": 1,
176
-
177
- "regions": [
178
-
179
- [
180
-
181
- 3,
182
-
183
- 16,
184
-
185
- 6,
186
-
187
- 2,
188
-
189
- 1,
190
-
191
- 0,
192
-
193
- 0,
194
-
195
- 0
196
-
197
- ]
198
-
199
- ],
200
-
201
- "filenames": [
202
-
203
- "/tmp/a.c"
204
-
205
- ]
206
-
207
- }
208
-
209
- ],
210
-
211
- "totals": {
212
-
213
- "lines": {
214
-
215
- "count": 4,
216
-
217
- "covered": 4,
218
-
219
- "percent": 100
220
-
221
- },
222
-
223
- "functions": {
224
-
225
- "count": 1,
226
-
227
- "covered": 1,
228
-
229
- "percent": 100
230
-
231
- },
232
-
233
- "instantiations": {
234
-
235
- "count": 1,
236
-
237
- "covered": 1,
238
-
239
- "percent": 100
240
-
241
- },
242
-
243
- "regions": {
244
-
245
- "count": 1,
246
-
247
- "covered": 1,
248
-
249
- "notcovered": 0,
250
-
251
- "percent": 100
252
-
253
- }
254
-
255
- }
256
-
257
- }
258
-
259
- ]
260
-
261
- }
262
-
263
- ```
13
+ XMLやJSONだと助かります。