Paul Fultz II
84f102283b
Warn when modifying container from another function in a loop ( #3510 )
2021-10-15 11:54:29 +02:00
Daniel Marjamäki
fc8ab1b3af
Addon; Determine proper full path for 'executable' addon
2021-10-15 11:16:15 +02:00
Paul Fultz II
876702c4f2
Fix 10098: false negative: 'Reference to temporary returned.' not detected with class ( #3509 )
2021-10-15 10:59:40 +02:00
Paul Fultz II
7f04658585
Fix 10548: FP knownConditionTrueFalse with loop and operator++ ( #3511 )
2021-10-15 10:59:01 +02:00
Paul Fultz II
89515600e4
Fix 10538: FN: nullPointer (std::swap pointers) ( #3504 )
2021-10-15 10:58:16 +02:00
Paul Fultz II
130d1abbce
Fix 10210: FN: nullPointerRedundantCheck regression in member function ( #3512 )
2021-10-15 10:57:40 +02:00
Paul Fultz II
f1f86db0da
Fix 10544: FP knownConditionTrueFalse with loop after check ( #3508 )
2021-10-14 16:47:15 +02:00
Paul Fultz II
6b9ef1fc58
Propagate symbolic values for identity operators ( #3497 )
2021-10-14 16:46:36 +02:00
Daniel Marjamäki
0a5b7b2af5
Make it possible to configure default addons in a cppcheck.cfg file.
...
Example:
{
"addons":["cert"]
}
With that cppcheck.cfg file cppcheck will always run the "cert" addon. Explicit options such as --addon=cert will not be needed.
2021-10-13 20:02:48 +02:00
Oliver Stöneberg
99db1f3f22
fixed some compiler warnings ( #3502 )
2021-10-13 12:10:26 +02:00
Daniel Marjamäki
6a30eabf21
Addons; allow multiple locations in addon error message
2021-10-11 22:07:03 +02:00
Daniel Marjamäki
fd05fd7934
Allow compiled addons
2021-10-11 19:26:51 +02:00
Paul Fultz II
52e4bec50a
Fix 10537: FN: knownConditionTrueFalse (std::string::c_str() never returns nullptr) ( #3498 )
2021-10-11 19:16:12 +02:00
Paul Fultz II
5e9bc48d26
Evaluate symbolic values ( #3495 )
2021-10-11 19:10:37 +02:00
chrchr-github
474c3d3731
MSVC: add missing files to project ( #3500 )
2021-10-11 19:01:49 +02:00
Daniel Marjamäki
6bd5f79451
Revert "Fix 8629: false negative: (style) Condition '...' is always true ( #3492 )"
...
This reverts commit b9be38aaec
.
2021-10-10 21:21:21 +02:00
Paul Fultz II
b9be38aaec
Fix 8629: false negative: (style) Condition '...' is always true ( #3492 )
2021-10-09 16:20:38 +02:00
Paul Fultz II
bc90ae889d
Fix 10543: FP knownConditionTrueFalse with static variable ( #3491 )
2021-10-09 16:20:04 +02:00
Paul Fultz II
a1e0ef9b38
Refactor: Use interval analysis for symbolic values for inferCondtion ( #3488 )
2021-10-09 16:19:06 +02:00
Paul Fultz II
25eb0ab5bc
Find dangling pointers to unique_ptr ( #3486 )
2021-10-06 08:46:25 +02:00
Paul Fultz II
3cb252bd99
Fix 9873: False negative: null pointer when checking raw pointer ( #3485 )
2021-10-06 08:39:58 +02:00
chrchr-github
f3e1f0d41b
Fix #10238 : char* confused with char ( #3484 )
2021-10-05 18:04:48 +02:00
Paul Fultz II
9b6c7007d2
Fix 9870: False negative: null pointer after duplicate conditions ( #3481 )
2021-10-05 08:29:23 +02:00
Paul Fultz II
8668d445c7
Add support for string_view ( #3480 )
2021-10-05 08:28:19 +02:00
Paul Fultz II
71809044bd
Fix 10522: FP: derefInvalidIterator when using emplace with 1 argument ( #3482 )
2021-10-05 08:23:47 +02:00
Paul Fultz II
c7e13d0e0b
Forward container size values in subfunctions ( #3483 )
2021-10-05 08:22:19 +02:00
KenPatrickLehrmann
61cddabe74
Fix FP due to namespace scope ( #3475 )
2021-10-04 23:16:16 +02:00
chrchr-github
428144c53c
Fix #10513 : vector constructed from pointers ( #3473 )
2021-10-04 07:55:17 +02:00
Paul Fultz II
7621fee3d4
Refactor: Use ValueFlow::Value for ProgramMemory execute instead of integers ( #3477 )
2021-10-04 07:53:58 +02:00
Paul Fultz II
2ca2abdf0e
Remove duplicate uninit warnings ( #3478 )
2021-10-04 07:50:23 +02:00
Daniel Marjamäki
f3d9755e65
UninitVar: too many warnings (pointer dereference)
2021-10-03 18:12:29 +02:00
Daniel Marjamäki
9f2ddf1623
UninitVar: too many warnings (function/cast operand)
2021-10-03 14:47:57 +02:00
Paul Fultz II
fc6a791a74
Fix 9766: False positive; suspicious operator is written in declaration ( #3476 )
2021-10-03 09:59:51 +02:00
chrchr-github
609e20d9d8
ValueFlow: string can be constructed from init list ( #3459 )
2021-10-02 23:09:49 +02:00
Daniel Marjamäki
7684d7b98a
2.6 dev: set version
2021-10-02 13:15:12 +02:00
chrchr-github
0c16e346f1
Minor: add endsWith() template, empy() check ( #3472 )
2021-09-28 20:34:21 +02:00
Daniel Marjamäki
08f9de95e2
Update copyright year
2021-09-26 11:34:56 +02:00
Paul Fultz II
d1181ad8e2
Fix 10506: Hang: template alias (TemplateSimplfier) ( #3466 )
2021-09-25 11:56:39 +02:00
Paul Fultz II
5c3b69fe96
Fix 10496: crash: endless recursion (symbolDatabaseCreateExprId => isSameExpr => isSameExpr ...) ( #3467 )
2021-09-25 11:55:49 +02:00
Daniel Marjamäki
2ee920dc4e
Fixed #10495 (False positive: unreadVariable when assigning to reference returned by method)
2021-09-24 07:30:17 +02:00
Paul Fultz II
edd435d5f0
Fix 10491: Crash in unusedFunction on valid C++ code ( #3465 )
2021-09-22 13:03:46 +02:00
Paul Fultz II
255dc0484a
Fix 10331: wrong conditional value after assignment+return ( #3461 )
2021-09-21 19:25:41 +02:00
Paul Fultz II
c76e6345c4
Fix FPs in bitwiseOnBoolean ( #3455 )
2021-09-19 15:20:57 +02:00
Paul Fultz II
9e9a982c6c
Fix 10468: False positive; uninitialized variable. Loop is always executed at least once ( #3462 )
2021-09-18 22:23:05 +02:00
Daniel Marjamäki
6234e9ddda
Fixed #10483 (FP constParameter with array member and memcpy)
2021-09-15 21:25:16 +02:00
chrchr-github
05acc13582
Shadow variables, const, rename function ( #3456 )
2021-09-15 20:28:58 +02:00
Daniel Marjamäki
a9a093e7cc
Fixed #10367 (False positive; pointer out of bounds argv-1)
2021-09-15 08:29:10 +02:00
Daniel Marjamäki
29bbb4ce14
Fixed #9220 (False positive: Unused function check for template parameter)
2021-09-12 20:27:49 +02:00
Daniel Marjamäki
23d37e5e7b
Fix crash in daca@home
2021-09-12 19:41:35 +02:00
Daniel Marjamäki
b455f847ba
Fixed #10448 (FN compareValueOutOfTypeRangeError with int32_t)
2021-09-12 15:08:14 +02:00
Daniel Marjamäki
6f4ce486a2
Fix FP in constVariable
2021-09-11 20:25:46 +02:00
Paul Fultz II
9ece849d80
Fix 10467: FP mismatchingContainers with array of vectors ( #3453 )
2021-09-09 20:43:46 +02:00
Paul Fultz II
b0b3f7ec2d
Fix 10464: FP: knownConditionTrueFalse ( #3452 )
2021-09-09 07:49:56 +02:00
Daniel Marjamäki
47f5e5d145
Fixed #10461 (FP missingReturn with empty initializer list)
2021-09-06 21:20:19 +02:00
Paul Fultz II
d4174a31ba
Fix 10414: FP 'The address of local variable 'single_value' might be accessed at non-zero index.' (regression) ( #3447 )
2021-09-06 07:15:46 +02:00
Paul Fultz II
98e22f6162
Fix 10413: FP arrayIndexOutOfBoundsCond after check ( #3446 )
2021-09-06 07:15:24 +02:00
Daniel Marjamäki
045f21ee48
Fixed #10142 (FP uninitMemberVar with std::map)
2021-09-05 16:35:24 +02:00
Paul Fultz II
0335671b35
Fix 10450: regression, FP : Iterator 'iter' from different container 'l' are used together ( #3436 )
2021-09-05 07:35:33 +02:00
FabianWolff
cd5fa015c1
Fix incorrect warning with `%zi` in format string ( #3437 )
2021-09-05 07:34:22 +02:00
Paul Fultz II
ccb31d8510
Fix 10460: FP knownConditionTrueFalse 'fabs(x)<1/(double)16' is always false ( #3445 )
2021-09-05 07:10:58 +02:00
Paul Fultz II
928efe77fc
Fix 9765: FP: knownConditionTrueFalse handling of template function with ternary operator ( #3443 )
2021-09-04 19:55:36 +02:00
Paul Fultz II
28bc717cbe
Fix 10163: false positive: lifetime for r is not same as for seq 'for (auto& r: seq)' ( #3442 )
2021-09-04 19:53:14 +02:00
Paul Fultz II
82b725e540
Fix FP when using deferred locks ( #3441 )
2021-09-04 19:06:48 +02:00
Paul Fultz II
9eb5eadd35
Fix 9777: False Positive: Condition is always true with reset/release on unique_ptr ( #3440 )
2021-09-04 19:06:13 +02:00
Paul Fultz II
8a708e556c
Fix 10456: FP identicalConditionAfterEarlyExit with variable captured by reference ( #3439 )
2021-09-04 19:05:41 +02:00
Ken-Patrick Lehrmann
b3b3b6b2a1
Fix handling of namespace scope with several bodystarts ( #3438 )
...
Follow up to 0093452bed
.
Give the proper end to getVariableList, since it might not be bodyEnd.
Before that, getVariableList would add the same variables in several
unrelated scopes, and all kind of false positive would follow.
For instance, with the case I added in the unit-tests, I had:
```
../code.cpp:15:18: warning: The struct 'is_A' defines member variable with name 'foo' also defined in its parent struct 'is_A_impl'. [duplInheritedMember]
static const int foo = 8;
^
../code.cpp:15:18: note: Parent variable 'is_A_impl::foo'
static const int foo = 8;
^
../code.cpp:15:18: note: Derived variable 'is_A::foo'
static const int foo = 8;
^
../code.cpp:15:18: style: struct member 'has_A::foo' is never used. [unusedStructMember]
static const int foo = 8;
^
../code.cpp:15:18: style: struct member 'is_A::foo' is never used. [unusedStructMember]
static const int foo = 8;
^
```
2021-09-04 11:09:33 +02:00
Paul Fultz II
b788e41191
Fix 10438: FP knownConditionTrueFalse after return in a catch clause ( #3429 )
2021-09-03 23:07:08 +02:00
Daniel Marjamäki
dccebb98ea
Removed missingReturn inconclusive warnings, that was too noisy
2021-09-01 19:50:17 +02:00
Ken-Patrick Lehrmann
4296859c1a
Remove usage of std::vector and getArguments from getTokenArgumentFunction ( #3435 )
...
getTokenArgumentFunction can be called many many times, and the vector
is not needed, but it can become quite costly.
This patch replaces getArguments with a function simply returning the
position of the token, if it is found in the arguments (thus saving the
cost of std::vector).
2021-09-01 10:51:44 +02:00
Paul Fultz II
7ce17f076a
Fix 10318: iterator converted to type, wrong scope check ( #3433 )
2021-08-31 09:48:23 +02:00
Daniel Marjamäki
15eb53b403
Tokenizer: Add 'enum struct' pattern
2021-08-30 20:18:06 +02:00
Paul Fultz II
49df3d811a
Validate asserts in the AST to fix crash in 10442 ( #3428 )
2021-08-29 20:45:31 +02:00
Daniel Marjamäki
ccfd18b96d
Simplify Typedef: Fixed typedef simplification in expanded tokens
2021-08-29 19:14:53 +02:00
Daniel Marjamäki
19fea629c6
Fix FP in checkCompareValueOutOfTypeRange when sign is unknown
2021-08-29 16:03:56 +02:00
Paul Fultz II
92eb59981d
Fix 10435: False positive: containerOutOfBounds ( #3426 )
2021-08-29 15:40:10 +02:00
Paul Fultz II
2ee880752f
Fix 10410: FP nullPointerRedundantCheck on if (a || b ) followed by if ( b ) ( #3427 )
2021-08-29 15:39:41 +02:00
Daniel Marjamäki
06249c08f3
argumentSize: Clarify error message
2021-08-29 15:38:58 +02:00
Daniel Marjamäki
0d31486264
Fixed #10403 (Wrong AST for destructor call)
2021-08-28 22:11:30 +02:00
Paul Fultz II
c0765c451d
Fix 10139: AST broken; std::enable_if_t<> ( #3424 )
2021-08-28 09:28:56 +02:00
Paul Fultz II
4566e0e439
Fix 10148: False positive: knownConditionTrueFalse in for loop due to &= ( #3425 )
2021-08-28 09:28:29 +02:00
Daniel Marjamäki
6541efdb9a
fix selfcheck warning
2021-08-27 22:33:03 +02:00
Daniel Marjamäki
a55b0c332a
Fixed #10095 (False positive: unreadVariable)
2021-08-27 17:37:42 +02:00
Paul Fultz II
740becbddf
Fix 10348: FP knownConditionTrueFalse with condition variable in do ... while loop ( #3422 )
2021-08-27 05:46:57 +02:00
Paul Fultz II
712ff1c073
Fix 10436: hang: valueFlowSubFunction 'ispunct(c)..' ( #3423 )
2021-08-27 05:46:33 +02:00
chrchr-github
d9b6940070
Cleanup: unnecessary includes, fix include order, fix unreferenced va… ( #3418 )
2021-08-26 19:36:31 +02:00
Daniel Marjamäki
f31fbba54a
Token::typeDecl: Fix endless recursion for code:
...
void f()
{
auto val = val;
}
I did not manage to pinpoint a good location to put a unit test. However this will be tested when daca@home runs the package gcc-avr.
2021-08-26 19:03:35 +02:00
Paul Fultz II
1cd9d0479d
Fix 10433: assertion failure in ValueFlow (Interval::fromValues) ( #3419 )
2021-08-26 07:46:40 +02:00
Paul Fultz II
8aa37218c2
Fix 10400: FP nullPointer - for loop condition ( #3417 )
2021-08-25 20:33:41 +02:00
Daniel Marjamäki
11916171fe
Fix crash in programmemory, crash found in daca@home package system-root
2021-08-25 06:56:19 +02:00
Paul Fultz II
f7ddd7a35d
Fix 10430: FP knownConditionTrueFalse with bool from unsigned char ( #3416 )
2021-08-25 04:51:54 +02:00
Paul Fultz II
8ddc5764f8
Fix 10425: False positive: returnDanglingLifetime when taking address of captured variable ( #3415 )
2021-08-25 04:06:03 +02:00
Daniel Marjamäki
37ef29889b
Fix 10424: ExpressionAnalyzer assertion failure in librevisa
2021-08-24 16:06:51 +02:00
Paul Fultz II
524db1c756
Fix 10420: assertion error when analysing juce ( #3413 )
2021-08-23 11:12:42 +02:00
Paul Fultz II
865163b2ba
Add library configurations for free functions like std::size, std::empty, etc ( #3410 )
2021-08-23 09:03:48 +02:00
Daniel Marjamäki
165d48c846
fix gcc compiler warnings
2021-08-22 18:06:54 +02:00
Daniel Marjamäki
db57efa486
CheckBufferOverrun: Reimplement CheckBufferOverrun::argumentSize check
2021-08-22 16:37:41 +02:00
chrchr-github
ee4d90b4fa
Refactor: fix member shadowing, return by const ref ( #3407 )
2021-08-21 22:00:45 +02:00
Paul Fultz II
a0c37ceba2
Fix FP: Set correct bounds for interval ( #3411 )
2021-08-21 21:17:05 +02:00
Paul Fultz II
d30f42e0da
Fix FP when calling a function in a condition ( #3412 )
2021-08-21 18:52:11 +02:00
Daniel Marjamäki
ca50dea97d
Fix in Tokenizer::simplifyUsing for non-scopes
2021-08-21 10:10:40 +02:00
Daniel Marjamäki
d73ab0ad96
Tokenizer::simplifyUsing; Fixed bug when enum class is used
2021-08-20 16:08:01 +02:00
Paul Fultz II
e62cdbb664
Deduce symbolic values from conditions ( #3406 )
2021-08-19 22:01:55 +02:00
Paul Fultz II
e0de48bb1d
Fix 7524: ValueFlow: false path for 'x<3' ( #3393 )
2021-08-16 09:19:07 +02:00
Daniel Marjamäki
6a565f9e2f
cleanup unused function
2021-08-15 11:01:14 +02:00
Paul Fultz II
be978b35cf
Add more ValueFlow info in the xml dumps ( #3402 )
2021-08-15 08:02:31 +02:00
Daniel Marjamäki
83270a6c52
Fixed #10376 (Cppcheck does not add some function arguments to the dump file)
2021-08-15 07:48:01 +02:00
Paul Fultz II
f81ddd2daa
Fix 10408: FP nullPointer on 'return x.release()' ( #3404 )
2021-08-15 07:43:50 +02:00
Paul Fultz II
422e411b6c
Fix 9444: Syntax error on valid C++14 code ( #3403 )
2021-08-15 07:43:02 +02:00
Paul Fultz II
6d65f86871
Fix 9245: Synax error on valid C++14 code: AST broken, binary operator '=' doesn't have two operands. ( #3400 )
2021-08-14 22:50:58 +02:00
Paul Fultz II
c92dab1329
Fix 10406: FP danglingLifetime with pointer-to-pointer ( #3401 )
2021-08-14 21:37:17 +02:00
Paul Fultz II
818fd248e1
Simplify template keyword bracket ( #3399 )
2021-08-14 21:16:27 +02:00
Paul Fultz II
fdaeaacc40
Symboldatabase: Improve valuetypes for containers, iterators, and smart pointers ( #3398 )
2021-08-14 19:00:58 +02:00
Paul Fultz II
f946bbc249
Only add exprids to expression and not variable declarations ( #3397 )
2021-08-14 06:49:12 +02:00
Paul Fultz II
b9ac48c90a
Fix 10409: FP 'Condition 's.size()<3' is always false' ( #3396 )
2021-08-14 06:48:38 +02:00
Paul Fultz II
2a3657154b
Dont require __main__ for an addon ( #3363 )
2021-08-12 20:17:51 +02:00
Paul Fultz II
69eaa9dfd9
Refactor: ConditionHandler cleanup ( #3394 )
2021-08-11 08:37:37 +02:00
chrchr-github
e626e3065d
Fix MSVC warning: member shadowing ( #3392 )
2021-08-10 22:34:13 +02:00
Daniel Marjamäki
e95395e5f0
Fixed #10397 (FP constParameter - implementing an interface)
2021-08-10 15:37:59 +02:00
Daniel Marjamäki
c2305b1da7
Fixed #10396 (FP missingReturn on void operator=())
2021-08-10 09:55:16 +02:00
Daniel Marjamäki
d0b6079a83
Fixed #10372 (Confusing message for compareValueOutOfTypeRangeError)
2021-08-10 09:38:28 +02:00
Daniel Marjamäki
0093452bed
SymbolDatabase; Better handling of namespace that is defined in several scopes
2021-08-10 07:00:11 +02:00
Paul Fultz II
0f897acecd
Fix FP in solveExpr when using symbolic values ( #3391 )
2021-08-09 20:41:10 +02:00
Daniel Marjamäki
d82df7cc55
Fix self-check warning, condition is always true
2021-08-09 13:17:48 +02:00
Daniel Marjamäki
0cb6603055
SymbolDatabase; Use range based for loops
2021-08-09 12:43:21 +02:00
Alfi Maulana
aab5b39e2d
feat: add support for .ipp and .ixx extensions ( #3383 )
2021-08-09 10:46:56 +02:00
Daniel Marjamäki
94e8a69a9b
Fix self-check warning
2021-08-09 09:55:24 +02:00
Paul Fultz II
a218ea3b23
Fix 10404: FP knownConditionTrueFalse after subtraction ( #3390 )
2021-08-09 07:45:41 +02:00
Daniel Marjamäki
5f81b03df1
valueflow; Remove unused function, fixing gcc warning
2021-08-08 21:25:47 +02:00
Daniel Marjamäki
fa398a6ba1
valueflow: remove not needed INDENT-OFF and INDENT-ON
2021-08-08 21:22:42 +02:00
Paul Fultz II
7f358b2bed
Format with uncrustify ( #3388 )
2021-08-07 20:51:18 +02:00
Daniel Marjamäki
b729c4a126
ctu: fixes for xml output
2021-08-06 07:57:18 +02:00
Daniel Marjamäki
27a4df06d2
Revert "SymbolDatabase; First fix to handle when a namespace have many scopes"
...
This reverts commit e6cc7201b0
.
2021-08-04 22:30:39 +02:00
Daniel Marjamäki
ad478914f7
cppcheck build dir; Fix several xml syntax errors in the analyzer info files
2021-08-04 21:39:24 +02:00
Paul Fultz II
735f716603
Fix 10394 and 10395: FP knownConditionTrueFalse: loop variable ( #3381 )
2021-08-04 21:07:55 +02:00
Paul Fultz II
8b8ae55490
Fix 10129: false negative: knownConditionTrueFalse ( #3382 )
...
* Add symbolic matching
* Check for truncated values
* Dont propagate uninit values
* Update errorpath test
* Add test case for 10129
* Add test case for FP
* Remove symbolic values that are the same as the token
* Fix test messages
* Fix cppcheck issue
* Format
2021-08-04 21:07:31 +02:00
Daniel Marjamäki
e6cc7201b0
SymbolDatabase; First fix to handle when a namespace have many scopes
2021-08-04 20:36:43 +02:00
Paul Fultz II
4626f9ed76
Fix FP when returning a pointer to a container ( #3379 )
2021-08-04 08:16:31 +02:00
chrchr-github
28c8b00e5c
Minor: fix MSVC shadow warning ( #3376 )
2021-08-04 08:16:02 +02:00
Paul Fultz II
6736ac7e3a
Revert "Formatted the code [ci skip]" ( #3380 )
...
This reverts commit 7a6d7f7c2d
.
2021-08-03 17:53:30 +02:00
orbitcowboy
7a6d7f7c2d
Formatted the code [ci skip]
2021-08-03 06:33:54 +02:00
Paul Fultz II
08041e3a0b
Refactor: Assert an expression has an id and fix assertion failures ( #3377 )
...
* Fix 10390: FP: knownConditionTrueFalse
* Assert expression has an ID
* Fix assertion errors
* Format
2021-08-03 06:31:52 +02:00
Paul Fultz II
7be9b217e6
Fix 7843 and 7844: ValueFlow for abs ( #3373 )
...
* Refactor: Use valueFlowForward to forward values in condition expression
* Formattting
* Make known when using bools as well
* Set abs function as always positive
* Add test
* Add valueFlowSymbolicAbs
* Set impossible values
* Fix test case
* Fix error messages
* Merge
2021-08-03 06:31:28 +02:00
Paul Fultz II
3d19b33c3e
Fix 9948 and 10234: false negative: knownConditionTrueFalse and stlOutOfBounds ( #3372 )
2021-08-02 10:51:34 +02:00
Paul Fultz II
61ceff39f5
Fix 10390: FP: knownConditionTrueFalse ( #3374 )
2021-08-02 10:49:39 +02:00
Daniel Marjamäki
0f0d042ee2
Refactoring; Use range for in SymbolDatabase
2021-08-01 21:51:37 +02:00
Daniel Marjamäki
1ec7397c21
astyle formatting
...
[ci skip]
2021-08-01 14:05:30 +02:00
Robert Reif
94dc6c2c3f
fix #10332 (cppcheck crashes) ( #3371 )
2021-08-01 10:31:36 +02:00
Paul Fultz II
2f6a6e4b45
Refactor: Use valueFlowForward to forward values in condition expression ( #3369 )
2021-08-01 10:13:14 +02:00
Paul Fultz II
7d9fdf582b
Fix 10121: False positive: Condition 'ab->a!=123' is always false when modifying an alias ( #3293 )
2021-08-01 10:10:11 +02:00
Paul Fultz II
6767b57d4c
Fix FP for symbolic values when the expression is not const ( #3370 )
2021-07-31 14:19:37 +02:00
Paul Fultz II
3a7ba3cd29
Add symbolic values to ValueFlow ( #3367 )
2021-07-30 21:29:35 +02:00
Paul Fultz II
6a81b4c17c
Fix 10264: FP invalidContainer when address of container is passed inside struct ( #3368 )
2021-07-30 15:52:00 +02:00
Paul Fultz II
737b6199ba
Refactor: Allow parse to return multiple values for a condition ( #3361 )
2021-07-26 22:23:19 +02:00
Paul Fultz II
c34691ff56
Fix 10354: FP knownConditionTrueFalse after bitwise and/xor ( #3360 )
2021-07-26 22:22:50 +02:00
Paul Fultz II
0d3afbb954
Evaluate casts in programmemory ( #3359 )
2021-07-26 22:22:23 +02:00
Paul Fultz II
14802b932e
Fix 10362: ValueFlow: global variable might be modified by function call ( #3358 )
2021-07-26 22:21:56 +02:00
orbitcowboy
c14bb9cd2e
Running astyle [ci skip]
2021-07-26 16:32:00 +02:00
Paul Fultz II
84ea0a2295
Refactor: Remove extra analysis of container sizes in conditions ( #3357 )
2021-07-25 18:14:51 +02:00
Paul Fultz II
5be3f700bb
Fix 10373: ValueFlow: container in struct assumed empty ( #3355 )
2021-07-25 18:13:55 +02:00
Paul Fultz II
8e416a7255
Fix issue 10379: FP knownConditionTrueFalse with mod operator ( #3354 )
2021-07-25 18:13:14 +02:00
Paul Fultz II
f9516cf1c6
Fix issue 10378: FP derefInvalidIteratorRedundantCheck ( #3353 )
2021-07-24 22:44:18 +02:00
Georgiy Komarov
48031ffb3b
lib: Fix clang -Wrange-loop-construct warning ( #3347 )
2021-07-22 18:53:44 +02:00
Daniel Marjamäki
74ab8f1a48
misra; implemented rule 20.8
2021-07-22 08:46:28 +02:00
Paul Fultz II
00eb71fd49
Remove constexpr -> const simplification ( #3346 )
2021-07-22 07:22:26 +02:00
Daniel Marjamäki
b1547a387e
astyle formatting
...
[ci skip]
2021-07-21 20:13:38 +02:00
Paul Fultz II
41c94b656a
Fix FP const pointer with class variable and add more tests ( #3345 )
2021-07-21 07:36:13 +02:00
Paul Fultz II
8efe1d4ab4
Find reference to dangling unique ptr ( #3344 )
2021-07-20 21:30:27 +02:00
Daniel Marjamäki
524e4b8c96
CI; Fix self check warning, pointer can be const
2021-07-20 12:21:01 +02:00
Daniel Marjamäki
dd34d1c123
CI; Fix Cppcheck self-check, pointer can be const
2021-07-20 11:21:47 +02:00
Daniel Marjamäki
fb5ab5e439
constPointer; Improved checking dereferenced pointer is used in calculation/comparison
2021-07-20 10:38:38 +02:00
Daniel Marjamäki
4d23c02320
constPointer; Improved checking when pointer is not dereferenced
2021-07-20 10:28:35 +02:00
Daniel Marjamäki
d1fe34e167
misra; implement rule 8.10
2021-07-18 21:18:07 +02:00
Daniel Marjamäki
f6efd8c6be
CI; Fix self check false positive
2021-07-18 20:00:20 +02:00
Daniel Marjamäki
ae79b4759d
CI; Fix self check false positives
2021-07-18 19:31:19 +02:00
Daniel Marjamäki
9362c1fc6c
missing return; write inconclusive error if function ends with unknown function-like macro
2021-07-18 16:00:42 +02:00
Daniel Marjamäki
02682ab17d
missing return; Fixed FP when function ends with assert(0)
2021-07-18 14:54:25 +02:00
Daniel Marjamäki
eb9a251a4c
const variables/parameters; Improved check to handle pointers also (misra 8.13)
2021-07-18 10:59:52 +02:00
orbitcowboy
1be5bb8bbc
Running astyle [ci skip]
2021-07-18 10:01:22 +02:00
Paul Fultz II
0b079937e0
Fix 10364: Performance regression ( #3340 )
2021-07-18 07:48:21 +02:00
Paul Fultz II
59a1c1a9d8
Refactor: Remove variable analyzer ( #3339 )
2021-07-18 07:46:31 +02:00
orbitcowboy
3f1e937ea1
Running astyle [ci skip]
2021-07-17 08:19:04 +02:00
chrchr-github
8cd8b9c64e
Fix MSVC build and some warnings ( #3334 )
2021-07-16 21:55:12 +02:00
Daniel Marjamäki
797de4ef92
Fixed #10363 (FP: compareValueOutOfTypeRangeError)
2021-07-16 19:08:08 +02:00
Pavel Šimovec
c71e2da5a8
Remove a false positive - main function has no return value ( #3335 )
2021-07-16 18:50:16 +02:00
Paul Fultz II
942202aede
Evaluate container sizes in forward analysis ( #3338 )
2021-07-16 18:49:07 +02:00
Paul Fultz II
f5fac96670
Add include directives to 'define' tokenlist ( #3337 )
2021-07-16 18:47:35 +02:00
Daniel Marjamäki
cbb07b6247
misra; implement rule 14.3
2021-07-15 09:43:38 +02:00
Daniel Marjamäki
24c17916af
missingReturn; ensure Function::returnsVoid returns true when there is unknown macro 'void STDCALL foo() {}'
2021-07-12 20:29:20 +02:00
Daniel Marjamäki
e4ecfd7be8
missingReturn; Fixed false positive when if condition is always true
2021-07-12 17:53:32 +02:00
Daniel Marjamäki
a336c07663
missing return; False positive when goto jumps back
2021-07-12 15:31:21 +02:00
Daniel Marjamäki
9fb33e6a3c
Try to solve self check warning to make CI happy
2021-07-11 11:37:41 +02:00
Daniel Marjamäki
d9dacc97e4
virtual call in constructor; warn when function is explicitly virtual
2021-07-11 11:03:31 +02:00
Daniel Marjamäki
9841e0ed96
new check; file can not be opened for read and write access at the same time on different streams (misra rule 22.3)
2021-07-10 13:59:47 +02:00
Daniel Marjamäki
a8fb0309fd
missingReturn; Improved handling of noreturn function
2021-07-10 08:59:01 +02:00
Daniel Marjamäki
53955b48d2
missingReturn; Fixed false negative for goto-label
2021-07-10 08:49:48 +02:00
Daniel Marjamäki
c6f7a78ebb
missingReturn; Fixed false positives
2021-07-10 08:37:10 +02:00
Paul Fultz II
9fc5b9472d
Fix 10353: FP knownConditionTrueFalse with conditional assignment ( #3333 )
2021-07-10 07:35:16 +02:00
orbitcowboy
0d96772304
Running astyle [ci skip]
2021-07-09 16:32:19 +02:00
Daniel Marjamäki
86f1acc223
overlapping data; use the size value given by size-arg
2021-07-09 13:43:29 +02:00
Daniel Marjamäki
ce58748690
library: add attribute strlen-arg for <not-overlapping-data>
2021-07-09 13:25:01 +02:00
orbitcowboy
1c60dc090a
Formatted the code [ci skip
2021-07-09 09:47:15 +02:00
Daniel Marjamäki
db58952a33
Addons CTU; pass all filenames for whole program analysis in file instead of through command line
2021-07-09 08:33:07 +02:00
Paul Fultz II
2300a773e1
Fix 10336: AST cyclic dependency on valid C++ code ( #3331 )
2021-07-09 07:22:24 +02:00
orbitcowboy
7e2ba803f4
Running astyle [ci skip]
2021-07-08 22:18:58 +02:00
Paul Fultz II
8dc1fa7a59
Add colors to CLI reporting ( #3304 )
2021-07-08 21:21:35 +02:00
Paul Fultz II
7e70a91613
Improve AST cyclic detection performance ( #3330 )
2021-07-08 21:13:51 +02:00
Daniel Marjamäki
56924643be
Fixed #10347 (ValueFlow: No known value set for sizeof(a[0]))
2021-07-08 18:18:44 +02:00
Daniel Marjamäki
140aa6afb4
Preprocessor; do not write macro usage in dump output if it is empty
2021-07-08 16:53:25 +02:00
Daniel Marjamäki
447bea5c18
Preprocessor; write macrousage in dump output
2021-07-08 14:36:28 +02:00
Daniel Marjamäki
7cb66d56f3
missingReturn; fixed false positive with trailing return type
2021-07-08 13:50:26 +02:00
Daniel Marjamäki
ef0af26d9f
missingReturn; Fixed FP when function is declared in macro
2021-07-08 13:14:11 +02:00
Daniel Marjamäki
13d55c7060
misra; implement rule 2.3
2021-07-07 15:16:53 +02:00
Daniel Marjamäki
00a9671f46
misra: implement 8.1
2021-07-07 13:34:55 +02:00
Daniel Marjamäki
9172f2ab3b
addons; add CTU infrastructure
2021-07-07 10:58:13 +02:00
Paul Fultz II
5825a35566
Check for cycles in AST when adding nodes to prevent hangs from cyclic ASTs ( #3329 )
2021-07-07 08:21:35 +02:00
Paul Fultz II
3b9c399f72
Fix 10338: Hang/Crash in valueflow ( #3328 )
2021-07-07 08:20:32 +02:00
Daniel Marjamäki
f3365a874f
Clarify Settings::buildDir
2021-07-06 12:18:03 +02:00
Maksim Derbasov
6b8d0be431
New check: [perf] Copy elision optimization can't be applied for `return std::move(local)` ( #3281 )
2021-07-06 08:07:46 +02:00
Daniel Marjamäki
6234b5438e
New check: Writing overlapping data, detect undefined behavior
2021-07-05 22:07:41 +02:00
yyny
3e6681e2b3
Fix assertion failure in errorlogger.cpp ( #3318 )
2021-07-05 08:08:15 +02:00
Daniel Marjamäki
6cb8f87798
missing return; fixed false positive for 'return {};'
2021-07-04 19:59:22 +02:00
Daniel Marjamäki
036c71d967
Fixed #5462 (non-void function does not return a value)
2021-07-04 11:27:57 +02:00
Daniel Marjamäki
803eea912c
Set debug version
2021-07-04 11:19:08 +02:00
Daniel Marjamäki
3e3e9d8c50
2.5; Update versions
2021-07-04 08:40:41 +02:00
Daniel Marjamäki
c489626167
updated copyright year
2021-07-04 08:09:11 +02:00
Daniel Marjamäki
0bb334c102
astyle formatting
2021-07-03 09:12:51 +02:00
Paul Fultz II
fb9d659e25
Fix 10326: Regression: ValueFlow; Wrong Uninit value after do while ( #3312 )
2021-07-03 09:12:26 +02:00
Armin Müller
fc90598077
Typos found by running "codespell" ( #3324 )
2021-07-02 17:41:51 +02:00
Robert Reif
68898e2be0
fix #10335 (Type alias remains unknown with using) ( #3323 )
...
Co-authored-by: Robert Reif <reif@FX6840>
2021-07-02 06:19:26 +02:00
Daniel Marjamäki
1a5449cbeb
Fixed #10327 (ValueFlow; Wrong Uninit value in called function)
2021-07-01 22:08:00 +02:00
Daniel Marjamäki
e1cff1d1ef
Fixed #10334 (AST: hang with c++ initializer and emplace_back)
2021-06-30 21:40:45 +02:00
Daniel Marjamäki
1783fd1bba
duplicateBreak; Allow extra return that clarifies for tool(s) that function does not continue
2021-06-29 11:17:12 +02:00
Georgiy Komarov
b89f5fbeff
misra: Fix 8.2 false positives ( #3309 )
...
* misra: Fix 8.2 false positives
Fix false positives in rule 8.2 that occurred in cases when we have a
function definition and declaration in the same file.
For example, the following code generated false positives before this
commit:
```
void f(uint8_t * const x);
void f(uint8_t * const x)
{ (void)x; }
```
We need to distinguish the declaration and the definition, so the dump
file generation routine was extended to keep token where the definition
of the function. The analysis in the addon also been improved.
Closes Trac issue: https://trac.cppcheck.net/ticket/10219
2021-06-27 10:51:32 +02:00
Daniel Marjamäki
2a2e071a85
Tokenizer::simplifyAttribute; Set function attribute for function pointer
2021-06-26 14:23:39 +02:00
Paul Fultz II
66956ed959
Fix 10323: Wrong known value. x!=0 does not mean that x==1 ( #3308 )
2021-06-26 09:16:45 +02:00
Paul Fultz II
508188df2b
Fix 10297: Regression; ValueFlow known value, sign conversion ( #3307 )
2021-06-26 09:16:04 +02:00
Daniel Marjamäki
9769afe434
knownConditionTrueFalse; avoid several warnings when nonzero expression is compared to see if it is positive or negative
2021-06-25 16:25:25 +02:00
Daniel Marjamäki
769b20b426
ValueFlow: Clarify note when impossible value is assigned ( #10297 )
2021-06-24 17:10:06 +02:00
Paul Fultz II
b13e44fce5
Fix 10309 and 10034: internalAstError with init lists ( #3303 )
2021-06-24 08:25:13 +02:00
Paul Fultz II
6e74fc64b9
Fix 10317: Regression: internalAstError on valid C++ code ( #3302 )
2021-06-24 08:22:03 +02:00
Daniel Marjamäki
2d08564c8a
astyle formatting
2021-06-19 14:47:35 +02:00
Paul Fultz II
dd178c3ad9
Fix 10314: Possible nullPointerRedundantCheck false positive ( #3298 )
2021-06-19 13:59:48 +02:00
Paul Fultz II
5922d5178b
Fix 10321: Two flags confuse null pointer check ( #3300 )
2021-06-19 13:58:57 +02:00
Paul Fultz II
eb7b225fc1
Fix 10119: ValueFlow; object member is not uninitialized. happens when there is static member also. ( #3299 )
2021-06-19 13:58:18 +02:00
Daniel Marjamäki
a7707a457d
astyle formatting
2021-06-14 07:39:41 +02:00
shane
a5664c3e49
allow token iteration in range for
2021-06-14 07:39:01 +02:00
Daniel Marjamäki
03445c01c1
Fix false positives when class might inherit from VCL TObject class
2021-06-13 18:56:04 +02:00
Daniel Marjamäki
7dbca470f7
Suppressions; Fixed problem with cppcheck build dir is used
2021-06-12 18:19:00 +02:00
Daniel Marjamäki
83d406806f
CI; Fixed problems in windows paths
2021-06-12 12:45:31 +02:00
Daniel Marjamäki
4a4808e0ff
ImportProject; Try to use relative paths
2021-06-12 11:10:35 +02:00
Daniel Marjamäki
ed05a5c3b3
astyle formatting
2021-06-12 11:09:15 +02:00
Paul Fultz II
f55a4563f9
Fix 10308: danglingTemporaryLifetime confused by function parameter ( #3292 )
2021-06-09 09:21:03 +02:00
Paul Fultz II
f3a33ea330
Fix 10294: ValueFlow: Wrong <Uninit> value below loop ( #3291 )
2021-06-09 09:20:43 +02:00
Daniel Marjamäki
3c3435dd10
Fix bug in Tokenizer::simplifyVarDecl
2021-06-06 08:13:40 +02:00
orbitcowboy
195d413986
Running astyle [ci skip]
2021-06-05 08:53:15 +02:00
Paul Fultz II
f90b05ea7c
Show lifetime kind in output ( #3285 )
2021-06-04 21:41:30 +02:00
Paul Fultz II
668b88d7c0
Fix 10284: False positive; valueFlowBeforeCondition does not seem to care about increment ( #3287 )
2021-06-04 21:40:57 +02:00
Paul Fultz II
a14922ed85
Fix 10238: FP knownConditionTrueFalse std::string from const char* assumed non-empty ( #3288 )
2021-06-04 17:22:05 +02:00
Paul Fultz II
537fb5bcd9
Fix 10264: FP invalidContainer when address of container is passed inside struct ( #3286 )
2021-06-04 17:20:47 +02:00
Paul Fultz II
b23c5aa742
Fix 10023: ValueFlow; Wrong result of post-increment in reverse analysis ( #3289 )
2021-06-04 17:20:21 +02:00
Paul Fultz II
486e440c4a
Fix 10298: ValueFlow: Wrong known value, 'x == -1' implicit unsigned cast for rhs ( #3277 )
2021-06-04 17:17:41 +02:00
Paul Fultz II
95c872b1ec
Fix todo test for returning a dangling reference ( #3284 )
2021-06-04 17:15:39 +02:00
orbitcowboy
a585834445
Running astyle [ci skip]
2021-06-03 07:35:50 +02:00
Paul Fultz II
3e78e76fe8
Fix issue 10076: ValueFlow: False positive after address of var is taken 'T t = {{{&var}}};' ( #3283 )
2021-06-03 07:31:46 +02:00
Paul Fultz II
548ec10824
Fix issue 10306: FP knownConditionTrueFalse with modulo result converted to bool ( #3282 )
2021-06-03 07:26:36 +02:00
orbitcowboy
14ff646c92
Formatted the code [ci skip]
2021-06-02 16:59:34 +02:00
dummyunit
9652ca39a3
Improve support for labels in simplifyAddBraces step ( #3278 )
...
Previously only a single regular label before a compound statement was
allowed in simplifyAddBracesPair() after if/switch/do/while/for.
This patch adds support for:
* case-labels;
* labels before a single statement;
* labels before try/catch blocks;
* multiple consecutive labels.
Additionally the code for skipping a case label was extracted into a
separate function from simplifyLabelsCaseDefault() and reused in
simplifyAddBracesPair().
2021-06-02 07:00:37 +02:00
Maksim Derbasov
f64011b669
Moving error reporting functions from header to cpp ( #3279 )
2021-06-02 07:00:10 +02:00
Maksim Derbasov
06c4542ac2
New check for rethrow without current handled exception ( #3270 )
2021-05-31 10:39:24 +02:00
Paul Fultz II
5f0fe1dfe7
Fix another FP with range for macro ( #3276 )
2021-05-26 04:52:55 +02:00
Daniel Marjamäki
a4653a057a
Uninitialized variables; Fixed FP for range for loop
2021-05-25 20:37:22 +02:00
Daniel Marjamäki
7d84b8f1bc
Uninitialized variables; Fix FP when assigning struct members
2021-05-25 16:13:32 +02:00
Daniel Marjamäki
b61eaec5b4
Cppcheck self-check; use Token::simpleMatch
2021-05-24 21:14:54 +02:00
Daniel Marjamäki
4cccc710ef
Uninitialized variables; Fixed FP when bitmask is used on address
2021-05-24 20:55:13 +02:00
Paul Fultz II
0862045ef7
Refactor valueFlowUninit check ( #3275 )
2021-05-24 19:59:22 +02:00
Robert Reif
c7be967769
fix #10295 (false negatives by inconsistent 'void' in argument list (declaration vs definition)) ( #3274 )
...
Co-authored-by: Robert Reif <reif@FX6840>
2021-05-24 19:32:15 +02:00
Daniel Marjamäki
b7803ea6fb
Uninitialized variables; Fixed false positives for reference cast and dereferencing address of uninitialized variable
2021-05-24 17:50:28 +02:00
Daniel Marjamäki
4ad90bf6f1
Uninitialized variables; Fixed FP in inner for loop
2021-05-24 17:02:19 +02:00
Daniel Marjamäki
fa72ec20b2
Uninitialized variables; avoid false positives when passing uninitialized variable to unknown function
2021-05-24 15:54:09 +02:00
Daniel Marjamäki
a2e709a652
Uninitialized variables; Try to remove heuristics for assignment with overloaded <<. That is non-standard behavior for the << operator. Let's see how much FPs we get.
2021-05-24 13:17:50 +02:00
Paul Fultz II
ab50a75d8a
Fix 10289: ValueFlow; Wrong known value 'size_t - uint16_t > 0' ( #3273 )
2021-05-24 08:28:21 +02:00
Daniel Marjamäki
8ad0905e3b
Uninitialized variables; Fixed FP in valueflow-based checking
2021-05-23 18:43:34 +02:00
Daniel Marjamäki
cbbd7f0bd0
Uninitialized variables; Improved handling of function parameter
2021-05-23 14:36:56 +02:00
Daniel Marjamäki
d64aea90fa
astyle formatting
2021-05-23 14:36:45 +02:00
Daniel Marjamäki
8828619855
Fixed #10293 (Uninitialized variables; False positive for array in union)
2021-05-23 12:06:23 +02:00
Daniel Marjamäki
85723f8605
Uninitialized variables; Different heuristic needed for const pointer function parameter
2021-05-23 11:45:47 +02:00
dummyunit
247b2d8c83
Support array types in template simplifier ( #3267 )
2021-05-23 10:40:09 +02:00
Paul Fultz II
47a4144b47
Fix 10288: ValueFlow; False positives because of wrong known value when there is sign cast ( #3268 )
2021-05-23 10:20:29 +02:00
Paul Fultz II
e2d9aaf23b
Fix 10286: false positive: uninitvar ( #3271 )
...
* Fix 10286: false positive: uninitvar
* Remove header
2021-05-23 07:58:19 +02:00
Paul Fultz II
8541e0503e
Fix 10290: false negative: container out of bounds ( #3269 )
2021-05-22 23:33:13 +02:00
Daniel Marjamäki
1df93f5474
Uninitialized variables; create utility function isSizeOfEtc
2021-05-22 19:45:46 +02:00
Daniel Marjamäki
5f6b56ada2
buffer overrun; Fixed false negative for dynamically allocated float buffer
2021-05-22 15:39:20 +02:00
Daniel Marjamäki
0db649c075
Fixed Cppcheck self check warning; redundant check
2021-05-22 15:34:39 +02:00
Daniel Marjamäki
87554bed7a
Redundant pointer op; Fixed false positives when macro is used
2021-05-22 14:18:29 +02:00
Daniel Marjamäki
9a9f14bd8a
Buffer overflow; Fixed FPs when array size is 1
2021-05-22 12:13:39 +02:00
Daniel Marjamäki
1cb48ad418
Uninitialized variables; Fixed false positive in sizeof()
2021-05-22 11:04:42 +02:00
Paul Fultz II
c63aa2f2cc
Fix 10263: FP containerOutOfBounds when container is accessed via pointer ( #3265 )
2021-05-22 08:36:51 +02:00
Maksim Derbasov
f0d1822a83
Better handling functions with try block for throwInNoexceptFunction ( #3264 )
2021-05-22 08:36:28 +02:00
Paul Fultz II
1e3ab460a3
Fix 10254: false positive: arrayIndexOutOfBounds in inline function ( #3266 )
2021-05-22 08:20:09 +02:00
Daniel Marjamäki
68c46e146d
Uninitialized variables; Fixed FP when returning malloc pointer
2021-05-21 17:10:49 +02:00
Daniel Marjamäki
1e6a574cff
Uninitialized variables; Passing address of uninitialized variable to function
2021-05-21 15:27:13 +02:00
Daniel Marjamäki
8adfcc848c
Uninitialized variables; check RHS expression
2021-05-21 14:31:25 +02:00
Paul Fultz II
5409fa8afd
Fix disabled valueFlowUninit tests ( #3262 )
2021-05-21 07:28:34 +02:00
Daniel Marjamäki
4746d4b819
Uninitialized variables; Improved checking of loops
2021-05-20 22:56:14 +02:00
Daniel Marjamäki
8e650e4243
Uninitialized variable; Fixed FP after unconditional scope with conditional initialization
2021-05-20 18:38:59 +02:00
Daniel Marjamäki
f1fff5e904
Fixed #10279 (ValueFlow/TokenList: function pointer dereference and call)
2021-05-20 13:54:17 +02:00
Robert Reif
3af3d7fc06
fix #10281 (Tokenizer; Wrong simplification for 'namespace ef = : 🅰️ 🅱️ :c::d::ef') ( #3263 )
2021-05-20 08:27:07 +02:00
Daniel Marjamäki
ca5fab8219
Uninitialized variables; Fixed false positive in range for loop
2021-05-19 21:12:11 +02:00
Daniel Marjamäki
abe810d718
Uninitialized variables; Fix false positive in switch inside loop
2021-05-19 13:07:04 +02:00
Armin Müller
c70b8793a3
Typos found by running "codespell" ( #3251 )
2021-05-19 11:49:19 +02:00
Daniel Marjamäki
e35c46bcb9
Uninitialized variables; Fixed false positive for overloaded & 'ar & a & b & c'
2021-05-18 21:03:43 +02:00
Daniel Marjamäki
216918756b
Fixed #10276 (FP: (style) Variable '((uint8_t*)(uint16_t)0x1000)[0]' is assigned a value that is never used.)
2021-05-18 20:35:00 +02:00
Daniel Marjamäki
0aebc32ae0
Uninitialized variables; Fixed false positive for 'cin >> x[0]'
2021-05-18 20:13:27 +02:00
Paul Fultz II
4b11bb4ad3
10278: ValueFlow: Wrong known value, sign conversion ( #3260 )
2021-05-18 07:28:45 +02:00
Daniel Marjamäki
84f8b7b50a
Uninitialized variables; Fixed error message, use Token::errorString
2021-05-17 16:51:30 +02:00
Daniel Marjamäki
bde8b4316e
Uninitialized variables; Fixed FP in range based for loop
2021-05-17 13:31:16 +02:00
Daniel Marjamäki
4322311482
Uninitialized variables; Fixed struct member access FP
2021-05-17 11:50:31 +02:00
Daniel Marjamäki
c78a1dbbaf
Fixed self-check warning, shadow variable
2021-05-17 11:35:04 +02:00
Daniel Marjamäki
b115e4a932
Uninitialized variables; Fixed false positive in member assignment
2021-05-17 10:31:02 +02:00
Daniel Marjamäki
16ce0f1dbf
Uninitialized variables; Clarify warnings, bailout for binary & to avoid FPs
2021-05-17 09:22:19 +02:00
Daniel Marjamäki
224492b0b5
Uninitalialized variables; Avoid FP for void cast
2021-05-17 05:59:28 +02:00
Daniel Marjamäki
30ef6db24c
CI; Fixed self check
2021-05-16 23:39:10 +02:00
Daniel Marjamäki
e034fa8a6e
UninitVar: Rewrite CheckUninitVar::isVariableUsage(), use AST primarily
2021-05-16 22:27:04 +02:00
Daniel Marjamäki
2c155a7a78
Uninitialized variables; use AST
2021-05-16 11:58:51 +02:00
Daniel Marjamäki
e73057eb44
Fixed #10275 (ValueFlow: condition 'x>=0 && x < 10')
2021-05-16 10:34:22 +02:00
Daniel Marjamäki
8476900a62
checkuninitvar; refactor code a bit
2021-05-16 08:38:51 +02:00
Daniel Marjamäki
b8314289c6
testbufferoverrun; fixed TODO test cases for pointer arithmetic overflows
2021-05-15 20:32:46 +02:00
Daniel Marjamäki
899b88754f
uninitialized variables; fix false positive in loop
2021-05-15 11:16:47 +02:00
Paul Fultz II
eb96e4980e
Fix issue 10268: ValueFlow; Wrong value in for loop ( #3257 )
2021-05-15 08:39:20 +02:00
Daniel Marjamäki
c67e618627
self check; Fix shadow variable
2021-05-14 23:05:27 +02:00
Daniel Marjamäki
809c70b9c3
uninitialized variables; fix FP in for loop
2021-05-14 21:36:51 +02:00
Daniel Marjamäki
404b82fc21
unused var; fix todo test cases, redundant assignment of array in loop
2021-05-14 19:07:30 +02:00
Daniel Marjamäki
c29997b117
uninitvar: fixed TODO assertion
2021-05-14 11:54:18 +02:00
Daniel Marjamäki
45eb9f82a0
Fix CI; Cppcheck find some more unusedAllocatedMemory violations in test/cfg/..
2021-05-13 23:08:58 +02:00
Daniel Marjamäki
d549770b5b
updated extracttests.py. fix syntax errors in test cases.
2021-05-13 20:21:02 +02:00
Daniel Marjamäki
7ba9e37296
unhandled char literal; changed severity to 'portability'. hopefully there will not be warnings for standard character literals.
2021-05-13 13:51:53 +02:00
Daniel Marjamäki
fca7a270bf
daca@home; show unhandled chars diagnostics
2021-05-13 13:44:32 +02:00
Daniel Marjamäki
22ab9ccd7f
Fixed #10273 (False negative; Uninitialized variable in for loop)
2021-05-11 20:35:15 +02:00
Daniel Marjamäki
75311fba0f
Fixed #10218 (FP uninitvar with input from stringstream in for loop)
2021-05-10 19:48:07 +02:00
Daniel Marjamäki
db7be3e91b
Fixed #9810 (Improve check: uninitialized struct member not detected)
2021-05-10 19:24:03 +02:00
Daniel Marjamäki
c37b8ea55c
Fixed #8299 (false negative: uninitialized struct member)
2021-05-10 18:38:44 +02:00
Daniel Marjamäki
271acf8aee
Refactoring; Use isUnaryOp instead of simpleMatch
2021-05-10 18:18:21 +02:00
Daniel Marjamäki
2c24af02c8
Fixed self-check error. Use Token::simpleMatch for simple pattern.
2021-05-09 23:02:35 +02:00
Daniel Marjamäki
2e2d766e2b
Fixed #6766 (Improve check; struct member is assigned value that is never used)
2021-05-09 20:09:10 +02:00
Daniel Marjamäki
3b37c14b3c
Parser; Partial C++20 support, explicit(bool)
2021-05-09 18:47:02 +02:00
Daniel Marjamäki
32b28d568f
Refactoring; Check structured binding in isVariableChanged()
2021-05-08 20:46:46 +02:00
Daniel Marjamäki
895a96f9dd
Tokenizer::findGarbageCode: detect wrong struct declaration
2021-05-08 15:28:21 +02:00
Daniel Marjamäki
a197e94573
Fixed #10266 (False positive; parameter can be const)
2021-05-08 13:40:52 +02:00
Daniel Marjamäki
abb4200316
Fixed #10196 ("Unhandled char constant 'x'" with non-standard escape character)
2021-05-08 12:54:18 +02:00
keinflue
0a84ad874c
Fix case ranges with single quotes and escape sequences ( #3248 )
2021-05-08 11:24:07 +02:00
keinflue
bfa26b5a72
Fix FP leakNoVarFunctionCall with passthrough returns ( #3249 )
2021-05-08 10:26:10 +02:00
Daniel Marjamäki
be95e2bf21
Fixed #10271 (AST; Token::astOperand2() cyclic dependency in static_assert)
2021-05-07 13:19:28 +02:00
keinflue
c9a9b56e0e
Increase max AST depth and throw error if exceeded ( #3250 )
...
Co-authored-by: keinflue <>
2021-05-06 11:43:15 +02:00
Daniel Marjamäki
b8de69489d
Fixed #10079 (AST: switch does not have two operands)
2021-05-04 20:15:57 +02:00
Daniel Marjamäki
2f984b201a
AST; Fix wrong AST for initializer list
2021-05-04 19:02:29 +02:00
Daniel Marjamäki
08184f4681
Fixed #10070 (FP warning: Logical disjunction always evaluates to true)
2021-05-04 13:47:09 +02:00
dummyunit
661ebd3a96
Fix AST for brace initialization after decltype() ( #3245 )
...
Currently sub-expressions like decltype(x){} break AST creation for
subsequent tokens in the whole expression. In some cases this triggers
validation checks in validateAst() and analysis on the file stops.
For example, code like this:
int x = decltype(0){} ? 0 : 1;
currently produces internalAstError.
To fix the issue iscpp11init_impl() was changed to recognize { preceded
by decltype(expr) as a start of C++11 brace initialization expression.
2021-05-03 21:40:49 +02:00
Daniel Marjamäki
82636d4f07
AST: Fixed ast for a: 🅱️ :c..
2021-05-03 20:33:03 +02:00
Daniel Marjamäki
70ab30e3c6
AST; Fixed problem with initializer list and cleanup of compileScope
2021-05-03 20:22:08 +02:00
Daniel Marjamäki
cb8ee825fd
AST; remove special handling of semicolon in if|switch as Tokenizer will simplify the code instead
2021-05-03 10:43:14 +02:00
dummyunit
ac505afe69
Fixed #9729 (AST broken: lambda with noexcept keyword) ( #3243 )
...
The previous fix for the issue (43b58dbc9e
) didn't seem to actually fix
it because it added a check for noexcept without a condition, but when
AST is created noexcept always has a condition due to simplification
from "noexcept" to "noexcept(true)" in Tokenizer::simplifyKeyword().
The issue from the ticket couldn't be reproduced neither on 43b58dbc9e
nor on the previous commit, so it is hard to tell whether the fix was
effective or not.
The issue appeared again after a refactoring of AST code in ac67049661
.
Test added with the original fix was unable to catch that because it
used testAst() helper function which skips most simplification steps.
To fix the issue we now check for noexcept with a condition and add a
proper regression test that:
1. Uses tokenizeAndStringify() to ensure that all simplifications are
performed before AST is created.
2. Parses the code snippet from the ticket, as having "if (cond)" is
crucial to reproducing the original issue (internalAstError).
Also fix AST creation for lambdas that have both constexpr and mutable
keywords.
2021-05-02 21:34:28 +02:00
Daniel Marjamäki
f7d0bf7a59
Refactoring; Reuse simplecpp::characterLiteralToLL
2021-05-02 13:44:37 +02:00
dummyunit
da27159d7c
Fixed #9728 (Support function level try blocks)
2021-05-02 09:05:12 +02:00
Daniel Marjamäki
6f60c6d965
Revert "Refactoring; Reuse function in simplecpp"
...
This reverts commit dbe9eb2a27
.
2021-05-01 19:54:14 +02:00
Daniel Marjamäki
e1dd04c536
Fixed make checkcfg
2021-05-01 19:17:07 +02:00
Daniel Marjamäki
e03ef93ed7
Fix compiler error
2021-05-01 18:57:10 +02:00
Daniel Marjamäki
e6d1b44758
Revert "Remove unnecessary null check ( #3213 )"
...
This reverts commit 6d13975def
.
2021-05-01 18:54:51 +02:00
Ken-Patrick Lehrmann
6d13975def
Remove unnecessary null check ( #3213 )
2021-05-01 18:51:51 +02:00
Daniel Marjamäki
e78612d280
Refactoring; Use TinyXml methods to parse bool/int attribute values
2021-05-01 18:40:20 +02:00
Daniel Marjamäki
dbe9eb2a27
Refactoring; Reuse function in simplecpp
2021-05-01 18:13:40 +02:00
Daniel Marjamäki
a32d6257d5
Fix Cppcheck self-check, extra whitespace in match patterns
2021-05-01 12:15:54 +02:00
Daniel Marjamäki
9b717b8835
Refactoring __attribute__ simplification
2021-05-01 11:39:26 +02:00
Daniel Marjamäki
07c1f28035
astyle formatting
2021-05-01 07:35:03 +02:00
DGarry82
d3035c246f
Attribute lists support ( #3239 )
2021-05-01 07:33:55 +02:00
Paul Fultz II
31e3e4d87b
Fix issue 10086: false positive: (style) constVariable: Variable 'x' can be declared with const ( #3219 )
2021-04-30 17:47:08 +02:00
Daniel Marjamäki
d2d2124238
Revert "Clang import; This experimental feature didn't "take off" much. After a lot of work we are still far fram the goal. I remove it now but don't rule out completely that it could ever be added again."
...
This reverts commit 207361b174
.
2021-04-30 16:47:02 +02:00
Robert Reif
e1e822275d
fix daca2 paraview crash from uninstantiated recursive template ( #3237 )
2021-04-29 11:09:51 +02:00
Ken-Patrick Lehrmann
9aa131a12e
Remove unnecessary null check ( #3215 )
...
Spotted by coverity (as the condition in the `if` part `isArrayVar(tok)`
dereferences tok.
Tok can't be null here, because the condition in the `else if`on line
268 checks that there is a `%var%` following, and
`tok = Token::findmatch(tok->next(), "%var%");` simply gets this `%var%`
token.
2021-04-28 18:05:32 +02:00
keinflue
d2184ac6a8
Fix UB on right-shift. ( #3235 )
2021-04-28 11:57:28 +02:00
Daniel Marjamäki
bd97b8eb8a
SymbolDatabase; Add variables when structured binding is used
2021-04-26 18:21:07 +02:00
Daniel Marjamäki
8aa9e448f5
Parser; Set varid for structured binding variables
2021-04-26 18:04:27 +02:00
Daniel Marjamäki
3a7979171c
Set simplecpp std option
2021-04-26 16:32:44 +02:00
Daniel Marjamäki
b798b99777
Parser; do not remove alignof and alignas in the same way
2021-04-26 11:44:08 +02:00
dummyunit
b18e6f1e10
Fix varId assignment for uses of variables declared in the if condition ( #3231 )
...
Variables declared in the if condition (or in C++17 init-statement) are
visible not only in the if body but also in the else body. But logic in
Tokenizer::setVarIdPass1() handled such variables as if they were
declared in the if body.
As the result they were removed from variablesMap by the time the else
block was parsed and their uses in the else block were either given an
incorrect varId from variables in some outer scope or not given a varId
at all.
This then resulted in false positive unreadVariable errors for variables
declared in the if condition (or init-statement) and used only in the
else block.
Simplification from "else if ..." to "else { if ... }" was moved before
setVarId() to simplify detection for ends of blocks in if-else chains.
2021-04-26 07:38:03 +02:00
Daniel Marjamäki
d6842007a8
Preprocessor; Set proper __cplusplus define value
2021-04-25 21:16:04 +02:00
Daniel Marjamäki
28a7bb63ec
Parser; simplify (break out) init expression from if/switch/range-for
2021-04-25 14:37:27 +02:00
Oliver Stöneberg
dcc90c6dfa
improved compiler warnings about missing attributes ( #3232 )
2021-04-25 12:52:09 +02:00
Daniel Marjamäki
4f43dbf954
Parser; fixed ast and auto type deduction for c++17 braced init lists
2021-04-25 10:38:33 +02:00
Daniel Marjamäki
a41d8b436e
Fix testrunner
2021-04-24 14:07:26 +02:00
Daniel Marjamäki
c9dc92c266
Parser; C++20 for loop with initialization expression
2021-04-24 11:47:51 +02:00
IOBYTE
bd7551411a
fix #10258 (coredump due to (?) template simplification) ( #3228 )
2021-04-22 22:23:01 +02:00
Daniel Marjamäki
26c0945309
Handle c++20 spaceship operator
2021-04-22 19:15:22 +02:00
Daniel Marjamäki
4907c7e3e4
Fix compiler warning, non-static function
2021-04-22 18:40:44 +02:00
dummyunit
229832e72e
Read error locations in the correct order from XML ( #3226 )
...
When ErrorMessage::callStack elements are serialized to XML they are
saved in the reverse order. But when they read back from XML they are
added at the end of the list. Thus the round trip via XML reverses the
order of ErrorMessage::callStack.
From the user point of view it looks like the usage of the
--cppcheck-build-dir option sometimes (when the file wasn't reanalyzed,
but that is hard to spot) results in incorrect location info for some
diagnostic messages.
Moreover, when the first location matches some suppression rule and the
last doesn't match any (or vice versa), usage of --cppcheck-build-dir
results in some diagnostic messages appearing and disappearing seemingly
at random (again, depending on whether the file was reanalyzed or not).
2021-04-22 14:28:33 +02:00
Daniel Marjamäki
207361b174
Clang import; This experimental feature didn't "take off" much. After a lot of work we are still far fram the goal. I remove it now but don't rule out completely that it could ever be added again.
2021-04-21 18:59:48 +02:00
Daniel Marjamäki
b5aaf8d577
Suppress false positive
2021-04-21 14:49:06 +02:00
Daniel Marjamäki
bfb98dbf51
TemplateSimplifier: updated output of uninstantiated c++17 fold expressions
2021-04-21 13:13:11 +02:00
Daniel Marjamäki
35c934c887
Fixed self-check warning
2021-04-20 16:46:05 +02:00
Daniel Marjamäki
04e9c13bc6
TemplateSimplifier; Better handling of c++17 fold expressions and c++20 concepts.
...
c++17 fold expressions are simplified to a __cppcheck_uninstantiated_fold__ if they are not instantiated.
c++20 concepts are skipped/removed by Cppcheck and these will be enforced by the compiler.
2021-04-20 15:40:25 +02:00
Paul Fultz II
db5f00a16a
Fix issue 10214: FP: danglingTempReference doesn't account for reference lifetime extension ( #3220 )
...
* Fix issue 10214: FP: danglingTempReference doesn't account for reference lifetime extension
2021-04-19 14:20:29 +02:00