Commit Graph

14426 Commits

Author SHA1 Message Date
Oliver Stöneberg 40a69e5afb
optimized deserializing of `ErrorMessage` and related main process code (#4610) 2022-12-09 19:34:51 +01:00
Paul Fultz II 6eccb2e36c
Throw internal error when tokens are not in order (#4623)
* Throw internal error when tokens are not in order

* Add semicolon
2022-12-09 07:17:16 +01:00
Paul Fultz II 7acbb656f3
Fix 11412: False positive: uninitvar (#4624)
* Dont remove modified variables from dead code

* Add test for 11412

* Format
2022-12-09 07:15:47 +01:00
Paul Fultz II c150317f02
Fix 11384: FP knownConditionTrueFalse when variable is modified in return statement (#4625)
* Fix 11384: FP knownConditionTrueFalse when variable is modified in return statement

* Format
2022-12-09 07:15:15 +01:00
chrchr-github c779cefa61
Fix #11422 debug: Missing variable class for variable with varid (#4616) 2022-12-08 20:17:06 +01:00
Paul Fultz II 0cb742701d
Fix 11415: FP containerOutOfBounds for container initialized in virtual method (#4622) 2022-12-08 20:10:58 +01:00
chrchr-github 04b7c0c200
Fix #11404 FP knownConditionTrueFalse with iterator (#4619)
* Fix wrong value set in valueFlowSameExpressions()

* Fix  #11404 FP knownConditionTrueFalse with iterator
2022-12-08 10:40:55 +01:00
Paul Fultz II 663a8411dd
Fix 11416: FP nullPointerRedundantCheck for check after loop with break (#4620) 2022-12-08 07:27:06 +01:00
Oliver Stöneberg 4103d05c7f
improved `ErrorMessage::deserialize()` error messages (#4617) 2022-12-07 18:00:45 +01:00
chrchr-github 8713dabe58
Get type from iterator (#4613) 2022-12-07 09:38:36 +01:00
Oliver Stöneberg 8bb5ac0efd
improved `MathLib::to{ULong|Long|Double}Number()` and increased test coverage / added CMake option `USE_LIBCXX` / fixed #10695 (#4611) 2022-12-07 09:20:09 +01:00
chrchr-github 89dba226dd
Fix #11305 FP uninitvar with unseen typedef (#4612) 2022-12-07 09:14:22 +01:00
chrchr-github 0e57c27dd3
Fix #11386 debug: CheckClass::checkConst found unlinked template argument list (#4614) 2022-12-07 09:12:46 +01:00
chrchr-github d5d7446433
Add cfg for std::scoped_lock, handle template arguments in checkMisusedScopedObject() (#4615) 2022-12-07 09:10:48 +01:00
Oliver Stöneberg 7d3ce62ee9
improved errorhandling related to deserializing `ErrorMessage` (#4604) 2022-12-03 15:44:33 +01:00
chrchr-github 0854fda28a
Get type from smartpointer (#4608)
* Fix #11223 checkLibraryFunction treats "auto" as type

* Use utility function

* Get type from 'auto p = new ...'

* Fix merge

* Add test for recent fix

* Format

* Get type from smartpointer
2022-12-03 07:50:21 +01:00
chrchr-github 7d6683fb78
Fix #11417 FP knownConditionTrueFalse with container and brace init (#4606)
* Fix #11417 FP knownConditionTrueFalse with container and brace init

* Format

* Format

* Move to getInitListSize()
2022-12-02 22:07:08 +01:00
chrchr-github e4ee7cd59c
Get type from 'auto p = new ...' (#4607)
* Fix #11223 checkLibraryFunction treats "auto" as type

* Use utility function

* Get type from 'auto p = new ...'

* Fix merge
2022-12-02 20:28:14 +01:00
chrchr-github 9efedd6be9
Fix #11223 checkLibraryFunction treats "auto" as type (#4605)
* Fix #11223 checkLibraryFunction treats "auto" as type

* Use utility function
2022-12-02 07:21:33 +01:00
chrchr-github 428f5016d4
Partial fix for #11378 (iscpp11init) (#4595)
* Partial fix for #11378 (iscpp11init)

* Improve fix

* Add fix
2022-11-27 09:26:46 +01:00
chrchr-github 665e4230f2
Fix #11406 FP returnDanglingLifetime, std::unique_ptr and implicit conversion to bool (#4600) 2022-11-27 09:24:19 +01:00
chrchr-github 4cb49013a7
Fix #11374 FP danglingTemporaryLifetime with std::string_view (#4602) 2022-11-27 09:22:55 +01:00
Rikard Falkeborn 52264b9c26
Fix #11401 nullpointer dereference with alignof (#4601)
* checknullpointer: Don't report dereference with alignof

* Refactor unevaluating operator check in checknullpointer

Unifying these ensures the different checks treat the operators the
same.

* Fix FP with _Alignof and null pointer

Just like alignof, _Alignof does not evaluate its operand.

* CheckNullPointer: Also support compiler specific alignof

This fixes #11401 which is about __alignof__. For good measure, also add
the microsoft extensions __alignof and _alignof.
2022-11-27 09:20:19 +01:00
Rikard Falkeborn 8465d901c8
Fix 11396, doublefree on munmap in if-statement (#4594) 2022-11-26 15:45:27 +01:00
Stefan van Kessel a5c16af16d
Fix lambda capture template syntax error (#4593) 2022-11-23 20:15:10 +01:00
chrchr-github 68acd77053
Fix #11361 FP ctuPointerArith with unknown buffer size (#4591) 2022-11-23 19:11:47 +01:00
Daniel Marjamäki ad8c1e26f0 dump: output language to dumpfile 2022-11-20 12:30:09 +01:00
chrchr-github 9f50611a44
Fix #11391 FP doubleFree with goto (#4587) 2022-11-19 16:49:34 +01:00
chrchr-github 80aa6dc1d9
Fix #11392 FP mismatchAllocDealloc with std::unique_ptr and custom deleter (#4585) 2022-11-18 19:45:25 +01:00
gerboengels 3fdba645a6
Improve fix for #11383 FP selfAssignment: lambda capture (#4584) 2022-11-18 19:44:32 +01:00
chrchr-github 4ce76d0b58
Fix #11385 debug: SymbolDatabase::findFunction found '>' without link. (#4583) 2022-11-14 21:08:15 +01:00
chrchr-github e3939d32d0
Fix crash on nullptr (#4582)
* Update tokenlist.cpp

* Update testincompletestatement.cpp

* Fix #11370 FP constStatement with lambda

* Format

* Fix crash on nullptr

* Emit syntax error

* Fix test

* Use strAt()

* Fix another crash on nullptr

* Update testconstructors.cpp

* Fix crash on nullptr

* Fix test
2022-11-13 23:04:51 +01:00
chrchr-github 701d381895
Fix #11383 FP selfAssignment: lambda capture / #11380 FP operatorEqRetRefThis (#4581)
* Fix  #11383 FP selfAssignment: lambda capture /  #11380
FP operatorEqRetRefThis

* Format
2022-11-13 21:20:44 +01:00
Daniel Marjamäki 8aec886450 runformat 2022-11-12 22:36:26 +01:00
chrchr-github e8b37235d6
Fix #11378 internalAstError regressions (iscpp11init) (#4580) 2022-11-12 22:25:05 +01:00
Daniel Marjamäki 8fb8e06003 SymbolDatabase: Set valuetype for this 2022-11-12 22:23:42 +01:00
Daniel Marjamäki 15d3e510e1 ValueFlow: throw TerminateException in valueFlowGenericForward in case analysis is terminated 2022-11-12 12:47:54 +01:00
chrchr-github 4e75c08f58
Respect [[maybe_unused]] in unusedPrivateFunction (#4579) 2022-11-10 20:58:39 +01:00
chrchr-github ffc0c57562
Fix crashes on nullptr (#4575) 2022-11-09 21:56:16 +01:00
gerboengels bd95efc987
Fix internal error "Unexpected tokens in initializer" with anonymous namespace (#4577)
Co-authored-by: Gerbo Engels <gerbo.engels@ortec-finance.com>
2022-11-05 22:41:13 +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
gerboengels d7a8f7f297
Fix couple issues with missing operatorEqVarError (#4576) 2022-11-05 10:48:34 +01:00
Rikard Falkeborn 3c21b9cc53
Fix #11038, FP memory leak in if-statement in realloc with cast (#4572) 2022-11-03 10:37:43 +01:00
chrchr-github e4c5f36af0
Fix #11373 typedef: not simplified after inline keyword (#4574) 2022-11-02 15:15:33 +01:00
chrchr-github ccf2176664
Fix #11370 FP constStatement with lambda (#4570)
* Update tokenlist.cpp

* Update testincompletestatement.cpp

* Fix #11370 FP constStatement with lambda

* Format
2022-11-01 11:50:08 +01:00
chrchr-github d717e62ec3
Fix #11371 Detect assignment to temporary (#4571)
* Fix #11371 Detect assignment to temporary

* Use AST

* Warn if type definition is not seen
2022-11-01 11:46:42 +01:00
chrchr-github cf8051b7e2
Fix #11368 FP "Same value in both branches of ternary operator" on plus and minus zero (#4569)
Fix #11368 FP "Same value in both branches of ternary operator" on plus and minus zero
2022-10-31 15:18:25 +01:00
Daniel Marjamäki e8606a5e5a let --premium=misra-c-2012 also set --addon=misra. changed addons container to a set 2022-10-31 15:04:16 +01:00
chrchr-github 6df8573e15
Fix #11369 Syntax error. Unexpected tokens in initializer. (#4568) 2022-10-29 21:24:50 +02:00
chrchr-github b4e78e8ac5
Fix #11357 new internalAstError (#4564)
* Fix #11357 new internalAstError

* Format

* Handle scope operator

* Format

* Format
2022-10-25 21:50:37 +02:00
chrchr-github 13d81cdd58
#11351 follow-up: Handle more variadic template arguments (#4554)
* Update templatesimplifier.cpp

* Add tests
2022-10-22 00:28:33 +02:00
chrchr-github ae16aab997
Handle simple typedefs (#4558) 2022-10-22 00:28:05 +02:00
chrchr-github e046232535
Fix #11362 FP returnDanglingLifetime for pointer to struct member in static array (#4563)
* Fix  #11362 FP returnDanglingLifetime for pointer to struct member in static array

* Undo
2022-10-22 00:27:30 +02:00
chrchr-github 515369739c
Fix #11359 FP constStatement for function-local struct definition+initialization statement (#4561) 2022-10-22 00:27:19 +02:00
Razvan Ioan Alexe 1da37461e3
Typo found in Summary of CWE: 758 (#4553) 2022-10-20 19:11:15 +02:00
chrchr-github 7b9c99003b
Improve unreachableCodeError: handle library functions (#4560)
* Update templatesimplifier.cpp

* Add tests

* Improve unreachableCodeError message

* Update templatesimplifier.cpp

* Add tests

* Improve unreachableCodeError message

* Revert "Update templatesimplifier.cpp"

This reverts commit 3fd152ed4063772a5f162bd985c3d91bcc65eb55.

* Revert "Add tests"

This reverts commit e760ab51e66a0a2c3a0250caf4cf3b745db44d10.

* Improve unreachableCodeError: handle library functions

* Fix merge
2022-10-20 07:00:36 +02:00
chrchr-github 9c7b4c9540
Improve unreachableCodeError message (#4559)
* Update templatesimplifier.cpp

* Add tests

* Improve unreachableCodeError message

* Update templatesimplifier.cpp

* Add tests

* Improve unreachableCodeError message

* Revert "Update templatesimplifier.cpp"

This reverts commit 3fd152ed4063772a5f162bd985c3d91bcc65eb55.

* Revert "Add tests"

This reverts commit e760ab51e66a0a2c3a0250caf4cf3b745db44d10.
2022-10-19 19:19:31 +02:00
chrchr-github 192c30ab1d
Fix crash in arraySize() (#4556)
* Fix  #11355 FN: arrayIndexOutOfBounds

* Fix

* Fix crash in arraySize()
2022-10-19 19:19:01 +02:00
gerboengels 6a01fa9b70
#11134 Fix broken AST with (designated) initializers (#4550)
* Make control flow a bit easier, and more similar to previous code

Made similar to around line 790

* In a cpp11init, always parse only the corresponding } (#11134)

- _always_, because in some cases this was omitted (around line 790) or too strict (around line 860)
- _only_, and not following tokens which happen to be } as well (around line 1030)

* Fix unit tests: AST was incorrect, now is fixed

auto var{ {{},{}}, {} };

Old AST:
```
{
|-var
`-{
  `-,
    |-,
    | |-{
    | `-{
    `-{
```
New AST:
```
{
|-var
`-,
  |-{
  | `-,
  | | |-{
  | | `-{
  `-{
```
Compare the same example, but with `X{}` instead of just `{}`:
`auto var{ a{b{},c{}}, d{} };`
```
{
|-var
`-,
  |-{
  | |-a
  | `-,
  | | |-{
  | | | `-b
  | | `-{
  | | | `-c
  `-{
    `-d
```
This structure is similar to that of the new AST, not the old AST

* Fix unit tests: another AST was incorrect, now is fixed

Code: `auto var{{1,a::b{2,3}}, {4,a::b{5,6}}};`

Old AST:
```
{
|-var
`-{
  `-,
    |-,
    | |-1 'signed int'
    | `-{
    | | |-::
    | | | |-a
    | | | `-b
    | | `-,
    | | | |-2 'signed int'
    | | | `-3 'signed int'
    `-{
      `-,
        |-4 'signed int'
        `-{
          |-::
          | |-a
          | `-b
          `-,
            |-5 'signed int'
            `-6 'signed int'
```
New AST:
```
{
|-var
`-,
  |-{
  | `-,
  | | |-1 'signed int'
  | | `-{
  | | | |-::
  | | | | |-a
  | | | | `-b
  | | | `-,
  | | | | |-2 'signed int'
  | | | | `-3 'signed int'
  `-{
    `-,
      |-4 'signed int'
      `-{
        |-::
        | |-a
        | `-b
        `-,
          |-5 'signed int'
          `-6 'signed int'
```

* Fix unit tests: missing ; after class, resulting in incorrectly being marked as cpp11init

Because of the missing `;` after the class declaration, it was marked as a cpp11init block.
Which it isn't, and which now throws an exception

* Fix cpp11init to let unit tests pass again

The following unit tests failed on the newly introduced throws, because the code for these tests incorrectly marked some tokens as cpp11init:
TestVarID::varid_cpp11initialization
TestTokenizer::checkRefQualifiers

* Fix typo

* Improve check for void trailing return type

Observation: the only function body _not_ containing a semicolon, is a void function: something like
   auto make_zero(ini& i) -> void {
     while(--i > 0) {}
   }
Non-void function? Then it must return a value, and thus contain a semicolon, which is checked for a few lines later.

* Fix cpp11init with templated trailing return type

In the following example, vector was marked as cpp11init due to the mismatch of `%any% {`
auto f() -> std::vector<int> { return {}; }

I made the assumption that whenever "%any% {" matches, endtok must be set too.
If this assumtion doesn't hold (so "%any% {" matches, but endtok == nullptr), then the for-loop would search all the way to the end of stream. Which I guess was not the intention.

* Remove comments

Co-authored-by: Gerbo Engels <gerbo.engels@ortec-finance.com>
2022-10-19 07:25:15 +02:00
chrchr-github 5a8e55c083
Fix #11355 FN: arrayIndexOutOfBounds (#4555)
* Fix  #11355 FN: arrayIndexOutOfBounds

* Fix
2022-10-18 07:24:24 +02:00
chrchr-github c6c339a3e7
Fix #11351 Assert failure in templatesimplifier.cpp (#4552) 2022-10-16 19:34:25 +02:00
gerboengels 221873e69f
Fix #11319 (#4549)
In this example:
```
//template<std::same_as<int> T> // <= works
template<same_as<int> T>        // <= didn't work
void f()
{}
```
the changed line used to match to `< same_as <`, therefore skip creating links.
The `%op% %name% <` already feels a bit like a workaround. So adding the condition that $op$ shouldn't be a comparison operator, but part of the template, seemed reasonable to me

Co-authored-by: Gerbo Engels <gerbo.engels@ortec-finance.com>
2022-10-16 19:33:44 +02:00
Oliver Stöneberg 2ac9fbc1bf
include all (internal non-generated) headers in clang-tidy checks (#4100) 2022-10-16 13:51:17 +02:00
chrchr-github 3273e51fd5
Fix #10412 FN useStlAlgorithm with iterators (#4157) 2022-10-16 13:46:26 +02:00
chrchr-github 6c24d2b865
Fix #11321 FP uninitvar for in-class member initialization (#4547) 2022-10-14 19:48:27 +02:00
Daniel Marjamäki b8b6be48d9 Fixed #9926 (False positive assertWithSideEffects, calling method that has no side effects) 2022-10-12 07:51:50 +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
Daniel Marjamäki 584a428025 Fixed #10831 ("Analysis failed (lambda not recognized)" with lamba default parameter in lambda signature) 2022-10-10 21:05:48 +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
Daniel Marjamäki 65cd6ea7b4 Clarify knownConditionTrueFalse warnings 2022-10-10 13:45:30 +02:00
Paul Fultz II bd22ea565f
Use return instead of condition for alwaysTrueFalse check (#4446) 2022-10-09 21:03:48 +02:00
Oliver Stöneberg fa7e08a29f
optimized `CheckOther::checkDuplicateBranch()` a bit (#4542) 2022-10-09 20:48:54 +02:00
Oliver Stöneberg d1bfae989e
fixed handling of incomplete char/string literals in `isPrefixStringCharLiteral()` - also optimized it a bit (#4541)
* fixed handling of incomplete char/string literals in `isPrefixStringCharLiteral()` - also optimized it a bit / added tests for `isStringLiteral()` and `isCharLiteral()`

* utils.h: early out in `isStringCharLiteral()` to avoid the loop
2022-10-09 11:19:19 +02:00
Oliver Stöneberg 9f7a725983
added environment variable `UNUSEDFUNCTION_ONLY` to make sure only the `unusedFunction` check is being executed (#4362) 2022-10-06 20:54:24 +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
Daniel Marjamäki ca32cf11ba Fix handling of --performance-valueflow-max-time=T 2022-10-04 20:01:19 +02:00
Daniel Marjamäki 8686997292 Add experimental option --performance-valueflow-max-time=T 2022-10-04 14:02:55 +02:00
Oliver Stöneberg ee124cd097
modernized `erase()` calls (#4530) 2022-10-02 07:13:31 +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
chrchr-github 586c29c772
Partial fix for #9157 False negative: stlOutOfBounds, cast (#4527)
* Fix leakNoVarFunctionCall FP

* Partial fix for #9157 False negative: stlOutOfBounds, cast
2022-09-30 14:43:21 +02:00
chrchr-github 4d13266e99
Fix #10083 FN unusedScopedObject: temporary lock 'std::lock_guard<std::mutex>(m)' (#4522)
* Fix #10083 FN unusedScopedObject: temporary lock 'std::lock_guard<std::mutex>(m)'

* Format

* Fix cppcheck-cfg.rng

* Format
2022-09-30 07:25:33 +02:00
Oliver Stöneberg 3dfdb409c6
fixed and enabled some Clang compiler warnings (#4517) 2022-09-29 21:59:02 +02:00
chrchr-github 6142ba542a
Fix leakNoVarFunctionCall FP (#4523) 2022-09-29 21:58:11 +02:00
chrchr-github 260a757791
Fix #10839 internalAstError with function returning a function (#4514) 2022-09-29 21:56:26 +02:00
Oliver Stöneberg 083efe6361
astutils.h: use pre-sized SmallVector in visitAstNodes() (#3919) 2022-09-29 21:52:42 +02:00
Oliver Stöneberg eeb6db05f1
avoid some unnecessary object creations and copies (#4493) 2022-09-29 21:47:17 +02:00
Oliver Stöneberg 0481edf9c3
return `SmallVector` from `followAllReferences()` (#3925) 2022-09-29 21:41:32 +02:00
chrchr-github b8b6b41833
Fix #10802 Broken AST lambda inside for loop (#4520)
* Fix #10802 Broken AST lambda inside for loop

* Add some boost and wxwidget defines (on behalf of "david ingamells")
2022-09-29 13:29:50 +02:00
chrchr-github 56e2af5dec
Fix #9653 FP leakReturnValNotUsed although (void) is specified (#4431) 2022-09-27 20:09:04 +02:00
Oliver Stöneberg d6f1d7bb23
replaced `static const`/fixed `std::vector` containers with `std::array` (#4440) 2022-09-27 20:06:15 +02:00
Oliver Stöneberg 10426f6707
cppcheck.cpp: only call `getFileInfo()` if necessary (#4510) 2022-09-27 20:04:35 +02:00
Oliver Stöneberg b9e07e918e
enabled and fixed `readability-named-parameter` clang-tidy warnings (#4487) 2022-09-27 20:03:25 +02:00
chrchr-github cab4997b0b
Fix #11039 Empty AST with delete new / #11327 FP leakReturnValNotUsed with new and offset (#4513)
* Fix internalAstError with new

* Format

* nullptr check

* Add test for #11039

* Fix #11039 Empty AST with delete new / #11327 FP leakReturnValNotUsed with new and offset
2022-09-27 18:12:58 +02:00
Maksim Derbasov c8b96c3a20
Typos fix (#4509) 2022-09-27 06:48:06 +02:00
chrchr-github 0f79f8bd70
Fix internalAstError with new (#4508)
* Fix internalAstError with new

* Format

* nullptr check
2022-09-26 22:05:58 +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 657d9143f7
cleaned up includes based on include-what-you-use (#4502)
* iwyu.yml: include internal check sources

* cleaned up includes based on include-what-you-use
2022-09-25 09:20:34 +02:00
Leila F. Rahman 70c844ddfb
Fix the release function in the ValuePtr class (#4490) 2022-09-24 13:25:06 +02:00
chrchr-github 2808fc615e
Fix #10057 "statement without effect" / #4779 FN unusedScopedObject does not work for classes in different namespace (#4500)
* Partial fix for #10057 unused variable without assignment not detected

* Add test for #9672

* Fix #4779 FN unusedScopedObject does not work for classes in different namespace

* Merge

* Fix #10057 "statement without effect" (unused variable without assignment) not detected

* Format
2022-09-24 12:49:37 +02:00
Oliver Stöneberg dc03a50414
some small cleanups and refactorings (#4488)
* moved `plistFile` from `ErrorLogger` to `CppCheck`

* got rid of global CWE objects

* lib/CMakeLists.txt: suppress some `-Wfloat-equal` clang warning in matchcompiled builds as well

* lib/CMakeLists.txt: moved a loop into proper block

* test/CMakeLists.txt: simplified `add_fixture`

* test/CMakeLists.txt: moved `fixture_cost`

* fixed `naming-privateMemberVariable` selfcheck warning
2022-09-24 11:59:13 +02:00
Oliver Stöneberg e8b9cd64fc
refs #10663 - only match start pattern in `Library::detectContainerInternal()` if necessary (#4499) 2022-09-23 20:19:56 +02:00
chrchr-github d608bec414
Fix FP with std::array (#4497)
* Fix #1655 wrong usage of std::string in memcpy

* Fix memsetClass FP

* Fix #8619 FN memset on container containing structs with containers

* Token::Match

* Use AST

* simpleMatch

* Fix FP with std::array

* simpleMatch
2022-09-23 20:18:49 +02:00
chrchr-github 0bb82b70d9
Fix #11328 FN functionStatic, functionConst with this (#4496)
* Fix #11328 FN functionStatic, functionConst with this

* Fix FP
2022-09-23 08:46:31 +02:00
Jim Kuhn f27fbdd8ab
Fix sense of test (.analyzerinfo files get placed in wrong directory) (#4486)
* Fix sense of test (.analyzerinfo files get placed in wrong directory)

* Update testanalyzerinformation.cpp

style (tabs -> spaces)
2022-09-21 17:38:23 +02:00
chrchr-github 3b07661fd3
Fix #11293 debug: CheckClass::isMemberVar found used member variable 'x' with varid 0 (#4489) 2022-09-21 17:35:10 +02:00
chrchr-github 2aca275e0c
Fix #8619 FN memset on container containing structs with containers (#4491)
* Fix #1655 wrong usage of std::string in memcpy

* Fix memsetClass FP

* Fix #8619 FN memset on container containing structs with containers

* Token::Match

* Use AST

* simpleMatch
2022-09-21 17:33:48 +02:00
chrchr-github 3644d79162
Fix duplicateConditionalAssign FP (#4484)
* Fix #9406 FN redundant assignment of Boolean variable

* Fix warning, refactor

* Update testcondition.cpp

* Fix duplicateConditionalAssign FP

* Format
2022-09-20 21:57:27 +02:00
chrchr-github dcb332acb0
Fix #9406 FN redundant assignment of Boolean variable (#4482)
* Fix #9406 FN redundant assignment of Boolean variable

* Fix warning, refactor

* Update testcondition.cpp
2022-09-20 07:30:12 +02:00
chrchr-github f274d499a1
Fix #11171 FP missing return statement when std::enable_if_t is used (#4480)
* Fix #11171 FP missing return statement when std::enable_if_t is used

* Add check
2022-09-19 12:47:58 +02:00
Daniel Marjamäki 8275f07692 dump: Add Token::isCast attribute 2022-09-18 12:42:58 +02:00
Paul Fultz II 09944c0b7e
Fix 11298: FP danglingTemporaryLifetime when constructing from const char* (#4479)
* Fix 11298: FP danglingTemporaryLifetime when constructing from const char*

* Format
2022-09-18 08:30:58 +02:00
Paul Fultz II de7d02293f
Fix 11308: FP accessMoved with virtual function (#4478)
* Fix 11308: FP accessMoved with virtual function

* Format
2022-09-18 08:30:06 +02:00
Paul Fultz II d34de745c0
Fix 11306: FP knownConditionTrueFalse with strlen() (#4477)
* Fix 11306: FP knownConditionTrueFalse with strlen()

* Add another test
2022-09-18 08:29:10 +02:00
chrchr-github cb6f04a16c
Fix #11315 FP zerodivcond from enum definition / #11310 FP unassignedVariable with static variable (#4476)
* Fix #11315 FP zerodivcond from enum definition

* Simplify Boolean expression

* Fix #11310 FP unassignedVariable with static variable
2022-09-17 18:50:07 +02:00
Sergei Trofimovich 3b840e7ff1
lib/sourcelocation.h: add missing <cstdint> include (#4474)
Without the change build on upcoming gcc-13 fails as:

    In file included from lib/symboldatabase.h:28,
                     from lib/astutils.h:36,
                     from test/testastutils.cpp:20:
    lib/sourcelocation.h:52:10: error: 'uint_least32_t' in namespace 'std' does not name a type
       52 |     std::uint_least32_t m_line = 0;
          |          ^~~~~~~~~~~~~~
2022-09-16 21:36:37 +02:00
Oliver Stöneberg 897826006e
mitigated some clang-tidy warnings in headers (#4472)
* erroritem.h: avoid `performance-no-int-to-ptr` clang-tidy warning

* suppress `readability-inconsistent-declaration-parameter-name` clang-tidy warnings for Qt signals

* tokenlist.h: mitigated `readability-make-member-function-const` clang-tidy warnings

* fixed `modernize-use-override` clang-tidy warnings in headers

* fixed `modernize-pass-by-value` clang-tidy warnings in headers

* tokenize.cpp: avoid unnecessary copy
2022-09-16 18:59:15 +02:00
Oliver Stöneberg 339484d2a1
mitigated and enabled more clang-tidy warnings (#4470)
* fixed some `performance-inefficient-string-concatenation` clang-tidy warnings

* fixed and enabled `modernize-replace-random-shuffle` clang-tidy warning

* fixed and enabled `bugprone-suspicious-string-compare` clang-tidy warning

* mitigated and enabled `readability-non-const-parameter` clang-tidy warnings

* clang-tidy.md: documented some disabled checks

* mitigated and enabled `performance-unnecessary-value-param` clang-tidy warnings
2022-09-16 18:58:59 +02:00
chrchr-github 45ccc9ba1e
Fix ctunullpointer FP (#4471) 2022-09-16 12:11:34 +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
chrchr-github c9ade33298
Fix memsetClass FP (#4465) 2022-09-15 20:20:49 +02:00
Daniel Marjamäki f1aa9eb48f dump: add externLang attribute for tokens 2022-09-15 19:57:42 +02:00
chrchr-github d1386a842a
Fix #11301 debug: constStatementError not handled. (#4463)
* Fix #11301 debug: constStatementError not handled.

* Use function
2022-09-14 23:57:02 +02:00
chrchr-github 266174ddc4
Fix #10993 danglingTemporaryLifetime reported in two different locati… (#4462)
* Fix #10993 danglingTemporaryLifetime reported in two different locations for std::string_view usage

* Missing include

* Add test
2022-09-14 07:28:04 +02:00
chrchr-github 07caf17eb3
Fix #1655 wrong usage of std::string in memcpy (#4460) 2022-09-13 15:14:25 +02:00
chrchr-github e904f7341e
Fix ValueFlow crash (#4461) 2022-09-13 12:25:15 +02:00
Paul Fultz II 43caa32abf
Fix 9755: false negative: access of moved variable in conditional code (#4459)
* Fix 9755: false negative: access of moved variable in conditional code

* Format
2022-09-11 12:32:01 +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
Paul Fultz II 53820515c9
Set valueflow for container elements (#4455)
* Track elements to containers

* Format

* Handle other access methods

* Format
2022-09-10 09:26:44 +02:00
Oliver Stöneberg 433293b9ab
added missing version bumps to 2.10 (#4420) 2022-09-09 21:02:04 +02:00
Paul Fultz II 117a753b10
Partial fix 11154: FN: knownConditionTrueFalse (#4453)
* Partial fix 11154: FN: knownConditionTrueFalse

* Formay

* Add more tests

* FOrmat

* Fix FP

* Add test

* Check for side effects

* Format

* Update tests

* Format
2022-09-08 22:08:38 +02:00
Oliver Stöneberg dbc05da356
fixed some clang-tidy warnings (#4435) 2022-09-08 20:01:41 +02:00
Paul Fultz II 7c986fbef1
Fix 11203: false positive: knownConditionTrueFalse 'always false' when comparing integer with floating-point (#4350) 2022-09-08 19:59:02 +02:00
Paul Fultz II f83b8dd385
Fix 11194: FN: knownConditionTrueFalse (#4452)
* Fix 11194: FN: knownConditionTrueFalse

* Format
2022-09-08 18:51:44 +02:00
Daniel Marjamäki 92845295b8 Fix broken CI caused by my qt fix 2022-09-08 11:12:38 +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 2e8d855b35 Tokenizer: Skip qt simplification if qt library is not loaded 2022-09-08 07:47:58 +02:00
Daniel Marjamäki b99474fe13 Tokenizer: Remove redundant setVarId call 2022-09-08 07:46:19 +02:00
Oliver Stöneberg 847391ea2d
some minor optimizations (#4449)
* cppcheck.cpp: reduced scope of a variable

* cppcheck.cpp: removed unnecessary severity checks

* cppcheck.cpp: avoid unnecessary copy

* templatesimplifier.cpp: perform early exit in loop in `expandTemplate()`
2022-09-07 19:19:04 +02:00
Paul Fultz II 32d96104d6
Fix 6370: ValueFlow: array element with known value (#4447)
* Fix 6370: ValueFlow: array element with known value

* Format

* Move comment
2022-09-07 19:16:07 +02:00
Paul Fultz II 6543b429c5
Fix 11285: FN: zerodiv (#4448)
* Fix 11285: FN: zerodiv

* Format
2022-09-07 19:15:37 +02:00
chrchr-github 6960332f8a
Fix #11294 FP arrayIndexOutOfBoundsCond with extra parentheses (#4442) 2022-09-06 21:21:06 +02:00
Oliver Stöneberg b3762cd76a
actually perform system tinyxml2 build on macos / fixed system tinyxml2 include (#4445)
* lib/CMakeLists.txt: removed unnecessary external include

* look up tinyxml2 include dir when using system one and specify it

* lib/CMakeLists.txt: do not treat bundled headers as system ones

* CI-unixish.yml: actually perform system tinyxml2 build on macos
2022-09-06 18:30:59 +02:00
Paul Fultz II 2d37a77281
Fix 11296: FN: knownConditionTrueFalse ( a !=0 && b != 0 && a == 0) (#4444) 2022-09-06 07:31:48 +02:00
Paul Fultz II 016793f258
Fix 11295: Regression FP: knownConditionTrueFalse (#4443) 2022-09-06 07:31:38 +02:00
Oliver Stöneberg 436b8bd3f1
optimized `isSameConstantValue()` a bit (#4441) 2022-09-05 21:36:26 +02:00
chrchr-github 31118fdce5
Fix noreturn FP with while() (#4429)
* Fix checkLibraryFunction FPs

* Fix FP with fclose()

* Format

* Fix FP with reinterpret_cast

* Fix noreturn FP with while()
2022-09-04 10:26:31 +02:00
Paul Fultz II 6ce5c24f21
Refactor knownConditionTrueFalse check and isUsedAsBool function (#4432)
* Refactor knownConditionTrueFalse check and isUsedAsBool function

* Format1

* Format

* Skip assign
2022-09-04 10:24:45 +02:00
Maksim Derbasov f93b588603
New check: use memcpy/memset instead of loop (#4257) 2022-09-03 23:29:06 +02:00
Daniel Marjamäki 9306c6f329 dump: Add Function::isAttributeNoreturn info 2022-09-03 12:09:20 +02:00
chrchr-github cf52ee098a
Fix checkLibraryFunction FPs (#4423)
* Fix checkLibraryFunction FPs

* Fix FP with fclose()

* Format

* Fix FP with reinterpret_cast
2022-09-02 07:51:10 +02:00
chrchr-github 79daad8ff4
Fix #11020 FP arrayIndexOutOfBounds if string literals are assigned conditionally (#4428) 2022-09-01 22:59:46 +02:00
Daniel Marjamäki 4779f0e172 TemplateSimplifier: Fixed instantiation when template parameters are A<..>, B<..> 2022-09-01 20:24:01 +02:00
chrchr-github 5804cc44e7
Fix FP bufferAccessOutOfBounds (#4427)
* Fix FN with buffer size 1

* Fix FP bufferAccessOutOfBounds
2022-08-31 19:31:37 +02:00
chrchr-github 3925a27182
Fix FP knowConditionTrueFalse (#4419)
* Fix #10426 FN (style) Condition 's.empty()' is always false

* Fix test

* Fix FP knowConditionTrueFalse

* Check for casts

* Fix FP for user-defined functions

* Adjust condition detection

* Tweaks
2022-08-30 18:08:24 +02:00
chrchr-github 9ab4f9976d
Fix #10426 FN (style) Condition 's.empty()' is always false (#4414)
* Fix #10426 FN (style) Condition 's.empty()' is always false

* Fix test
2022-08-29 12:25:10 +02:00
chrchr-github 1e14e360cb
Fix #8295 FN (error) Buffer is accessed out of bounds (wcpncpy, wcsncpy) (#4412)
* Fix #8295 FN (error) Buffer is accessed out of bounds (wcpncpy, wcsncpy)

* Fix cfg, validation

* Fix validation
2022-08-29 12:24:58 +02:00
chrchr-github df704361f6
Fix FN with buffer size 1 (#4410) 2022-08-29 12:24:44 +02:00
Daniel Marjamäki a400c94230 Update Copyrights 2022-08-28 14:22:12 +02:00
Daniel Marjamäki 5e0fc24bb7 Fixed #11232 (Syntax Error: AST broken, binary operator '!=' doesn't have two operands) 2022-08-27 18:02:19 +02:00
chrchr-github 7156afe003
Fix #5140 FN (error) buffer access out of bounds - known argument (#4402)
* Fix #5140 FN (error) buffer access out of bounds - known argument const char* argv[]

* Format
2022-08-26 17:27:54 +02:00
chrchr-github 917496a844
Fix #5678 FN destructor with no definition hide mismatching alloc/dealloc (#4401)
* Fix #5678 FN destructor with no definition hide mismatching allocation / deallocation

* Format

* Fix test

* Format
2022-08-25 22:52:51 +02:00
chrchr-github 456c6b410e
Fix #2304 FN known strcpy parameter (#4396)
* Fix #2304 FN known strcpy parameter

* Parentheses

* Format
2022-08-24 21:23:45 +02:00
Oliver Stöneberg 467648bec6
fixed #11249 (potential hang with -j and --showtime= when using threads) - synchronized access to `TimerResults::mResults` / added TSAN to CI (#4355) 2022-08-23 20:30:45 +02:00
chrchr-github 13e8d5220c
Fix another c_strParam regression (#4394) 2022-08-23 20:26:36 +02:00
Daniel Marjamäki a2454ecbca cli import cppcheck project with premium options 2022-08-23 20:13:03 +02:00
chrchr-github 4be7f689d7
Fix c_strParam regression (#4393)
* Fix #7515 New check: Not needed c_str() operation

* Comment

* Detect more instances of c_str() misuse

* Fix bad merge

* Check for data() also

* Fix

* Format

* Format

* Fix c_strParam regression
2022-08-23 15:00:27 +02:00
Daniel Marjamäki 5d267000e2 GUI: configuration of premium features 2022-08-22 21:11:28 +02:00
chrchr-github 66fca7ba91
Detect more instances of c_str() misuse (#4392)
* Fix #7515 New check: Not needed c_str() operation

* Comment

* Detect more instances of c_str() misuse

* Fix bad merge

* Check for data() also

* Fix

* Format

* Format
2022-08-22 14:06:10 +02:00
Oliver Stöneberg 9b4973d711
astutils.cpp: some small optimizations (#4378) 2022-08-21 17:39:21 +02:00
Daniel Marjamäki c820d2ba97 refactoring 2022-08-21 17:33:43 +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
Oliver Stöneberg 670b872f30
implemented move constructor for `TemplateSimplifier::TokenAndName` (#4390) 2022-08-21 17:02:03 +02:00
chrchr-github d351a97a0f
Fix #8336 FN stlcstrParam (#4389)
* Fix #7515 New check: Not needed c_str() operation

* Comment

* Fix error messages

* Handle more complex string expressions

* Fix #8336 FN stlcstrParam

* Handle iterators

* Format

* Format

* Parentheses
2022-08-21 13:04:43 +02:00
Oliver Stöneberg 1202efb438
some `--exception-handling` related improvements (#4368) 2022-08-20 20:54:31 +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 d73a33d17e
avoid redundant `Token::declEndToken()` calls (#4363) 2022-08-20 20:50:14 +02:00
Oliver Stöneberg 2afd5f80e7
smallvector.h: bake `reserve()` into the non-boost `SmallVector` implementation (#4385) 2022-08-20 20:44:26 +02:00
Oliver Stöneberg 1d95d1908d
refs #10663 - sped up `Library::detectContainerOrIterator()` by iterating the containers only once (#4380) 2022-08-20 12:14:55 +02:00
chrchr-github 2ab8de2650
Fix #11145 FP negativeMemoryAllocationSize with possible value (#4387) 2022-08-20 07:56:31 +02:00
Oliver Stöneberg f138df2909
mathlib.h: replaced slow `std::ostringstream` with `std::to_string()` in `MathLib::toString()` (#4382) 2022-08-19 20:44:24 +02:00
chrchr-github 80a486dda0
Fix #11167 FP virtual call in destructor even though class is final / Delete 'final' from specializations (#4383)
* Add 'final' keyword

* Delete 'final' from specializations

* Fix #11167 FP virtual call in destructor even though class is final

* Fix test
2022-08-19 18:26:00 +02:00
Oliver Stöneberg 16f598c409
added missing `sstream` includes (#4381) 2022-08-19 10:16:23 +02:00
chrchr-github 1aa259569e
Fix #10138 syntax error : int (operator"" _ii)(unsigned long long v) … (#4374)
* Fix #10138 syntax error : int (operator"" _ii)(unsigned long long v) { return v; }

* Format
2022-08-18 23:38:45 +02:00
Oliver Stöneberg e09f5f0db7
refs # 11106 (optimize CheckUnusedVar::checkStructMemberUsage()) - added missing loop breaks (#4376) 2022-08-18 23:36:21 +02:00
chrchr-github 6a0c254d1f
Fix #9931 FP zerodiv (daca@home) (#4379)
* Fix #9931 FP zerodiv (daca@home)

* Format

* Parentheses

* clang-tidy
2022-08-18 20:38:36 +02:00
chrchr-github 4a64e20592
unusedScopedObject: Don't warn for void statements (#4370)
* Fix unusedScopedObject FPs

* Simplify

* Simplify

* Fix test

* Don't warn for void statements

* Format
2022-08-17 19:45:46 +02:00
Oliver Stöneberg 0f0c4061ff
astutils.cpp: avoid redundant callback invocation in `isExpressionChangedAt()` (#4369) 2022-08-17 13:50:39 +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
chrchr-github 5b4c6c1e73
Fix #11026 FP pointerOutOfBounds with strlen() (#4366) 2022-08-17 09:45:07 +02:00
chrchr-github 1a95515e47
Fix unusedScopedObject FPs (#4364) 2022-08-17 09:11:23 +02:00
Oliver Stöneberg 98b9f2cbf1
reduced scope of some variables and avoided some copies (#4328) 2022-08-16 22:28:39 +02:00
chrchr-github 3dc2c0bd42
Fix #11257 FN constStatement with misused comma (#4365) 2022-08-16 22:10:58 +02:00
Oliver Stöneberg 31d704e4bc
cppcheckexecutor.cpp: extracted platform-dependent code into separate files (#4359) 2022-08-16 22:03:44 +02:00
Paul Fultz II 72c764b034
Expose exprId to addon (#4354) 2022-08-16 22:00:31 +02:00
Oliver Stöneberg 38c7d0a5f8
config.h: implemented `NORETURN` for GCC < 5 (#4361) 2022-08-16 06:52:54 +02:00
Oliver Stöneberg 4bf5dcd29f
cleaned up includes based on include-what-you-use (#4358)
* cleaned up includes based on include-what-you-use

* testlibrary.cpp: no need for `empyString` optimization
2022-08-14 12:44:19 +02:00
Oliver Stöneberg f7caf7dc93
avoid some unnecessary `std::string()` construction in comparisons (#4357)
* avoid unnecessary string wrapping

* consistently use `strcmp()`
2022-08-14 12:44:09 +02:00
chrchr-github afef71f6b6
Partial fix for #10057 unused variable without assignment not detected (#4348)
* Partial fix for #10057 unused variable without assignment not detected

* Add test for #9672
2022-08-13 08:29:06 +02:00
Oliver Stöneberg c54b3f4de0
removed leftover bughunting GUI related fields from `ErrorMessage` (#4351) 2022-08-13 08:27:52 +02:00
Paul Fultz II bfd9470600
Fix 11158: FP zerodiv in loop (#4356)
* Fix 11158: FP zerodiv in loop

* Format

* Add another test

* Format

* Fix FP

* Format
2022-08-13 08:27:20 +02:00
chrchr-github bdbd84ba98
#11238: Fix regression (#4349)
* Fix #11238 FP knownConditionTrueFalse with constexpr?

* Modify isConstVarExpression()

* Use predicate

* Format

* #11238: Fix regression
2022-08-09 13:13:16 +02:00
chrchr-github 974e34490f
Fix #9282 FP Unused private function (#4327) 2022-08-07 20:06:32 +02:00
Oliver Stöneberg 156323c95e
avoid unnecessary copies with `insert()` (#4323) 2022-08-07 19:31:16 +02:00
chrchr-github 078a6d7804
Fix #11238 FP knownConditionTrueFalse with constexpr? (#4341) 2022-08-07 19:06:19 +02:00
chrchr-github d5a0dfda00
Fix #11239 checkLibraryCheckType with asm goto() (invalid varid), add test for #8666 (#4340)
* Add test for #6541, avoid duplicate warning

* Add test for #5475

* Fix test

* Merge

* Add test for #8666

* Fix #11239 checkLibraryCheckType with asm goto() (invalid varid)

* Format
2022-08-04 21:35:18 +02:00
umanamente 460f63558d
Fixed typo in checkautovariables.cpp: getPointerDepth() (#4329) 2022-08-04 07:52:10 +02:00
Paul Fultz II c0f55a2b85
Fix 11142: FP nullPointer before assignment (#4319)
* Fix 11142: FP nullPointer before assignment

* Format

* Use simpleMatch
2022-08-03 19:05:07 +02:00
Paul Fultz II 6cb3a79a64
Fix 11147: FP invalidContainer with substr() (#4333)
* Fix 11147: FP invalidContainer with substr()

* Format
2022-08-03 19:04:44 +02:00
chrchr-github dd927aab9b
Fix #11237 checkLibraryNoReturn with unassigned object (#4338)
* Handle float values

* Fix #11237 checkLibraryNoReturn with unassigned object
2022-08-03 19:04:10 +02:00
chrchr-github a62c3ea90e
Fix #11234 Broken AST with auto**, FP constStatement (#4339) 2022-08-03 19:03:38 +02:00
chrchr-github 0eabe0505b
Handle float values (#4336) 2022-08-02 22:11:31 +02:00
chrchr-github 71f9a7269f
Add test for #6541, #5475, avoid duplicate warning (#4335)
* Add test for #6541, avoid duplicate warning

* Add test for #5475

* Fix test
2022-08-02 21:43:18 +02:00
chrchr-github bc409776e3
Fix #10320 Wrong redundant condition: misleading/wrong message (#4334)
* Fix #10320 Wrong redundant condition: misleading/wrong message

* Use expressionString()

* Clarify condition

* Update testcondition.cpp

* Trigger CI
2022-08-02 18:31:02 +02:00
chrchr-github 92d569afb6
#11233 FP: knownConditionTrueFalse (wrong message text) (#4330)
* #11233 FP: knownConditionTrueFalse (wrong message text)

* Format

* Update testcondition.cpp

* Trigger CI
2022-08-02 18:18:46 +02:00
chrchr-github 38fdbe0890
Fix #9716 Syntax error for function-try-block in global scope (#4305)
* Fix #9716 Syntax error for function-try-block in global scope

* static through instance

* Handle multiple catch blocks

* Add test

* Fix skip logic

* Handle init lists in simplifyFunctionTryCatch()
2022-07-31 14:49:50 +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 b65b47d3a8
enabled and fixed `modernize-pass-by-value` clang-tidy warnings (#4169) 2022-07-28 22:51:45 +02:00
chrchr-github 304e448749
Fix #8476 --check-library reports missing configuration for static_assert (#4314) 2022-07-28 22:47:15 +02:00
chrchr-github c340b6ae6c
Fix #11191 FP moduloofone with pow() (#4312) 2022-07-28 22:11:23 +02:00
Daniel Marjamäki 898ad314ab badBitmaskCheck: Avoid FP when there is #ifdef in expression 2022-07-28 21:56:05 +02:00
Oliver Stöneberg d6eb3a8f40
some changes for clang/clang-tidy 15 (#4310) 2022-07-26 15:30:53 +02:00
Oliver Stöneberg 887463855b
mitigated most clang-tidy warnings in headers (#4175) 2022-07-26 11:10:03 +02:00
chrchr-github 58d7185d64
Fix #10077 FP functionConst when overloaded operator ++ is used (#4309) 2022-07-26 08:30:59 +02:00
Oliver Stöneberg 0005be1dbf
some cleanups (#4308) 2022-07-26 08:28:55 +02:00
chrchr-github 15f8c71ec3
Fix #9946 FP: unassignedVariable when operator() is called subsequently (#4303) 2022-07-24 17:52:14 +02:00
chrchr-github 479533a80a
Rework fix for #11008 (#4296) 2022-07-24 12:15:04 +02:00
chrchr-github 1aceded300
Fix #10977 FP noExplicitConstructor with variadic template (#4301) 2022-07-24 10:18:19 +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
chrchr-github 0d72216cca
Fix BufferOverrun TODO (#4300)
* Fix BufferOverrun TODO

* clang-tidy
2022-07-22 07:24:34 +02:00
chrchr-github 79f091c59a
Fix uselessCallsConstructor TODOs (#4299)
* Fix uselessCallsConstructor TODOs

* Format
2022-07-21 22:15:16 +02:00
Daniel Marjamäki a7afaba21d SymbolDatabase: add BaseInfo::nameTok to dumpfile 2022-07-21 15:57:41 +02:00
chrchr-github 5342e2cd03
Fix #11037 FP knownConditionTrueFalse with dynamic_cast (#4297) 2022-07-20 20:48:17 +02:00
Oliver Stöneberg 4316884123
valueflow.cpp: avoid some copies related to `ErrorPath` (#4160) 2022-07-20 10:57:49 +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
Oliver Stöneberg f644938eb0
fixed Cppcheck version (#4292) 2022-07-19 20:42:19 +02:00
chrchr-github 5e537a666f
Fix --check-library warning for int(i) (#4293) 2022-07-19 20:41:18 +02:00
chrchr-github c736fe8787
Fix #11008 FP doubleFree with pointer in struct (#4294) 2022-07-19 20:41:08 +02:00
Daniel Marjamäki db155a59c1 Tokenizer: remove simplifyTokenList2 2022-07-18 16:20:36 +02:00
chrchr-github b08aabefee
Fix #9877 FP unreadVariable (incomplete code; missing macro definition) (#4278) 2022-07-17 19:40:39 +02:00
chrchr-github 4894cdab8f
Fix #11108 FP unreadVariable with unique_ptr and unknown c'tor (#4284)
* Fix #11108 FP unreadVariable with unique_ptr and unknown c'tor

* Fix test
2022-07-16 23:46:55 +02:00
chrchr-github b16d12b5fb
Improve check for wchar_t (#4285) 2022-07-16 23:46:10 +02:00
chrchr-github 109a031ec7
Fix #11195 Add redundantContinue check (#4283) 2022-07-16 16:02:58 +02:00
chrchr-github 9e74da6126
Fix #11098 FP compare with negated constant (#4282) 2022-07-16 07:28:15 +02:00
chrchr-github 53cd3dc665
Fix #10661 FP extern function reported as unused (#4279) 2022-07-14 20:59:58 +02:00
chrchr-github 2543dc97d2
Fix FP bitwiseOnBoolean (#4280) 2022-07-14 20:59:39 +02:00
chrchr-github 2c7d98626a
Fix FP leakNoVarFunctionCall with Qt object (#4272)
* Add missing <leak-ignore/>, test

* Fix qt.cfg, format

* Fix FP leakNoVarFunctionCall

* Format

* Delete memory, rule of five

* Missing include

* Avoid dependency

* explicit

* Fix Qt test case

* Fix typo

* Fix

* Add Q_OBJECT
2022-07-13 21:09:53 +02:00
chrchr-github 6eab3cb8bd
Fix #9788 ctu: false negative array index out of bounds for array arguments (#4277) 2022-07-13 21:08:51 +02:00
chrchr-github 49117f5aeb
Fix #7375 static_assert shouldn't be reported by --check-library (#4276)
* No need to check smart pointers, since they take template arguments

* Fix #7375 static_assert shouldn't be reported by --check-library
2022-07-13 21:08:43 +02:00
chrchr-github 21d992cc00
Fix crash on Windows with -j option (#4229)
* Fix crash on Windows with -j option

* Disable CI-cygwin workflow

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Try to fix Cygwin build

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Update CI-cygwin.yml

* Cygwin uses THREADING_MODEL_FORK

* Restore workflows

* Remove comment

* Fix dmake

* Fix #11179 FP invalidFunctionArgStr

* Revert "Fix #11179 FP invalidFunctionArgStr"

This reverts commit dd5d3e67c6.
2022-07-13 13:46:03 +02:00
Daniel Marjamäki b387ae80f1 Fixed whole program analysis 2022-07-12 22:58:52 +02:00
PKEuS f3565e1056
Improvement: Support member variables in CheckOther::checkIncompleteArrayFill() (#4205)
Merged from LCppC.
2022-07-12 19:43:48 +02:00
chrchr-github 381c38b2f5
Improve check: uselessCallsConstructor (#4270) 2022-07-12 17:40:14 +02:00
Oliver Stöneberg 22be5f29aa
fixed #11183 (checkLibraryFunction with parameter to "std::string()") / added rudimentary tests for `CheckFunctions::checkLibraryMatchFunctions()` / added test for #10105 (#4265) 2022-07-12 17:39:01 +02:00
Daniel Marjamäki a93c2c5263 cppcheck: keep ctu-info files if there is a cppcheck build dir 2022-07-12 10:14:37 +02:00
chrchr-github 47c2a01392
Fix #11166 inefficient way to remove last character from std::string (#4267)
* Fix #11166 inefficient way to remove last character from std::string

* Format

* Modify message, add test

* Format

* Fix another warning
2022-07-11 23:07:37 +02:00
chrchr-github c5dcd49dae
Fix #4233 FN: Bitwise operation with bool and int (#4266)
* Fix #4233 FN: Bitwise operation with bool and int

* Format
2022-07-11 22:58:37 +02:00
chrchr-github 8fc75402a1
Fix #11179 FP invalidFunctionArgStr (#4264) 2022-07-11 22:58:19 +02:00
chrchr-github f9337b725b
Fix nullptr deref (#4262)
* Fix some FNs related to c_str()

* Format, fix FP

* Fix nullptr deref

* Fix merge
2022-07-11 22:58:08 +02:00
Oliver Stöneberg e8b0f12367
replaced `if(MATCHES)` with `if(STREQUAL)` (#4263)
`MATCHES` does regular expression matching which is not the intended behavior here. `Clang` still requires it since it also needs to match `AppleClang.
2022-07-11 10:46:18 +02:00
Armin Müller 0ae9877766
Typos found by running "codespell" (#4260) 2022-07-10 22:40:05 +02:00
chrchr-github c218859418
Fix some FNs related to c_str() (#4258) 2022-07-10 11:38:01 +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
Oliver Stöneberg c36320747f
some `missingInclude`/`missingIncludeSystem` fixes and tests (#4027)
* do not emit `missingInclude` and `missingIncludeSystem` errors when not enabled / fixed and improved TestPreprocessor::inline_suppression_for_missing_include()

* testpreprocessor.cpp: added missing tests for `missingInclude` and `missingIncludeSystem`

* cppcheckexecutor.cpp: `missingIncludeSystem` was not emitted in normal analysis if `missingInclude` existed

* dmake

* added `run-dmake` as `testrunner` dependency
2022-07-09 23:21:11 +02:00
orbitcowboy c117f62926 Fixed zerodiv/moduloofone FNs for more math functions 2022-07-09 22:36:17 +02:00
orbitcowboy 8215521843 Fixed zerodiv/moduloofone FNs for more math functions 2022-07-09 19:59:16 +02:00
orbitcowboy ef47d34e75 Fixed zerodiv/moduloofone FNs for more math functions 2022-07-09 19:21:58 +02:00
orbitcowboy 0282c3a86e Fixed zerodiv/moduloofone FN for '1/std::expm1(0)' 2022-07-09 17:52:58 +02:00
orbitcowboy 07eeee1620 Fixed zerodiv FN for '1/std::exp2(0)' 2022-07-09 17:47:21 +02:00
orbitcowboy 048d31ec56 Fixed zerodiv FN for '1/std::erfc(42)' 2022-07-09 17:43:17 +02:00
orbitcowboy 87c1e6587a Fixed zerodiv FN for '1/std::erf(0)' 2022-07-09 17:38:28 +02:00
orbitcowboy c777cd5060 Fixed zerodiv FN for '1/std::ceil(0)' 2022-07-09 17:32:32 +02:00
orbitcowboy 41b6452604 Fixed zerodiv FN for '1/std::cbrt(0)' and added more test cases for other math functions 2022-07-09 17:28:15 +02:00
Paul Fultz II 6b72274c67
Evaluate math library functions in valueflow (#4255)
* Evaluate math library functions in valueflow

* Format
2022-07-09 07:40:32 +02:00
Paul Fultz II edebe746bc
Fix 10361: false negative: uninitvar (std::next(iterator)) (#4256) 2022-07-09 07:39:04 +02:00
Jens Yllman b246781da6
Try to stop range overflow in forwardRange() (#4235)
* Try to stop range overflow in forwardRange()

* Use predefinded function for check instead
2022-07-09 00:57:44 +02:00
Paul Fultz II 0b63e7273d
Fix 11162: FP: knownConditionTrueFalse (#4254)
* Fix 11162: FP: knownConditionTrueFalse

* Format
2022-07-09 00:57:25 +02:00
Oliver Stöneberg b51aea5531
separated process execution code into `ProcessExecutor` (#4249) 2022-07-08 16:42:57 +02:00
Tau c17e2b9826
Correctly interpret boolean literals in `execute()` (#4251)
* Correctly interpret boolean literals in `execute()`

* Add regeression test case for boolean literals
2022-07-08 12:39: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
chrchr-github 89a9e5ecc6
Fix #9944 FP: terminateStrncpy doesn't account for size check (#4252)
* Fix #9944 FP: terminateStrncpy doesn't account for size check

* Fix container size check

* Undo

* Format

* Rebuild

* Rebuild
2022-07-08 12:35:21 +02:00
Daniel Marjamäki a71a647c39 Fix syntax error 2022-07-07 19:45:47 +02:00
Daniel Marjamäki e1d3e6f72e Catch internal error during whole program analysis 2022-07-07 19:14:18 +02:00
Daniel Marjamäki d1812c8022 Cppcheck: Write product name if provided in xml output 2022-07-07 17:35:13 +02:00
Daniel Marjamäki 68bb724dcc ErrorLogger: do not allocate huge std::string when column is -1 2022-07-07 15:07:17 +02:00
Daniel Marjamäki b888f9cf92 use hash instead of checksum to check if content is changed 2022-07-07 12:16:01 +02:00
Daniel Marjamäki 29402b4d1a Fix Coverity CID1490221 warning. settings is dereferenced and then checked. 2022-07-05 07:46:39 +02:00
Daniel Marjamäki d8239b26f1 Tokenizer: Remove simplifyCalculations from simplifyTokenList2 2022-07-04 22:54:43 +02:00
chrchr-github 22aeeb1788
Fix ClangImport crash on Windows paths (#4246)
* Fix crash on Windows paths

* Fix test

* Enable fix

* Cut trailing ':'
2022-07-02 17:43:52 +02:00
chrchr-github 596f75e2af
Fix FP compareValueOutOfTypeRangeError (#4245)
* Fix FP compareValueOutOfTypeRangeError

* Remove suppressions
2022-07-01 10:48:32 +02:00
chrchr-github 27578e9c4c
Fix FP returnStdMoveLocal (#4244) 2022-06-30 13:50:31 +02:00
chrchr-github d8e64b4cbb
Fix FP leakNoVarFunctionCall (#4243)
* Fix #10857 FN: leakNoVarFunctionCall

* Fix TODO

* Fix #10858 FN: leakNoVarFunctionCall (if ( b && malloc ) )

* #11155 FN: leakNoVarFunctionCall (ternary operator)

* Fix #11157 FN: leakNoVarFunctionCall (switch condition)

* Fix FN constStatement

* Fix FP leakNoVarFunctionCall

* Fix FP leakNoVarFunctionCall

* Format

* Fix FP leakNoVarFunctionCall with unknown function

* Fix FP leakNoVarFunctionCall
2022-06-30 13:05:28 +02:00
chrchr-github 06b408ea20
Fix FP leakNoVarFunctionCall with unknown function (#4242)
* Fix #10857 FN: leakNoVarFunctionCall

* Fix TODO

* Fix #10858 FN: leakNoVarFunctionCall (if ( b && malloc ) )

* #11155 FN: leakNoVarFunctionCall (ternary operator)

* Fix #11157 FN: leakNoVarFunctionCall (switch condition)

* Fix FN constStatement

* Fix FP leakNoVarFunctionCall

* Fix FP leakNoVarFunctionCall

* Format

* Fix FP leakNoVarFunctionCall with unknown function
2022-06-29 13:43:17 +02:00
chrchr-github b90a726441
Fix FP leakNoVarFunctionCall (#4241)
* Fix #10857 FN: leakNoVarFunctionCall

* Fix TODO

* Fix #10858 FN: leakNoVarFunctionCall (if ( b && malloc ) )

* #11155 FN: leakNoVarFunctionCall (ternary operator)

* Fix #11157 FN: leakNoVarFunctionCall (switch condition)

* Fix FN constStatement

* Fix FP leakNoVarFunctionCall

* Fix FP leakNoVarFunctionCall

* Format
2022-06-29 07:22:26 +02:00
Paul Fultz II 185294499c
Adjust the severity of the uninitvar (#4234) 2022-06-28 22:52:35 +02:00
chrchr-github f8b796403b
Fix #11146 Crash in expandTemplate() (#4238) 2022-06-28 22:43:34 +02:00
Paul Fultz II a2f2699088
Refactor alias check in isExpressionChangeAt into isAlias function (#4223) 2022-06-28 22:40:59 +02:00
chrchr-github 2223cd24b9
Fix #11157 FN: leakNoVarFunctionCall (switch condition) (#4240)
* Fix #10857 FN: leakNoVarFunctionCall

* Fix TODO

* Fix #10858 FN: leakNoVarFunctionCall (if ( b && malloc ) )

* #11155 FN: leakNoVarFunctionCall (ternary operator)

* Fix #11157 FN: leakNoVarFunctionCall (switch condition)

* Fix FN constStatement

* Fix FP leakNoVarFunctionCall
2022-06-28 14:02:02 +02:00
chrchr-github cdeebc15ea
Fix #11155 FN: leakNoVarFunctionCall (ternary operator) (#4239)
* Fix #10857 FN: leakNoVarFunctionCall

* Fix TODO

* Fix #10858 FN: leakNoVarFunctionCall (if ( b && malloc ) )

* #11155 FN: leakNoVarFunctionCall (ternary operator)
2022-06-27 20:55:09 +02:00
chrchr-github e7e23e87c2
Fix #10858 FN: leakNoVarFunctionCall (if ( b && malloc ) ) (#4237)
* Fix #10857 FN: leakNoVarFunctionCall

* Fix TODO

* Fix #10858 FN: leakNoVarFunctionCall (if ( b && malloc ) )
2022-06-27 19:35:22 +02:00
chrchr-github 88bf11abba
Fix #10857 FN: leakNoVarFunctionCall (#4236)
* Fix #10857 FN: leakNoVarFunctionCall

* Fix TODO
2022-06-27 14:19:19 +02:00
chrchr-github 242afc389d
Fix #11148 Regression: Parameter \'ptr\' can be declared as pointer to const (#4233) 2022-06-25 21:42:55 +02:00
Daniel Marjamäki d204c5f894 Tokenizer: Cleanup stuff in simplifyTokenList2 2022-06-25 17:09:51 +02:00
chrchr-github 63e567eb50
Remove simplifyKnownVariables() (#4232)
* Remove simplifyKnownVariables()

* Add some test cases back

* Remove unused functions

* Format
2022-06-25 08:38:17 +02:00
chrchr-github 60c1eef659
Fix FP containerOutOfBounds with std::map (#4230) 2022-06-23 20:26:47 +02:00
chrchr-github f1212e66f7
Fix FP constVariable with 2D array. (#4228)
Test case #8717 was actually a FP as well.
2022-06-22 21:22:04 +02:00
Daniel Marjamäki 1d5166d70c CheckClass: Fix false negatives for uninitMemberVar 2022-06-21 19:28:08 +02:00
chrchr-github a658baf962
Fix #11143 FP: unreadVariable (remove simplifyMathExpressions()) (#4227)
* Fix #11143 FP: unreadVariable (remove simplifyMathExpressions())

* Remove unused function, tests
2022-06-21 15:42:23 +02:00
chrchr-github 0d4b4394bb
Fix FP with embedded zeros (#4226)
* Partial fix for #11137 FN: invalidFunctionArgStr printf argument

* Typo

* Remove <strz>, suppressions

* Add suppresion, remove <strz>

* Add suppressions

* Fix FP with embedded zeros

* Merge
2022-06-21 13:33:45 +02:00
chrchr-github de2509f1ac
Fix FP with complex array size expression (#4225)
* Partial fix for #11137 FN: invalidFunctionArgStr printf argument

* Typo

* Remove <strz>, suppressions

* Add suppresion, remove <strz>

* Add suppressions

* Fix FP with complex array size expression
2022-06-21 00:12:11 +02:00
chrchr-github 5b9fa9657d
Partial fix for #11137 FN: invalidFunctionArgStr printf argument (#4224)
* Partial fix for #11137 FN: invalidFunctionArgStr printf argument

* Typo

* Remove <strz>, suppressions

* Add suppresion, remove <strz>

* Add suppressions
2022-06-20 20:02:22 +02:00
orbitcowboy ff50a01d36 Fixed handling of PCRE rules, since 'simple' rules have been removed already, set default to 'normal'-tokenlist. 2022-06-20 09:17:11 +02:00
PKEuS 9eb16e1002
Replaced check for pipe() buffer size by ordinary CheckBufferOverrun, provide required Library configuration option (#4183)
Merged from LCppC.
2022-06-19 12:01:55 +02:00
Daniel Marjamäki 6873f5237b Tokenizer: removing more stuff from simplifyTokenList2 2022-06-19 10:41:15 +02:00
Paul Fultz II e735376f7d
Refactor to use AST for isContainerSizeChanged (#4222) 2022-06-19 08:17:05 +02:00
Paul Fultz II e6fdcb9de2
Refactor to use derefShared (#4220) 2022-06-19 08:16:27 +02:00
Paul Fultz II 2a0b2f538e
Check tokType in match compiler (#4219)
* Check tokType in match compiler

* Set keyword when tokenlist is missing
2022-06-18 21:30:42 +02:00
Daniel Marjamäki a7815ed5b0 Tokenizer: Remove more stuff from simplifyTokenList2 2022-06-18 07:31:36 +02:00
Daniel Marjamäki aa8c17a701 Tokenizer: remove stuff from simplifyTokenList2 2022-06-17 09:44:58 +02:00
Paul Fultz II 3612ddb3f5
Fix unit test failure (#4218) 2022-06-17 07:49:45 +02:00
Daniel Marjamäki 968d8d153e Fixed #11101 (False positive: derived union members are initialized in constructor) 2022-06-16 20:17:57 +02:00
Paul Fultz II 3e09503561
Fix 11087: false negative: usage of reference to member of temporary object not detected (#4217)
* Fix 11087: false negative: usage of reference to member of temporary object not detected

* Format

* Add another test case

* Fix FP with pointer

* Format
2022-06-16 19:26:36 +02:00
Paul Fultz II 9cecc8468e
Fix 10570: Improve check; condition then pointer dereference, different pointers (#4216)
* Try to use after assign in loop

* Update valueflow forward to handle init tokens

* Fix tests

* Make test TODO

* Format

* Add tests

* Format

* Fix ubsan error

* Use simpleMatch
2022-06-16 19:26:23 +02:00
Paul Fultz II de51ebbcf4
Fix 9135: Access of moved variable not detected in loop (#4215)
* Fix 9135: Access of moved variable not detected in loop

* Format

* Fix issue with pushing back on container

* Format

* Fix null pointer

* Remove yeild for now
2022-06-16 17:40:09 +02:00
Daniel Marjamäki dbb12cb333 Tokenizer: Remove some functions from simplifyTokenList2 2022-06-16 14:06:07 +02:00
Paul Fultz II 46fcdca5ee
Add debug_valuetype intrinsic (#4210) 2022-06-15 21:25:55 +02:00
chrchr-github 176eefcbf3
Fix #10655 FN bitwiseOnBoolean with unseen function (#4214) 2022-06-14 23:08:17 +02:00
chrchr-github 6d22d6a8ae
Fix FP unusedVar with side effects in destructor (#4212) 2022-06-14 09:55:22 +02:00
Daniel Marjamäki 343d04feb4 Tokenizer: Remove simplifyCharAt from simplifyTokenList2 2022-06-12 15:14:48 +02:00
Daniel Marjamäki 8255e32540 cppcheck build dir: do not produce invalid dump file if code is unchanged and checking is skipped. 2022-06-12 11:08:28 +02:00
Paul Fultz II d4fb5652c0
Fix 10619: Valueflow: Library function in subfunction does not propagate all values (#4209) 2022-06-12 07:17:28 +02:00
Paul Fultz II bd63534a1c
Fix 10740: valueflow; conditional value. incremented value is oob. (#4208) 2022-06-12 07:16:28 +02:00
Paul Fultz II cee48e5e19
Add backtrace to valueflow in debug mode (#4195) 2022-06-12 07:13:42 +02:00
Rikard Falkeborn 187460a277
Library: Replace auto with real types (#4207)
Following up on fc6c203b0e, replace auto with the correct types to
clairfy the code. Note the use of const on the first type in the pair,
which allows us to use a reference.
2022-06-11 23:21:25 +02:00
chrchr-github ecb24e28bc
Fix #10191 FP redundantCopyLocalConst - referenced variable changes (#4202) 2022-06-11 16:58:33 +02:00
PKEuS cb382ac52c
C++20 support: Support consteval and constinit (#4203)
Backported from LCppC.
2022-06-11 15:28:20 +02:00
Rikard Falkeborn fc6c203b0e
Library: Use range-based for loops (#4200) 2022-06-11 13:51:55 +02:00
Paul Fultz II 8945c151f5
Fix 11124: FP knownConditionTrueFalse with fruit (#4196)
* Update valueType

* Allow comparisons

* Fix compare op

* Add test

* Format

* Fix FP

* Format
2022-06-11 11:02:04 +02:00
chrchr-github 8579feb3aa
Fix #10545 FP redundantCopyLocalConst with modified object [inconclusive] (#4197)
* Fix  #10545 FP redundantCopyLocalConst with modified object [inconclusive]

* Comment
2022-06-11 11:01:23 +02:00
Paul Fultz II 653a1ea83e
Fix 11100: FP knownConditionTrueFalse with getter/setter member functions (#4198)
* Fix 11100: FP knownConditionTrueFalse with getter/setter member functions

* Format
2022-06-11 11:00:40 +02:00
PKEuS 82af702c6f
LCppC backport: Restored Check: Detect negative VLA and allocation (new[]) sizes (#4187) 2022-06-11 09:55:38 +02:00
Daniel Marjamäki 533b3e2bcb Tokenizer: Clarify code. The variableMap.find, variableMap.end was not strictly matching. 2022-06-11 09:47:06 +02:00
PKEuS 99ce89c003
Improvement: Set varId for variables with global scope operator :: Refactorization: Moved internal class from tokenize.h to tokenize.cpp (#4184)
Merged from LCppC.
2022-06-11 08:11:16 +02:00
Paul Fultz II c9b85010f9
Fix 11096: FP knownConditionTrueFalse in do while loop (#4192)
* Check for loop

* Improve handling of exit values

* Add more checks to test

* Simplify

* Remove unnecessary test

* Fix typo

* Format

* Use simpleMatch
2022-06-10 20:42:02 +02:00
chrchr-github 829ca9ab7f
Fix #10935 FP: compareBoolExpressionWithInt with enum and template parameter (#4193) 2022-06-10 20:40:37 +02:00
chrchr-github 51c8630bb3
Fix #10618 FP knownConditionTrueFalse with virtual function (#4194)
* Fix #10618 FP knownConditionTrueFalse with virtual function

* Remove redundant check
2022-06-10 20:17:57 +02:00
Daniel Marjamäki 375880988c Tokenizer: remove removeRedundantAssignment from simplifyTokenList2 2022-06-10 12:35:05 +02:00
chrchr-github 90392faa2b
Fix crash on nullptr deref (#4189) 2022-06-09 18:25:17 +02:00
Daniel Marjamäki a76ba698c2 Tokenizer: remove simplifyCompoundAssignment from simplifyTokenList2 2022-06-09 07:38:27 +02:00
Daniel Marjamäki c0f3d5b2fb Tokenizer: remove simplifyAssignmentInFunctionCall used in simplifyTokenList2 2022-06-08 19:08:18 +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
PKEuS 4bd189c3c8
Refactorization: Faster calculation of CRC32 by avoiding to create a temporary string. Use proper types in checksum functions. (#4180)
Merged from LCppC
2022-06-08 16:55:06 +02:00
PKEuS 898a3a25a1
ValueType: Added additional unit test (#4185)
Removed unnecessary library export

Backported from LCppC.
2022-06-08 15:27:56 +02:00
PKEuS d20ea41325
Refactorization: Removed compatibility hacks for outdated or non-conformant compilers (#4186)
Merged from LCppC.
2022-06-08 15:16:01 +02:00
PKEuS 44097b59ff
Implemented error handling in cppcheck::Platform::loadFromXmlDocument(), enabled related unit test (#8409) (#4181) 2022-06-08 12:35:23 +02:00
Daniel Marjamäki 86a8d88729 Tokenizer: Remove simplification of math functions from simplifyTokenList2 2022-06-08 09:58:11 +02:00
chrchr-github bb3f490edd
Fix #11090 Infinite recursion in findTypeInBase() (#4178) 2022-06-08 09:20:16 +02:00
Oliver Stöneberg 9367be804e
fixed `modernize-use-equals-delete` warnings in headers (#4177) 2022-06-07 21:25:23 +02:00
chrchr-github 69834d537b
Fix #9997 False negative: variable is not used (#4104) 2022-06-07 21:20:33 +02:00
chrchr-github 1d677c57a8
Fix #11126 FN: noExplicitConstructor with single default parameter (#4174) 2022-06-07 21:15:13 +02:00
chrchr-github b80d06b69e
Don't warn for 'x | MACRO' when MACRO is 0 (#4176) 2022-06-07 21:13:31 +02:00
chrchr-github 52453947c8
Don't warn for 'x | 0' in macro (#4172)
* Fix #11082 FN badBitmaskCheck for binary or with 0

* Add test for #10703

* Don't warn for 'x | 0' in macro

* Add test for #10876
2022-06-06 11:17:36 +02:00
chrchr-github f962436826
Fix #11082 FN badBitmaskCheck for binary or with 0 (#4170)
* Fix #11082 FN badBitmaskCheck for binary or with 0

* Add test for #10703
2022-06-04 17:25:10 +02:00
orbitcowboy 433ce58fe6 Fixed FP found with daca@home: ftp://ftp.de.debian.org/debian/pool/main/libs/libslirp/libslirp_4.7.0.orig.tar.bz2; head libslirp-v4.7.0/src/tftp.c:336:20: error: Invalid strcasecmp() argument nr 1. A nul-terminated string is required. [invalidFunctionArgStr] 2022-06-04 12:00:54 +02:00
orbitcowboy 1c1c72058f Fixed FP found with daca@home: ftp://ftp.de.debian.org/debian/pool/main/libs/libslirp/libslirp_4.7.0.orig.tar.bz2; head libslirp-v4.7.0/src/tftp.c:336:20: error: Invalid strcasecmp() argument nr 1. A nul-terminated string is required. [invalidFunctionArgStr] 2022-06-04 07:46:28 +02:00
Oliver Stöneberg ce945ec7fc
enabled and fixed `modernize-use-override` clang-tidy warnings (#4168) 2022-06-03 21:32:39 +02:00
chrchr-github e6f2929fac
Fix #11085 FN constVariable with range-based for (#4118) 2022-06-03 19:24:59 +02:00
Oliver Stöneberg cc08a661e6
astutils.h: reserve `std::vector` space in `visitAstNodes()` to avoid excess allocations (#4158) 2022-06-03 19:21:17 +02:00
orbitcowboy 00abf21d40 Format 2022-06-03 18:59:43 +02:00
orbitcowboy a74bb485b0 Fixed TODO_ASSERT 2022-06-03 18:59:09 +02:00
orbitcowboy 6680bf9790 Fixed TODO_ASSERT 2022-06-03 18:35:11 +02:00
Oliver Stöneberg d36e05af28
enabled and fixed `modernize-use-emplace` clang-tidy warnings (#4165)
* enabled and fixed `modernize-use-emplace` clang-tidy warnings

* avoid unnecessary creation of temporaries in `emplace_back()` calls
2022-06-03 15:09:29 +02:00
chrchr-github 111f4e17da
Fix #11117 FP nullPointerArithmetic when adding 0 (#4167) 2022-06-03 13:11:54 +02:00
orbitcowboy 1a4bd0a7b3 Fixed FP, found with daca@home: ftp://ftp.de.debian.org/debian/pool/main/k/knot/knot_3.1.8.orig.tar.xz; knot-3.1.8/tests/knot/test_confio.c:301:18: error: Invalid strcmp() argument nr 2. A nul-terminated string is required. [invalidFunctionArgStr] 2022-06-03 13:10:45 +02:00
orbitcowboy 7dac213734 Removed useless parentheses 2022-06-03 10:50:07 +02:00
orbitcowboy 9b0f41e1a0 Revert change 3dfe9eff3e (commitcomment-75236431). 2022-06-03 10:22:29 +02:00
orbitcowboy c24edc528e astutils.cpp: Removed useless parentheses 2022-06-03 00:18:35 +02:00
orbitcowboy 3dfe9eff3e astutils.cpp: Improved const correctness 2022-06-03 00:07:15 +02:00
Paul Fultz II 72342de0da
Fix 11114: FP knownConditionTrueFalse across functions (#4163)
* Fix 11114: FP knownConditionTrueFalse across functions

* Format
2022-06-02 23:24:11 +02:00
orbitcowboy 67795cdfcf
Fixed FPs from Ticket 11119 - invalidFunctionArgStr with null-terminated strings (#4164)
* Fixed first FP from #11119 - invalidFunctionArgStr with null-terminated strings

* Fixed second test case from #11119.

* Fixed another FP, found on daca@home ftp://ftp.de.debian.org/debian/pool/main/g/glhack/glhack_1.2.orig.tar.gz.

* Format
2022-06-02 19:30:29 +02:00
orbitcowboy 58460edaf8 Fixed crash due to missing null pointer check. 2022-06-02 11:32:55 +02:00
orbitcowboy 7275350f3e Combined consecutive Token::simpleMatch() calls 2022-06-02 07:27:19 +02:00
orbitcowboy 3b2509c9cc Fixed failing self-check: style: Call to 'Token::previous()' followed by 'Token::tokAt()' can be simplified. [redundantNextPrevious] 2022-06-02 07:16:09 +02:00
orbitcowboy 886b5d1039 Improved invalidFunctionArgStr checking and detect more cases where a NON-null-terminated string is used to call functions, configured with <strz/>. 2022-06-02 01:09:09 +02:00
chrchr-github cd7362e0e7
Fix FN with default init (#4162)
* Fix #11099 FP: variableScope when using range constructor to vector

* Format

* Fix FN with default init
2022-06-01 23:18:59 +02:00
chrchr-github 2452a2c01d
Fix #11099 FP: variableScope when using range constructor to vector (#4161)
* Fix #11099 FP: variableScope when using range constructor to vector

* Format
2022-06-01 21:15:41 +02:00
Paul Fultz II e430a11b49
Add debug_valueflow instrinsic to show valueflow values and its error path (#4159)
* Add debug_valueflow instrinsic to show valueflow values and its error path

* Format
2022-06-01 06:53:21 +02:00
Oliver Stöneberg 40bcbd47d6
small `Token::Match()` optimizations (#4154)
* token.cpp: fixed `readability-else-after-return` warnings in `Match()`

* token.cpp: removed some duplicated code from `Match()`

* token.cpp: use `strchr()` instead of loop in `Match()`

* token.cpp: added early exit and removed unnecessary loop condition in `Match()`
2022-05-31 13:52:34 +02:00
Oliver Stöneberg 3d5d2e8fd8
inlined `findAstNode()` calls (#4146) 2022-05-31 13:37:21 +02:00
chrchr-github 423e67bd6a
Fix FP memleak (#4145) 2022-05-30 06:55:15 +02:00
Paul Fultz II d7c914bd3e
Handle subfunction values in valueflow conditions (#4128) 2022-05-29 19:57:10 +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 e1c51940a2
Fix #11095 FP constParameter with decremented pointer (#4131) 2022-05-28 08:32:58 +02:00
chrchr-github 16a4449901
Fix crash with statement expression (#4142) 2022-05-28 00:11:23 +02:00
chrchr-github 16af6561c2
Fix FP memleak with unknown ptr typedef (#4141)
* Fix #11019 FN memleak with redundant pointer op

* Style

* Fix #7705 FN: Memory leak not detected on struct member

* Fix FP memleak with function call, fix cppcheckError

* Fix FP memleak with array

* Fix FPs memleak with array and ptr to ptr

* Fix FP memleak with unknown ptr typedef

* Format
2022-05-27 23:52:56 +02:00