1 | // RUN: %check_clang_tidy %s readability-function-cognitive-complexity %t -- -config='{CheckOptions: {readability-function-cognitive-complexity.Threshold: 0}}' -- -std=c++11 -fblocks -fexceptions -w |
2 | |
3 | // any function should be checked. |
4 | |
5 | extern int ext_func(int x = 0); |
6 | |
7 | int some_func(int x = 0); |
8 | |
9 | static int some_other_func(int x = 0) {} |
10 | |
11 | template<typename T> void some_templ_func(T x = 0) {} |
12 | |
13 | class SomeClass { |
14 | public: |
15 | int *begin(int x = 0); |
16 | int *end(int x = 0); |
17 | static int func(int x = 0); |
18 | template<typename T> void some_templ_func(T x = 0) {} |
19 | SomeClass() = default; |
20 | SomeClass(SomeClass&) = delete; |
21 | }; |
22 | |
23 | // nothing ever decreases cognitive complexity, so we can check all the things |
24 | // in one go. none of the following should increase cognitive complexity: |
25 | void unittest_false() { |
26 | {}; |
27 | ext_func(); |
28 | some_func(); |
29 | some_other_func(); |
30 | some_templ_func<int>(); |
31 | some_templ_func<bool>(); |
32 | SomeClass::func(); |
33 | SomeClass C; |
34 | C.some_templ_func<int>(); |
35 | C.some_templ_func<bool>(); |
36 | C.func(); |
37 | C.end(); |
38 | int i = some_func(); |
39 | i = i; |
40 | i++; |
41 | --i; |
42 | i < 0; |
43 | int j = 0 ?: 1; |
44 | auto k = new int; |
45 | delete k; |
46 | throw i; |
47 | { |
48 | throw i; |
49 | } |
50 | end: |
51 | return; |
52 | } |
53 | |
54 | #if 1 |
55 | #define CC100 |
56 | #else |
57 | // this macro has cognitive complexity of 100. |
58 | // it is needed to be able to compare the testcases with the |
59 | // reference Sonar implementation. please place it right after the first |
60 | // CHECK-NOTES in each function |
61 | #define CC100 if(1){if(1){if(1){if(1){if(1){if(1){if(1){if(1){if(1){if(1){if(1){if(1){if(1){}}}}}if(1){}}}}}}}}} |
62 | #endif |
63 | |
64 | //----------------------------------------------------------------------------// |
65 | //------------------------------ B1. Increments ------------------------------// |
66 | //----------------------------------------------------------------------------// |
67 | // Check that every thing listed in B1 of the specification does indeed // |
68 | // recieve the base increment, and that not-body does not increase nesting // |
69 | //----------------------------------------------------------------------------// |
70 | |
71 | // break does not increase cognitive complexity. |
72 | // only break LABEL does, but it is unavaliable in C or C++ |
73 | |
74 | // continue does not increase cognitive complexity. |
75 | // only continue LABEL does, but it is unavaliable in C or C++ |
76 | |
77 | void unittest_b1_00() { |
78 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_00' has cognitive complexity of 33 (threshold 0) [readability-function-cognitive-complexity] |
79 | CC100; |
80 | |
81 | if (1 ? 1 : 0) { |
82 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
83 | // CHECK-NOTES: :[[@LINE-2]]:9: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
84 | |
85 | if (1 ? 1 : 0) { |
86 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
87 | // CHECK-NOTES: :[[@LINE-2]]:11: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
88 | } else if (1 ? 1 : 0) { |
89 | // CHECK-NOTES: :[[@LINE-1]]:12: note: +1, nesting level increased to 2{{$}} |
90 | // CHECK-NOTES: :[[@LINE-2]]:18: note: +3, including nesting penalty of 2, nesting level increased to 3{{$}} |
91 | } else { |
92 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, nesting level increased to 2{{$}} |
93 | } |
94 | } else if (1 ? 1 : 0) { |
95 | // CHECK-NOTES: :[[@LINE-1]]:10: note: +1, nesting level increased to 1{{$}} |
96 | // CHECK-NOTES: :[[@LINE-2]]:16: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
97 | |
98 | if (1 ? 1 : 0) { |
99 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
100 | // CHECK-NOTES: :[[@LINE-2]]:11: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
101 | } else if (1 ? 1 : 0) { |
102 | // CHECK-NOTES: :[[@LINE-1]]:12: note: +1, nesting level increased to 2{{$}} |
103 | // CHECK-NOTES: :[[@LINE-2]]:18: note: +3, including nesting penalty of 2, nesting level increased to 3{{$}} |
104 | } else { |
105 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, nesting level increased to 2{{$}} |
106 | } |
107 | } else { |
108 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +1, nesting level increased to 1{{$}} |
109 | |
110 | if (1 ? 1 : 0) { |
111 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
112 | // CHECK-NOTES: :[[@LINE-2]]:11: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
113 | } else if (1 ? 1 : 0) { |
114 | // CHECK-NOTES: :[[@LINE-1]]:12: note: +1, nesting level increased to 2{{$}} |
115 | // CHECK-NOTES: :[[@LINE-2]]:18: note: +3, including nesting penalty of 2, nesting level increased to 3{{$}} |
116 | } else { |
117 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, nesting level increased to 2{{$}} |
118 | } |
119 | } |
120 | } |
121 | |
122 | void unittest_b1_01() { |
123 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_01' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
124 | CC100; |
125 | |
126 | int i = (1 ? 1 : 0) ? 1 : 0; |
127 | // CHECK-NOTES: :[[@LINE-1]]:23: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
128 | // CHECK-NOTES: :[[@LINE-2]]:14: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
129 | } |
130 | |
131 | void unittest_b1_02(int x) { |
132 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_02' has cognitive complexity of 9 (threshold 0) [readability-function-cognitive-complexity] |
133 | CC100; |
134 | |
135 | switch (1 ? 1 : 0) { |
136 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
137 | // CHECK-NOTES: :[[@LINE-2]]:13: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
138 | case -1: |
139 | return; |
140 | case 1 ? 1 : 0: |
141 | // CHECK-NOTES: :[[@LINE-1]]:10: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
142 | return; |
143 | case (1 ? 2 : 0) ... (1 ? 3 : 0): |
144 | // CHECK-NOTES: :[[@LINE-1]]:11: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
145 | // CHECK-NOTES: :[[@LINE-2]]:27: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
146 | return; |
147 | default: |
148 | break; |
149 | } |
150 | } |
151 | |
152 | void unittest_b1_03(int x) { |
153 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_03' has cognitive complexity of 7 (threshold 0) [readability-function-cognitive-complexity] |
154 | CC100; |
155 | |
156 | for (x = 1 ? 1 : 0; x < (1 ? 1 : 0); x += 1 ? 1 : 0) { |
157 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
158 | // CHECK-NOTES: :[[@LINE-2]]:14: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
159 | // CHECK-NOTES: :[[@LINE-3]]:30: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
160 | // CHECK-NOTES: :[[@LINE-4]]:47: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
161 | break; |
162 | continue; |
163 | } |
164 | } |
165 | |
166 | void unittest_b1_04() { |
167 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_04' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
168 | CC100; |
169 | |
170 | SomeClass C; |
171 | for (int i : (1 ? C : C)) { |
172 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
173 | // CHECK-NOTES: :[[@LINE-2]]:19: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
174 | break; |
175 | continue; |
176 | } |
177 | } |
178 | |
179 | void unittest_b1_05() { |
180 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_05' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
181 | CC100; |
182 | |
183 | while (1 ? 1 : 0) { |
184 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
185 | // CHECK-NOTES: :[[@LINE-2]]:12: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
186 | break; |
187 | continue; |
188 | } |
189 | } |
190 | |
191 | void unittest_b1_06() { |
192 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_06' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
193 | CC100; |
194 | |
195 | do { |
196 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
197 | break; |
198 | continue; |
199 | } while (1 ? 1 : 0); |
200 | // CHECK-NOTES: :[[@LINE-1]]:14: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
201 | } |
202 | |
203 | void unittest_b1_07() { |
204 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_07' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
205 | CC100; |
206 | |
207 | try { |
208 | } catch (...) { |
209 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
210 | } |
211 | } |
212 | |
213 | void unittest_b1_08_00() { |
214 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_08_00' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
215 | CC100; |
216 | |
217 | goto end; |
218 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1{{$}} |
219 | end: |
220 | return; |
221 | } |
222 | |
223 | void unittest_b1_08_01() { |
224 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_08_01' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
225 | CC100; |
226 | |
227 | void *ptr = &&end; |
228 | goto *ptr; |
229 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1{{$}} |
230 | end: |
231 | return; |
232 | } |
233 | |
234 | void unittest_b1_09_00() { |
235 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_09_00' has cognitive complexity of 34 (threshold 0) [readability-function-cognitive-complexity] |
236 | CC100; |
237 | |
238 | if(1 && 1) { |
239 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
240 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
241 | } |
242 | if(1 && 1 && 1) { |
243 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
244 | // CHECK-NOTES: :[[@LINE-2]]:13: note: +1{{$}} |
245 | } |
246 | if((1 && 1) && 1) { |
247 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
248 | // CHECK-NOTES: :[[@LINE-2]]:15: note: +1{{$}} |
249 | } |
250 | if(1 && (1 && 1)) { |
251 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
252 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
253 | } |
254 | |
255 | if(1 && 1 || 1) { |
256 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
257 | // CHECK-NOTES: :[[@LINE-2]]:13: note: +1{{$}} |
258 | // CHECK-NOTES: :[[@LINE-3]]:8: note: +1{{$}} |
259 | } |
260 | if((1 && 1) || 1) { |
261 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
262 | // CHECK-NOTES: :[[@LINE-2]]:15: note: +1{{$}} |
263 | // CHECK-NOTES: :[[@LINE-3]]:9: note: +1{{$}} |
264 | } |
265 | if(1 && (1 || 1)) { |
266 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
267 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
268 | // CHECK-NOTES: :[[@LINE-3]]:14: note: +1{{$}} |
269 | } |
270 | |
271 | if(1 || 1) { |
272 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
273 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
274 | } |
275 | if(1 || 1 || 1) { |
276 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
277 | // CHECK-NOTES: :[[@LINE-2]]:13: note: +1{{$}} |
278 | } |
279 | if((1 || 1) || 1) { |
280 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
281 | // CHECK-NOTES: :[[@LINE-2]]:15: note: +1{{$}} |
282 | } |
283 | if(1 || (1 || 1)) { |
284 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
285 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
286 | } |
287 | |
288 | if(1 || 1 && 1) { |
289 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
290 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
291 | // CHECK-NOTES: :[[@LINE-3]]:13: note: +1{{$}} |
292 | } |
293 | if((1 || 1) && 1) { |
294 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
295 | // CHECK-NOTES: :[[@LINE-2]]:15: note: +1{{$}} |
296 | // CHECK-NOTES: :[[@LINE-3]]:9: note: +1{{$}} |
297 | } |
298 | if(1 || (1 && 1)) { |
299 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
300 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
301 | // CHECK-NOTES: :[[@LINE-3]]:14: note: +1{{$}} |
302 | } |
303 | } |
304 | |
305 | void unittest_b1_09_01() { |
306 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_09_01' has cognitive complexity of 40 (threshold 0) [readability-function-cognitive-complexity] |
307 | CC100; |
308 | |
309 | if(1 && some_func(x: 1 && 1)) { |
310 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
311 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
312 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
313 | } |
314 | if(1 && some_func(x: 1 || 1)) { |
315 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
316 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
317 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
318 | } |
319 | if(1 || some_func(x: 1 || 1)) { |
320 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
321 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
322 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
323 | } |
324 | if(1 || some_func(x: 1 && 1)) { |
325 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
326 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
327 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
328 | } |
329 | |
330 | if(1 && some_func(x: 1 && 1) && 1) { |
331 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
332 | // CHECK-NOTES: :[[@LINE-2]]:29: note: +1{{$}} |
333 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
334 | } |
335 | if(1 && some_func(x: 1 || 1) && 1) { |
336 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
337 | // CHECK-NOTES: :[[@LINE-2]]:29: note: +1{{$}} |
338 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
339 | } |
340 | if(1 || some_func(x: 1 || 1) && 1) { |
341 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
342 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
343 | // CHECK-NOTES: :[[@LINE-3]]:29: note: +1{{$}} |
344 | // CHECK-NOTES: :[[@LINE-4]]:23: note: +1{{$}} |
345 | } |
346 | if(1 || some_func(x: 1 && 1) && 1) { |
347 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
348 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
349 | // CHECK-NOTES: :[[@LINE-3]]:29: note: +1{{$}} |
350 | // CHECK-NOTES: :[[@LINE-4]]:23: note: +1{{$}} |
351 | } |
352 | |
353 | if(1 && some_func(x: 1 && 1) || 1) { |
354 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
355 | // CHECK-NOTES: :[[@LINE-2]]:29: note: +1{{$}} |
356 | // CHECK-NOTES: :[[@LINE-3]]:8: note: +1{{$}} |
357 | // CHECK-NOTES: :[[@LINE-4]]:23: note: +1{{$}} |
358 | } |
359 | if(1 && some_func(x: 1 || 1) || 1) { |
360 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
361 | // CHECK-NOTES: :[[@LINE-2]]:29: note: +1{{$}} |
362 | // CHECK-NOTES: :[[@LINE-3]]:8: note: +1{{$}} |
363 | // CHECK-NOTES: :[[@LINE-4]]:23: note: +1{{$}} |
364 | } |
365 | if(1 || some_func(x: 1 || 1) || 1) { |
366 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
367 | // CHECK-NOTES: :[[@LINE-2]]:29: note: +1{{$}} |
368 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
369 | } |
370 | if(1 || some_func(x: 1 && 1) || 1) { |
371 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
372 | // CHECK-NOTES: :[[@LINE-2]]:29: note: +1{{$}} |
373 | // CHECK-NOTES: :[[@LINE-3]]:23: note: +1{{$}} |
374 | } |
375 | } |
376 | |
377 | void unittest_b1_09_02() { |
378 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b1_09_02' has cognitive complexity of 12 (threshold 0) [readability-function-cognitive-complexity] |
379 | CC100; |
380 | |
381 | if(1 && SomeClass::func(x: 1 && 1)) { |
382 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
383 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
384 | // CHECK-NOTES: :[[@LINE-3]]:29: note: +1{{$}} |
385 | } |
386 | if(1 && SomeClass::func(x: 1 || 1)) { |
387 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
388 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
389 | // CHECK-NOTES: :[[@LINE-3]]:29: note: +1{{$}} |
390 | } |
391 | if(1 || SomeClass::func(x: 1 || 1)) { |
392 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
393 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
394 | // CHECK-NOTES: :[[@LINE-3]]:29: note: +1{{$}} |
395 | } |
396 | if(1 || SomeClass::func(x: 1 && 1)) { |
397 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
398 | // CHECK-NOTES: :[[@LINE-2]]:8: note: +1{{$}} |
399 | // CHECK-NOTES: :[[@LINE-3]]:29: note: +1{{$}} |
400 | } |
401 | } |
402 | |
403 | // FIXME: each method in a recursion cycle |
404 | |
405 | //----------------------------------------------------------------------------// |
406 | //---------------------------- B2. Nesting lebel -----------------------------// |
407 | //----------------------------------------------------------------------------// |
408 | // Check that every thing listed in B2 of the specification does indeed // |
409 | // increase the nesting level // |
410 | //----------------------------------------------------------------------------// |
411 | |
412 | void unittest_b2_00() { |
413 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_00' has cognitive complexity of 9 (threshold 0) [readability-function-cognitive-complexity] |
414 | CC100; |
415 | |
416 | if (true) { |
417 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
418 | if(true) { |
419 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
420 | } |
421 | } else if (true) { |
422 | // CHECK-NOTES: :[[@LINE-1]]:10: note: +1, nesting level increased to 1{{$}} |
423 | if(true) { |
424 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
425 | } |
426 | } else { |
427 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +1, nesting level increased to 1{{$}} |
428 | if(true) { |
429 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
430 | } |
431 | } |
432 | } |
433 | |
434 | void unittest_b2_01() { |
435 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_01' has cognitive complexity of 5 (threshold 0) [readability-function-cognitive-complexity] |
436 | CC100; |
437 | |
438 | int i = 1 ? (1 ? 1 : 0) : (1 ? 1 : 0); |
439 | // CHECK-NOTES: :[[@LINE-1]]:13: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
440 | // CHECK-NOTES: :[[@LINE-2]]:18: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
441 | // CHECK-NOTES: :[[@LINE-3]]:32: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
442 | } |
443 | |
444 | void unittest_b2_02(int x) { |
445 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_02' has cognitive complexity of 5 (threshold 0) [readability-function-cognitive-complexity] |
446 | CC100; |
447 | |
448 | switch (x) { |
449 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
450 | case -1: |
451 | if(true) { |
452 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
453 | } |
454 | return; |
455 | default: |
456 | if(true) { |
457 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
458 | } |
459 | return; |
460 | } |
461 | } |
462 | |
463 | void unittest_b2_03() { |
464 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_03' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
465 | CC100; |
466 | |
467 | for (;;) { |
468 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
469 | if(true) { |
470 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
471 | } |
472 | } |
473 | } |
474 | |
475 | void unittest_b2_04() { |
476 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_04' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
477 | CC100; |
478 | |
479 | SomeClass C; |
480 | for (int i : C) { |
481 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
482 | if(true) { |
483 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
484 | } |
485 | } |
486 | } |
487 | |
488 | void unittest_b2_05() { |
489 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_05' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
490 | CC100; |
491 | |
492 | while (true) { |
493 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
494 | if(true) { |
495 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
496 | } |
497 | } |
498 | } |
499 | |
500 | void unittest_b2_06() { |
501 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_06' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
502 | CC100; |
503 | |
504 | do { |
505 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
506 | if(true) { |
507 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
508 | } |
509 | } while (true); |
510 | } |
511 | |
512 | void unittest_b2_07() { |
513 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_07' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
514 | CC100; |
515 | |
516 | try { |
517 | } catch (...) { |
518 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
519 | if(true) { |
520 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
521 | } |
522 | } |
523 | } |
524 | |
525 | void unittest_b2_08_00() { |
526 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_08_00' has cognitive complexity of 10 (threshold 0) [readability-function-cognitive-complexity] |
527 | CC100; |
528 | |
529 | class X { |
530 | X() { |
531 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
532 | CC100; |
533 | |
534 | if (true) { |
535 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
536 | } |
537 | } |
538 | |
539 | X &operator=(const X &other) { |
540 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
541 | CC100; |
542 | |
543 | if (true) { |
544 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
545 | } |
546 | } |
547 | |
548 | ~X() { |
549 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
550 | CC100; |
551 | |
552 | if (true) { |
553 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
554 | } |
555 | } |
556 | |
557 | void Y() { |
558 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
559 | CC100; |
560 | |
561 | if (true) { |
562 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
563 | } |
564 | } |
565 | |
566 | static void Z() { |
567 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
568 | CC100; |
569 | |
570 | if (true) { |
571 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
572 | } |
573 | } |
574 | |
575 | // CHECK-NOTES: :[[@LINE-45]]:5: warning: function 'X' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
576 | // CHECK-NOTES: :[[@LINE-42]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
577 | |
578 | // CHECK-NOTES: :[[@LINE-39]]:8: warning: function 'operator=' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
579 | // CHECK-NOTES: :[[@LINE-36]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
580 | |
581 | // CHECK-NOTES: :[[@LINE-33]]:5: warning: function '~X' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
582 | // CHECK-NOTES: :[[@LINE-30]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
583 | |
584 | // CHECK-NOTES: :[[@LINE-27]]:10: warning: function 'Y' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
585 | // CHECK-NOTES: :[[@LINE-24]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
586 | |
587 | // CHECK-NOTES: :[[@LINE-21]]:17: warning: function 'Z' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
588 | // CHECK-NOTES: :[[@LINE-18]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
589 | }; |
590 | } |
591 | |
592 | void unittest_b2_08_01() { |
593 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_08_01' has cognitive complexity of 10 (threshold 0) [readability-function-cognitive-complexity] |
594 | CC100; |
595 | |
596 | struct X { |
597 | X() { |
598 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
599 | CC100; |
600 | |
601 | if (true) { |
602 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
603 | } |
604 | } |
605 | |
606 | X &operator=(const X &other) { |
607 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
608 | CC100; |
609 | |
610 | if (true) { |
611 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
612 | } |
613 | } |
614 | |
615 | ~X() { |
616 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
617 | CC100; |
618 | |
619 | if (true) { |
620 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
621 | } |
622 | } |
623 | |
624 | void Y() { |
625 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
626 | CC100; |
627 | |
628 | if (true) { |
629 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
630 | } |
631 | } |
632 | |
633 | static void Z() { |
634 | // CHECK-NOTES: :[[@LINE-1]]:5: note: nesting level increased to 1{{$}} |
635 | CC100; |
636 | |
637 | if (true) { |
638 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
639 | } |
640 | } |
641 | |
642 | // CHECK-NOTES: :[[@LINE-45]]:5: warning: function 'X' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
643 | // CHECK-NOTES: :[[@LINE-42]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
644 | |
645 | // CHECK-NOTES: :[[@LINE-39]]:8: warning: function 'operator=' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
646 | // CHECK-NOTES: :[[@LINE-36]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
647 | |
648 | // CHECK-NOTES: :[[@LINE-33]]:5: warning: function '~X' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
649 | // CHECK-NOTES: :[[@LINE-30]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
650 | |
651 | // CHECK-NOTES: :[[@LINE-27]]:10: warning: function 'Y' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
652 | // CHECK-NOTES: :[[@LINE-24]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
653 | |
654 | // CHECK-NOTES: :[[@LINE-21]]:17: warning: function 'Z' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
655 | // CHECK-NOTES: :[[@LINE-18]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
656 | }; |
657 | } |
658 | |
659 | void unittest_b2_08_02() { |
660 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_08_02' has cognitive complexity of 2 (threshold 0) [readability-function-cognitive-complexity] |
661 | CC100; |
662 | |
663 | auto fun = []() { |
664 | // CHECK-NOTES: :[[@LINE-1]]:14: note: nesting level increased to 1{{$}} |
665 | if (true) { |
666 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
667 | } |
668 | }; |
669 | // CHECK-NOTES: :[[@LINE-6]]:14: warning: lambda has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
670 | // CHECK-NOTES: :[[@LINE-5]]:5: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
671 | } |
672 | |
673 | void unittest_b2_09() { |
674 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_09' has cognitive complexity of 2 (threshold 0) [readability-function-cognitive-complexity] |
675 | CC100; |
676 | |
677 | ({ |
678 | // CHECK-NOTES: :[[@LINE-1]]:3: note: nesting level increased to 1{{$}} |
679 | if (true) { |
680 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
681 | } |
682 | }); |
683 | } |
684 | |
685 | void unittest_b2_10() { |
686 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b2_10' has cognitive complexity of 2 (threshold 0) [readability-function-cognitive-complexity] |
687 | CC100; |
688 | |
689 | void (^foo)(void) = ^(void) { |
690 | // CHECK-NOTES: :[[@LINE-1]]:23: note: nesting level increased to 1{{$}} |
691 | if (true) { |
692 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
693 | } |
694 | }; |
695 | } |
696 | |
697 | //----------------------------------------------------------------------------// |
698 | //-------------------------- B3. Nesting increments --------------------------// |
699 | //----------------------------------------------------------------------------// |
700 | // Check that every thing listed in B3 of the specification does indeed // |
701 | // recieve the penalty of the current nesting level // |
702 | //----------------------------------------------------------------------------// |
703 | |
704 | void unittest_b3_00() { |
705 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_00' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
706 | CC100; |
707 | |
708 | if (true) { |
709 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
710 | if (true) { |
711 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
712 | } |
713 | } |
714 | } |
715 | |
716 | void unittest_b3_01() { |
717 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_01' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
718 | CC100; |
719 | |
720 | if (true) { |
721 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
722 | int i = 1 ? 1 : 0; |
723 | // CHECK-NOTES: :[[@LINE-1]]:15: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
724 | } |
725 | } |
726 | |
727 | void unittest_b3_02(int x) { |
728 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_02' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
729 | CC100; |
730 | |
731 | if (true) { |
732 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
733 | switch (x) { |
734 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
735 | case -1: |
736 | return; |
737 | default: |
738 | return; |
739 | } |
740 | } |
741 | } |
742 | |
743 | void unittest_b3_03() { |
744 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_03' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
745 | CC100; |
746 | |
747 | if (true) { |
748 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
749 | for (;;) { |
750 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
751 | } |
752 | } |
753 | } |
754 | |
755 | void unittest_b3_04() { |
756 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_04' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
757 | CC100; |
758 | |
759 | if (true) { |
760 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
761 | SomeClass C; |
762 | for (int i : C) { |
763 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
764 | } |
765 | } |
766 | } |
767 | |
768 | void unittest_b3_05() { |
769 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_05' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
770 | CC100; |
771 | |
772 | if (true) { |
773 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
774 | while (true) { |
775 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
776 | } |
777 | } |
778 | } |
779 | |
780 | void unittest_b3_06() { |
781 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_06' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
782 | CC100; |
783 | |
784 | if (true) { |
785 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
786 | do { |
787 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
788 | } while (true); |
789 | } |
790 | } |
791 | |
792 | void unittest_b3_07() { |
793 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'unittest_b3_07' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
794 | CC100; |
795 | |
796 | if (true) { |
797 | // CHECK-NOTES: :[[@LINE-1]]:3: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
798 | try { |
799 | } catch (...) { |
800 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +2, including nesting penalty of 1, nesting level increased to 2{{$}} |
801 | } |
802 | } |
803 | } |
804 | |
805 | //----------------------------------------------------------------------------// |
806 | // Check that functions are being checked // |
807 | //----------------------------------------------------------------------------// |
808 | |
809 | class CheckClass { |
810 | CheckClass(int x) { |
811 | // CHECK-NOTES: :[[@LINE-1]]:3: warning: function 'CheckClass' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
812 | CC100; |
813 | |
814 | try { |
815 | } catch (...) { |
816 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
817 | } |
818 | } |
819 | |
820 | void PrivateMemberFunction() { |
821 | // CHECK-NOTES: :[[@LINE-1]]:8: warning: function 'PrivateMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
822 | CC100; |
823 | |
824 | try { |
825 | } catch (...) { |
826 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
827 | } |
828 | } |
829 | |
830 | void PrivateConstMemberFunction() const { |
831 | // CHECK-NOTES: :[[@LINE-1]]:8: warning: function 'PrivateConstMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
832 | CC100; |
833 | |
834 | try { |
835 | } catch (...) { |
836 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
837 | } |
838 | } |
839 | |
840 | static void PrivateStaticMemberFunction() { |
841 | // CHECK-NOTES: :[[@LINE-1]]:15: warning: function 'PrivateStaticMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
842 | CC100; |
843 | |
844 | try { |
845 | } catch (...) { |
846 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
847 | } |
848 | } |
849 | |
850 | public: |
851 | CheckClass() { |
852 | // CHECK-NOTES: :[[@LINE-1]]:3: warning: function 'CheckClass' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
853 | CC100; |
854 | |
855 | try { |
856 | } catch (...) { |
857 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
858 | } |
859 | } |
860 | |
861 | operator bool() const { |
862 | // CHECK-NOTES: :[[@LINE-1]]:3: warning: function 'operator bool' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
863 | CC100; |
864 | |
865 | try { |
866 | } catch (...) { |
867 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
868 | } |
869 | } |
870 | |
871 | ~CheckClass() { |
872 | // CHECK-NOTES: :[[@LINE-1]]:3: warning: function '~CheckClass' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
873 | CC100; |
874 | |
875 | try { |
876 | } catch (...) { |
877 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
878 | } |
879 | } |
880 | |
881 | void PublicMemberFunction() { |
882 | // CHECK-NOTES: :[[@LINE-1]]:8: warning: function 'PublicMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
883 | CC100; |
884 | |
885 | try { |
886 | } catch (...) { |
887 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
888 | } |
889 | } |
890 | |
891 | void PublicConstMemberFunction() const { |
892 | // CHECK-NOTES: :[[@LINE-1]]:8: warning: function 'PublicConstMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
893 | CC100; |
894 | |
895 | try { |
896 | } catch (...) { |
897 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
898 | } |
899 | } |
900 | |
901 | static void PublicStaticMemberFunction() { |
902 | // CHECK-NOTES: :[[@LINE-1]]:15: warning: function 'PublicStaticMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
903 | CC100; |
904 | |
905 | try { |
906 | } catch (...) { |
907 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
908 | } |
909 | } |
910 | |
911 | void PublicFunctionDefinition(); |
912 | |
913 | protected: |
914 | CheckClass(bool b) { |
915 | // CHECK-NOTES: :[[@LINE-1]]:3: warning: function 'CheckClass' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
916 | CC100; |
917 | |
918 | try { |
919 | } catch (...) { |
920 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
921 | } |
922 | } |
923 | |
924 | void ProtectedMemberFunction() { |
925 | // CHECK-NOTES: :[[@LINE-1]]:8: warning: function 'ProtectedMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
926 | CC100; |
927 | |
928 | try { |
929 | } catch (...) { |
930 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
931 | } |
932 | } |
933 | |
934 | void ProtectedConstMemberFunction() const { |
935 | // CHECK-NOTES: :[[@LINE-1]]:8: warning: function 'ProtectedConstMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
936 | CC100; |
937 | |
938 | try { |
939 | } catch (...) { |
940 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
941 | } |
942 | } |
943 | |
944 | static void ProtectedStaticMemberFunction() { |
945 | // CHECK-NOTES: :[[@LINE-1]]:15: warning: function 'ProtectedStaticMemberFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
946 | CC100; |
947 | |
948 | try { |
949 | } catch (...) { |
950 | // CHECK-NOTES: :[[@LINE-1]]:7: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
951 | } |
952 | } |
953 | }; |
954 | |
955 | void CheckClass::PublicFunctionDefinition() { |
956 | // CHECK-NOTES: :[[@LINE-1]]:18: warning: function 'PublicFunctionDefinition' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
957 | CC100; |
958 | |
959 | try { |
960 | } catch (...) { |
961 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
962 | } |
963 | } |
964 | |
965 | #define uglyfunctionmacro(name) \ |
966 | void name() { \ |
967 | CC100; \ |
968 | \ |
969 | if (true) { \ |
970 | try { \ |
971 | } catch (...) { \ |
972 | } \ |
973 | } \ |
974 | } |
975 | |
976 | uglyfunctionmacro(MacroFunction) |
977 | // CHECK-NOTES: :[[@LINE-1]]:19: warning: function 'MacroFunction' has cognitive complexity of 3 (threshold 0) [readability-function-cognitive-complexity] |
978 | // CHECK-NOTES: :[[@LINE-2]]:1: note: +1, including nesting penalty of 0, nesting level increased to 1 |
979 | // CHECK-NOTES: :[[@LINE-10]]:5: note: expanded from macro 'uglyfunctionmacro' |
980 | // CHECK-NOTES: :[[@LINE-4]]:1: note: +2, including nesting penalty of 1, nesting level increased to 2 |
981 | // CHECK-NOTES: :[[@LINE-10]]:9: note: expanded from macro 'uglyfunctionmacro' |
982 | |
983 | template<typename T> |
984 | void templatedFunction() { |
985 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'templatedFunction' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
986 | CC100; |
987 | |
988 | try { |
989 | } catch (...) { |
990 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
991 | } |
992 | } |
993 | |
994 | template<> |
995 | void templatedFunction<bool>() { |
996 | // CHECK-NOTES: :[[@LINE-1]]:6: warning: function 'templatedFunction<bool>' has cognitive complexity of 1 (threshold 0) [readability-function-cognitive-complexity] |
997 | CC100; |
998 | |
999 | try { |
1000 | } catch (...) { |
1001 | // CHECK-NOTES: :[[@LINE-1]]:5: note: +1, including nesting penalty of 0, nesting level increased to 1{{$}} |
1002 | } |
1003 | } |
1004 | |
1005 | template void templatedFunction<int>(); |
1006 | |
1007 | void functionThatCallsTemplatedFunctions() { |
1008 | templatedFunction<int>(); |
1009 | |
1010 | templatedFunction<bool>(); |
1011 | |
1012 | templatedFunction<char>(); |
1013 | |
1014 | templatedFunction<void*>(); |
1015 | } |
1016 | |
1017 | static void pr47779_dont_crash_on_weak() __attribute__((__weakref__("__pr47779_dont_crash_on_weak" ))); |
1018 | |