You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`hash-good` - the last known good commit hash - in case of daca it is the last tagged minor release (not patch release - i.e. 2.x)
14
+
`hash-bad` - the known bad commit hash - in case of daca the one from the `head-info:` line
15
+
`cppcheck-options` - the options for the Cppcheck invokation - in case of daca the ones from the `cppcheck-options:` line and the path to the folder/file to scan
16
+
17
+
If possible use `main` as the function to test stuff with since it won't emit an `unusedFunction` warning.
18
+
19
+
## Bisecting scan time regressions
20
+
21
+
We use daca to track differences in scan time. An overview of regressions in scan time can be found at http://cppcheck1.osuosl.org:8000/time_gt.html.
22
+
23
+
You need to download the archive as specified by the second line in the output and extract it.
24
+
25
+
If the overall scan time regressed you need to specify the whole folder.
26
+
27
+
If a timeout (potential hang) was introduced you can simply specify the file from `error: Internal error: Child process crashed with signal 15 [cppcheckError]`.
28
+
29
+
30
+
## Bisecting result regressions
31
+
32
+
Results regressions are being bisected based on the `--error-exitcode=` result.
33
+
If nothing is found the result will be `0` and it is treated as a _good_ commit.
34
+
If a finding occurs the result will be `1` which is treated as a _bad_ commit.
35
+
36
+
### False positive
37
+
38
+
Provide a code sample which will trigger the false postive.
39
+
40
+
```cpp
41
+
// cppcheck-suppress unusedFunction
42
+
staticvoidf()
43
+
{
44
+
<code triggering FP>
45
+
}
46
+
```
47
+
48
+
### False negative
49
+
50
+
Provide a code sample which will trigger a `unmatchedSuppression`.
51
+
52
+
```cpp
53
+
// cppcheck-suppress unusedFunction
54
+
staticvoidf()
55
+
{
56
+
// cppcheck-suppress unreadVariable
57
+
int i;
58
+
}
59
+
```
60
+
61
+
## Notes
62
+
63
+
### Compilation issues:
64
+
65
+
- 2.5 and before can only be built with GCC<=10 because of missing includes caused by cleanups within the standard headers. You need to specify `CXX=g++-10`.
66
+
- 1.88 and 1.89 cannot be compiled:
67
+
```
68
+
make: python: No such file or directory
69
+
```
70
+
- 1.39 to 1.49 (possibly more versions - 1.54 and up work) cannot be compiled:
71
+
```
72
+
lib/mathlib.cpp:70:42: error: invalid conversion from ‘char’ to ‘char**’ [-fpermissive]
73
+
70 | return std::strtoul(str.c_str(), '\0', 16);
74
+
| ^~~~
75
+
| |
76
+
| char
77
+
```
78
+
- some commits between 2.0 and 2.2 cannot be compiled:
79
+
```
80
+
cli/cppcheckexecutor.cpp:333:22: error: size of array ‘mytstack’ is not an integral constant-expression
81
+
333 | static char mytstack[MYSTACKSIZE]= {0}; // alternative stack for signal handler
82
+
| ^~~~~~~~~~~
83
+
```
84
+
RESOLVED: a hot-patch is applied before compilation.
85
+
- some commits between 1.54 and 1.55 cannot be compiled:
86
+
```
87
+
lib/preprocessor.cpp:2103:5: error: ‘errorLogger’ was not declared in this scope; did you mean ‘_errorLogger’?
0 commit comments