Commit Graph

13084 Commits

Author SHA1 Message Date
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