Daniel Marjamäki
8fb8e06003
SymbolDatabase: Set valuetype for this
2022-11-12 22:23:42 +01:00
Daniel Marjamäki
e45e5f9f15
SymbolDatabase: fix ValueType for '&array[x]'
2022-11-05 21:22:08 +01:00
Daniel Marjamäki
ecb2938e7e
SymbolDatabase: Set correct ValueType when there is array-to-pointer decay
2022-11-05 17:38:31 +01:00
chrchr-github
3273e51fd5
Fix #10412 FN useStlAlgorithm with iterators ( #4157 )
2022-10-16 13:46:26 +02:00
Daniel Marjamäki
2a81388c95
Fixed #11102 (False positive: unreadVariable when union in derived struct is used)
2022-10-11 20:47:07 +02:00
gerboengels
ed06e29f7a
Fix defaulted and deleted functions ( #4540 )
...
* Fix 9392, but for destructors: out-of-line defaulted destructors skipped everything after
Context:
```
struct S {
~S();
};
S::~S() = default;
void g() {
int j;
++j;
}
```
Everything after `S::~S() = default;` was skipped, so the uninitialized variables in g() weren't found.
Out-of-line destructors are useful e.g. when you have a forward declared unique_ptr in the .h,
and `= default` the destructor in the .cpp, so only the cpp needs to know the header for destructing
your unique_ptr (like in the pImpl-idiom)
* Fix unit test, by correctly fixing 10789
Previous commit broke this test, but also provided the tools for a cleaner fix
* Document current behaviour
* Rewrite control flow
* Fix deleted functions, which skipped everything after
`a::b f() = delete` triggered the final else in SymbolDatabase::addNewFunction,
which sets tok to nullptr, effectively skipping to the end of the stream.
* Remove troublesome nullptr, which skips every analysis afterwards
It was introduced in 0746c241
to fix a memory leak.
But setting tok to nullptr, effectively skipping to the end, seems not needed.
Previous commits fixes prevented some cases where you could enter the `else`.
This commit is more of a fall back.
* fixup! Fix deleted functions, which skipped everything after
`a::b f() = delete` triggered the final else in SymbolDatabase::addNewFunction,
which sets tok to nullptr, effectively skipping to the end of the stream.
* fixup! Fix deleted functions, which skipped everything after
`a::b f() = delete` triggered the final else in SymbolDatabase::addNewFunction,
which sets tok to nullptr, effectively skipping to the end of the stream.
* Make it heard when encountering unexpected syntax/tokens
Co-authored-by: Gerbo Engels <gerbo.engels@ortec-finance.com>
2022-10-10 20:17:33 +02:00
Oliver Stöneberg
7ead32f96e
various optimizations ( #4535 )
...
* avoid potentially duplicated `strTolower()` call in `Path::getFilenameExtensionInLowerCase()`
* avoid unnecessary copies
* use `unordered_*` containers for faster lookups
* symboldatabase.cpp: do not perform call in `checkReturns()` until needed
* astutils.cpp: do not perform calls in `isVariableChangedByFunctionCall()` until necessary
* tokenize.cpp: small `hasIfDef()` optimization
* use `unordered_map` for `CheckUnusedFunctions::FunctionUsage::mFunctions` / adjusted test case
2022-10-06 20:12:07 +02:00
Oliver Stöneberg
cff1cd9cda
applied clang-tidy `misc-const-correctness` fixes for POD types, iterators and references ( #4529 )
...
* applied `misc-const-correctness` fixes for POD types and iterators
* applied `misc-const-correctness` fixes for references
2022-10-02 07:12:40 +02:00
Oliver Stöneberg
eeb6db05f1
avoid some unnecessary object creations and copies ( #4493 )
2022-09-29 21:47:17 +02:00
chrchr-github
64f3f85804
Fix #11332 Function::addArguments found argument 'b' with varid 0 wit… ( #4506 )
...
* Fix #11332 Function::addArguments found argument 'b' with varid 0 with lambda parameter
* Fix varid0 warning
2022-09-26 18:21:21 +02:00
Paul Fultz II
fc39a4d1bb
Fix 11171: False positive: missing return statement when std::enable_if_t is used ( #4504 )
...
* Fix 11171: False positive: missing return statement when std::enable_if_t is used
* Format
* Return false
* Workaround bug in cppcheck
2022-09-26 18:20:42 +02:00
Oliver Stöneberg
b3ec225480
iwyu.yml: use `debian:unstable` to always get latest include-what-you-use / cleaned up includes ( #4466 )
...
* iwyu.yml: use debian:unstable to always get latest include-what-you-use
* cleaned up includes based on include-what-you-use
* mitigated include-what-you-use false positives
2022-09-16 07:15:49 +02:00
Oliver Stöneberg
76d1b9f31a
avoid unnecessary copies with `emplace_back()` ( #4450 )
...
* avoid unnecessary copies with `emplace_back()`
* cmdlineparser.cpp: suppress `accessMoved` selfcheck false positives
2022-09-10 11:25:15 +02:00
Oliver Stöneberg
d46ea7ba86
avoid unnecessary copies with `push_back()` and `push_front()` ( #4451 )
2022-09-08 09:21:35 +02:00
Daniel Marjamäki
9306c6f329
dump: Add Function::isAttributeNoreturn info
2022-09-03 12:09:20 +02:00
PKEuS
d81a758850
LCppC backports: Refactorizations/Optimizations ( #4204 )
2022-08-21 17:21:02 +02:00
Oliver Stöneberg
0e1cd8b2ac
do not do C++ processing for C code in `parsedecl()` ( #4304 )
2022-08-21 17:11:22 +02:00
chrchr-github
b04bf7396f
Fix #7515 New check: Not needed c_str() operation ( #4371 )
2022-08-20 20:52:10 +02:00
Oliver Stöneberg
16f598c409
added missing `sstream` includes ( #4381 )
2022-08-19 10:16:23 +02:00
Oliver Stöneberg
5f171b9673
fixed some `modernize-use-emplace` false negatives with `std::stack` / removed `internalStlUsage` check ( #4346 )
2022-08-17 09:50:14 +02:00
Oliver Stöneberg
efaaa58896
fixed some `modernize-use-emplace` false negatives and some `bugprone-assignment-in-if-condition` warnings ( #4311 )
2022-07-28 22:53:59 +02:00
Oliver Stöneberg
b2f15fdbb1
reduced padding in some classes/structs ( #4295 )
2022-07-24 10:17:11 +02:00
Daniel Marjamäki
894975f845
SymbolDatabase: Add Function::access info for methods
2022-07-22 10:37:00 +02:00
Daniel Marjamäki
a7afaba21d
SymbolDatabase: add BaseInfo::nameTok to dumpfile
2022-07-21 15:57:41 +02:00
Daniel Marjamäki
ebe8dc2cf3
SymbolDatabase: Extended dumpfiles. Scope: derivedFrom types. Function: overridden function.
2022-07-20 07:24:27 +02:00
chrchr-github
457a0cff87
Fix #11016 FP unusedStructMember when used through iterator (regression) ( #4289 )
...
* Format
* Fix #11016 FP unusedStructMember when used through iterator (regression)
* Format
* Fix test
* Format
* Nullptr check
2022-07-19 20:42:54 +02:00
chrchr-github
53cd3dc665
Fix #10661 FP extern function reported as unused ( #4279 )
2022-07-14 20:59:58 +02:00
chrchr-github
f5c4a21eae
Fix #10704 FN redundantCopyLocalConst ( #4115 )
2022-07-10 11:33:24 +02:00
Oliver Stöneberg
c9c1f83a69
use `emptyString` more consistently ( #4034 )
2022-07-10 10:57:29 +02:00
chrchr-github
bd92e7411c
Fix #11163 Hang on smart pointer with auto type deduction ( #4250 )
...
* Fix #11163 Hang on smart pointer with auto type deduction
* Format
* Format
2022-07-08 12:37:53 +02:00
Paul Fultz II
46fcdca5ee
Add debug_valuetype intrinsic ( #4210 )
2022-06-15 21:25:55 +02:00
chrchr-github
829ca9ab7f
Fix #10935 FP: compareBoolExpressionWithInt with enum and template parameter ( #4193 )
2022-06-10 20:40:37 +02:00
PKEuS
1275b5275e
LCppC backport: Various optimizations ( #4182 )
...
* Optimization: Use Token::eIncDecOp instead of expensive Token::Match calls
Merged from LCppC.
* Small Optimizations: - Moved a std::set that is only need during initialization of SymbolDatabase to function scope - Use std::vector instead of std::list
Merged from LCppC.
* Optimization: Refactorized various Token::Match calls and surrounding conditions
Merged from LCppC.
* Refactorization: Cleanup usage of std::multimap
Merged from LCppC.
2022-06-08 16:58:57 +02:00
chrchr-github
e6f2929fac
Fix #11085 FN constVariable with range-based for ( #4118 )
2022-06-03 19:24:59 +02:00
chrchr-github
7fbb9c7c13
Fix #10980 FN constVariable with range-based for loop ( #4144 )
...
* Fix #10980 FN constVariable with range-based for loop
* Format
* nullptr check
* Restrict scopes
* Add const
* Undo
* Add more const
2022-05-29 17:06:33 +02:00
chrchr-github
2b723eafcb
Fix ValueType for references in range-based for loop ( #4116 )
...
* Fix ValueType for references in range-based for loop
* Format
2022-05-20 08:48:01 +02:00
Paul Fultz II
fbba72ab5a
Fix 11057: FP danglingTemporaryLifetime with reference member ( #4103 )
...
* Fix 11057: FP danglingTemporaryLifetime with reference member
* Add test
* Format
* Use ast for number of arguments
* Get number of arguments using ast
* Skip aggregate constructor when there are too many arguments
* Format
2022-05-13 06:51:07 +02:00
chrchr-github
a70d11adb6
Fix #11052 inline static global struct declaration interferes with checks ( #4098 )
2022-05-10 20:43:11 +02:00
Oliver Stöneberg
c71033548f
fixed some clang-tidy warnings ( #3080 )
2022-05-08 20:42:06 +02:00
Paul Fultz II
aafd1e10be
Fix 11006: FP uninitvar with unknown constant ( #4056 )
2022-04-28 10:48:37 +02:00
chrchr-github
7cedf3e0e5
Partial fix for #10983 False positive: returnTempReference with trailing return type ( #4055 )
2022-04-27 20:11:32 +02:00
chrchr-github
6b5df68677
Fix #11001 syntaxError for valid C code sizeof(enum ...) ( #4045 )
2022-04-26 07:22:53 +02:00
chrchr-github
7721cd14b6
Fix #10466 FP constVariable with pointer typedef ( #4018 )
...
* Fix #10466 FP constVariable with pointer typedef
* Fix flag check
* Use isStatic()
2022-04-13 21:56:45 +02:00
chrchr-github
938517b80a
Fix #10265 FP unused private method ( #4015 )
2022-04-13 14:49:28 +02:00
chrchr-github
38bc0ad4c3
Fix regression: wrong member variable ( #3987 )
2022-04-08 08:23:10 +02:00
Paul Fultz II
09c8cfb2ae
Fix 6624: false negative: std::vector out of bounds access not detected ( #3980 )
...
* Fix 6624: false negative: std::vector out of bounds access not detected
* Format
* Add test for auto
* Fix tests
* Format
2022-04-07 06:47:15 +02:00
chrchr-github
4c375e7224
Fix #9815 FP redundantInitialization with lambda / #10864 debug: valueFlowConditionExpressions bailout ( #3970 )
...
* Fix #9815 FP redundantInitialization with lambda
* Fix #10864 debug: valueFlowConditionExpressions bailout
* Format
2022-04-05 23:19:17 +02:00
chrchr-github
b79885c6af
Fix #10174 debug: Executable scope 'x' with unknown function ( #3972 )
...
* Fix #10174 debug: Executable scope 'x' with unknown function
* Format
2022-04-05 07:34:06 +02:00
Paul Fultz II
39265f8ce0
Fix 10931: Assert failure in setSymbolic() ( #3967 )
...
* Fix 10931: Assert failure in setSymbolic()
* Format
2022-04-03 20:04:18 +02:00
chrchr-github
a9f29fbc09
Fix #10307 FP functionStatic with class template and east-const / #10471 FP constParameter with std::array and east-const ( #3963 )
2022-04-01 23:26:44 +02:00
Paul Fultz II
32ded1602b
Fix warnings in switch statements on clang ( #3943 )
2022-03-30 19:30:02 +02:00
chrchr-github
81bcbfa7fe
Fix #10920 FP missingOverride with friend ( #3955 )
2022-03-28 22:44:04 +02:00
Paul Fultz II
4b4037540a
valueFlowUninit: Handle arrays and pod types ( #3917 )
...
* valueFlowUninit: Handle arrays and pod types
* Format
* Catch another array case
2022-03-24 06:35:44 +01:00
chrchr-github
200b098471
Fix #10516 FP for unused private function if address of function is taken ( #3901 )
2022-03-14 19:15:48 +01:00
chrchr-github
6376bac5bb
Fix #10451 syntaxError with typedef and lambda ( #3900 )
...
* Fix #10451 syntaxError with typedef and lambda
* Don't insert union into template argument list, add test
* Format
* Revert "Format"
This reverts commit 8c52d49c8b
.
* Format
2022-03-14 17:59:29 +01:00
chrchr-github
190506db40
Fix #10737 Regression: unusedStructMember ( #3894 )
...
* Fix #10737 Regression: unusedStructMember
* Add test for #9161
* simpleMatch
2022-03-13 06:27:17 +01:00
Oliver Stöneberg
757287b13c
removed unnecessary varid0 inline suppressions ( #3893 )
2022-03-12 18:02:40 +01:00
chrchr-github
4c85ac0d7b
Fix #10852 FP unused struct member (inner struct in C code) ( #3890 )
...
* Fix #10852 FP unused struct member (inner struct in C code)
* Redundant findType() call, add test
2022-03-12 06:16:29 +01:00
chrchr-github
ffd9f9a93f
Fix FP missingOverride with unnamed parameters ( #3887 )
2022-03-11 21:44:13 +01:00
chrchr-github
2616046461
Partial fix for #10848 FP: unusedStructMember ( #3880 )
2022-03-09 20:25:58 +01:00
chrchr-github
557263acde
Partial fix for #10848 FP: unusedStructMember (II) ( #3881 )
...
* Preliminary
* Fix member search, add tests
2022-03-09 18:22:30 +01:00
Oliver Stöneberg
4a63af02ed
enabled functionConst and functionStatic in selfcheck ( #3862 )
...
* fixed functionConst findings and enabled it in selfcheck
* fixed functionStatic findings and enabled it in selfcheck
* .travis_suppressions: adjusted comment
* testimportproject.cpp: added missing asserts
2022-03-02 07:46:47 +01:00
chrchr-github
05a6d09c5f
Fix #10360 FP uninitMemberVar from copy constructor [inconclusive] ( #3748 )
2022-02-27 19:15:19 +01:00
Oliver Stöneberg
b6876d22e6
use inline suppressions for varid0 in selfcheck ( #3842 )
2022-02-21 18:35:02 +01:00
chrchr-github
9582032906
Fix #8485 FP uninitMemberVar - ctor calls function with smart pointer argument ( #3835 )
2022-02-16 07:02:26 +01:00
chrchr-github
edc5106237
Fix #9092 FN missingOverride - subclass in namespace ( #3793 )
2022-02-12 08:19:07 +01:00
Oliver Stöneberg
6e57cc4323
small utils.h cleanup ( #3821 )
2022-02-11 19:44:08 +01:00
chrchr-github
24e9859158
Fix #10357 FP stlcstrParam due to incorrect overload resolution ( #3813 )
...
* Fix #10357 FP stlcstrParam due to incorrect overload resolution
* Variable shadowing
2022-02-10 11:17:06 +01:00
Paul Fultz II
a639c59780
Fix 10787: False positive: knownConditionTrueFalse with a conditional exit ( #3804 )
2022-02-06 20:13:44 +01:00
Daniel Marjamäki
3989408738
Update copyright year
2022-02-05 11:45:17 +01:00
chrchr-github
511520d623
Fix #10679 FP constParameter with const/nonconst overload ( #3780 )
2022-02-02 19:38:32 +01:00
chrchr-github
dad64bfcc8
Fix #10091 FP shadowFunction with default destructor implementation / Tests for #8635 , #9776 , #9940 , #9951 , #10018 ( #3763 )
2022-02-02 19:30:49 +01:00
chrchr-github
d55010c441
Fix #9247 FP uninitMemberVar (inconclusive) ( #3765 )
2022-01-28 15:05:13 +01:00
chrchr-github
f429245da2
Fix #8557 FP format string requires unsigned long (for sizeof(var)) ( #3727 )
2022-01-27 19:43:52 +01:00
Oliver Stöneberg
171da2e6f9
avoid dependency on transitive includes - based on include-what-you-use ( #3757 )
2022-01-27 19:03:20 +01:00
Paul Fultz II
1a949c00b0
Fix 10723: Assertion 'tok && tok->exprId() > 0 && "Missing expr id for symbolic value"' in valueFlowSmartPointer() ( #3755 )
...
* Fix 10723: Assertion 'tok && tok->exprId() > 0 && "Missing expr id for symbolic value"' in valueFlowSmartPointer()
* Format
2022-01-26 06:28:13 +01:00
chrchr-github
9d6e5c2a05
Fix #10237 uninitMemberVar - member initialized via function call ( #3745 )
2022-01-24 21:52:00 +01:00
Paul Fultz II
a7dbd288c4
Fix 10738: FP knownEmptyContainer with auto reference ( #3734 )
...
* Fix 10738: FP knownEmptyContainer with auto reference
* Format
2022-01-21 09:56:55 +01:00
chrchr-github
c2fc4973ad
Fix #10515 False positive for explicit one-argument constructor if co… ( #3718 )
2022-01-17 20:51:23 +01:00
Paul Fultz II
4af98f21d6
Fix 10588: crash ( #3691 )
2022-01-16 12:33:31 +01:00
Paul Fultz II
55ff010df3
Fix 10717: Crash in SymbolDatabase::setValueTypeInTokenList ( #3710 )
...
* Fix 10717: Crash in SymbolDatabase::setValueTypeInTokenList
* Format
2022-01-15 07:56:56 +01:00
chrchr-github
781a145680
Fix regression: functionStatic related to overload resolution ( #3705 )
2022-01-14 17:55:50 +01:00
chrchr-github
1b89c998f5
Fix #10469 FP returnTempReference with overloaded operator+= ( #3678 )
2022-01-12 22:05:30 +01:00
shaneasd
8f7996211b
remove nullScope from TestSymbolDatabase ( #3679 )
2022-01-06 15:23:43 +01:00
chrchr-github
9fda86eb6d
Fix #9998 ( #3676 )
2022-01-06 15:21:05 +01:00
Oliver Stöneberg
0ba9cb4e64
fixed some unusedFunction warnings ( #3618 )
2022-01-04 15:48:08 +01:00
Armin Müller
d5daba331f
Typos found by running "codespell" ( #3659 )
2022-01-02 08:12:08 +01:00
Daniel Marjamäki
e6ccf299b9
Fixed #10598 (SymbolDatabase: final class is not parsed properly)
2021-12-22 21:48:01 +01:00
Daniel Marjamäki
77434d093e
SymbolDatabase: Do not set wrong type for std::map etc items in range for loop
2021-12-11 15:16:54 +01:00
Paul Fultz II
a03e731930
Track lifetimes of lambdas that capture the 'this' variable ( #3594 )
2021-12-04 17:00:55 +01:00
Paul Fultz II
853a1f6d54
Fix 10631: FP, Regression: error: Return value of allocation function 'makeThing' is not stored. ( #3585 )
2021-11-29 07:06:43 +01:00
Paul Fultz II
57f5b19b34
Fix 7812: False negative: return pointer of local variable ( #3583 )
...
* Fix 7812: False negative: return pointer of local variable
* Format
* Add test case for 3029
* Format
2021-11-28 15:25:21 +01:00
Paul Fultz II
1e327dfbd3
Fix 9836: False negative: No invalidContainer when using vector of vectors ( #3580 )
...
* Fix 9836: False negative: No invalidContainer when using vector of vectors
* Format
2021-11-26 13:38:40 +01:00
Rikard Falkeborn
085d25f1b1
SymbolDatabase: Fix valuetype with constexpr and auto ( #3577 )
2021-11-24 16:51:40 +01:00
Daniel Marjamäki
10109a5ef7
dumpfile: remove redundant Variable attributes isArgument and isLocal. Add isVolatile.
2021-11-19 17:21:27 +01:00
Daniel Marjamäki
f701a9361d
chmod; Use 644 for source files
2021-11-17 08:25:25 +01:00
Daniel Marjamäki
8b5865055a
SymbolDatabase: Fix Variable pointer property for 'std::string x(*p)'
2021-11-17 08:22:49 +01:00
chrchr-github
9c31e0ce54
Fix #10393 FP returnDanglingLifetime ( #3562 )
2021-11-15 20:36:38 +01:00
Paul Fultz II
13f5b560ce
Fix 10555: FP knownConditionTrueFalse with non-const function in base class ( #3559 )
2021-11-12 20:05:43 +01:00
chrchr-github
629f883408
Fix #10097 : autovarInvalidDeallocation with pointer to std::array ( #3529 )
2021-11-08 20:31:16 +01:00