Daniel Marjamäki
c2b514dc45
ExprEngine: Throw exception if assignment in loop is not handled
2019-10-10 11:12:36 +02:00
orbitcowboy
a9386fa093
Running astyle [ci skip]
2019-10-10 08:17:41 +02:00
Paul Fultz II
a5c6ae1e08
Fix issue 9400: FP returnTempReference - triggered by cast ( #2259 )
2019-10-10 06:52:11 +02:00
Daniel Marjamäki
0c1e979af7
SymbolDatabase: Refactor handling of variable declarations in if condition
2019-10-09 22:27:48 +02:00
Daniel Marjamäki
5b9bc4918e
ExprEngine: Better error output when solver fails
2019-10-09 22:16:30 +02:00
Daniel Marjamäki
63bd182e83
ExprEngine: Adapt to z3 handling of bool/int expressions
2019-10-09 20:18:17 +02:00
Daniel Marjamäki
9f4db5018d
SymbolDatabase: Added testcase for variable in if-scope
2019-10-09 16:41:07 +02:00
Daniel Marjamäki
3776604f06
SymbolDatabase: Add variable in if condition 'if (auto x = bar())'
2019-10-09 15:55:54 +02:00
Daniel Marjamäki
273a1a7402
ExprEngine: Fix FP for 'int' overflows
2019-10-09 11:24:57 +02:00
Sebastian
b7e48a9b27
Fix #9399 (Build Failure on x86: error: unknown type name '__int128_t') ( #2254 )
...
https://stackoverflow.com/questions/16088282/is-there-a-128-bit-integer-in-gcc
suggests to test for __SIZEOF_INT128__. This test is added now and
Cppcheck now also compiles for a 32 bit target with the expected
warning that there is no 128-bit integer. "make test" also works.
2019-10-09 10:25:21 +02:00
Daniel Marjamäki
ab6354754f
ExprEngine: Catch z3::exception and print message
2019-10-09 09:42:18 +02:00
Daniel Marjamäki
c04e25e936
Revert " #9391 Detecting uninited member variables with default ctor ( #2249 )"
...
This reverts commit 08bc369296
.
2019-10-09 08:17:47 +02:00
Daniel Marjamäki
b27fe83da4
ExprEngine: Handle << and >>
2019-10-08 21:38:10 +02:00
Daniel Marjamäki
3e50150dbf
ExprEngine: Fix the checking for integer overflows
2019-10-08 20:13:25 +02:00
blacktea
08bc369296
#9391 Detecting uninited member variables with default ctor ( #2249 )
2019-10-08 19:33:07 +02:00
IOBYTE
c98732dd8b
fix using type aliases in out of class destructors ( #2250 )
2019-10-08 19:30:41 +02:00
Daniel Marjamäki
1abf70a7cb
SymbolDatabase: Add null pointer check for ast operand for '(' token
2019-10-08 17:53:29 +02:00
Steve Mokris
506a952ad2
Parse `extern "C"`, and use it to avoid FP reference warnings ( #2234 )
...
Previously, cppcheck discarded the `extern "C"` specifier. This patch modifies cppcheck to parse each as a Scope in the symbol database, then uses that scope to avoid false positives when making recommendations about changing a function argument to be a reference (since variable references is a C++ feature, unavailable in C, and thus unavailable in `extern "C"`).
2019-10-08 17:48:09 +02:00
Daniel Marjamäki
9f40341ba8
SymbolDatabase: Hardcoded handling for std::make_shared and std::make_unique , todo: library configuration would be better than hard coding
2019-10-08 17:19:24 +02:00
Daniel Marjamäki
79356b1883
SymbolDatabase: Better ValueType handling of 'LibraryType(..)'
2019-10-08 11:25:05 +02:00
Paul Fultz II
4eb4762d95
Extend lifetime checking to temporaries ( #2242 )
...
* Use lifetimes to check for returning reference to temporaries
* Check for dangling temporaries
* Check for unknown types for returining by reference
* Remove old returnTemporary check
* Format
* Check for deref op
* Ternary operator return an lvalue reference
* Warn when returning temporaries from member functions
* Improve handling of pointer to function
* Extend lifetimes of const references
2019-10-08 09:28:39 +02:00
Daniel Marjamäki
21774cbdc4
ExprEngine: Handle while/for loops
2019-10-07 17:45:06 +02:00
Daniel Marjamäki
d82b1b29ce
ExprEngine: Initial handling of switch
2019-10-06 19:58:51 +02:00
Daniel Marjamäki
05aae9569b
ExprEngine: Execute false execution path even if there is no else, upon Z3 exception assume that value is in range (safe option)
2019-10-06 18:26:40 +02:00
Daniel Marjamäki
6c0c9ba6d3
ExprEngine: Handle 'break' and 'while (0);'
2019-10-06 17:43:30 +02:00
Daniel Marjamäki
dcf8a7213f
ExprEngine: ExprData::getConstraintExpr
2019-10-06 14:47:50 +02:00
IOBYTE
78b9fd9bb9
Fix #9383 ("debug: Function::addArguments found argument 'x' with varid 0." with variadic templates) ( #2238 )
2019-10-06 12:45:42 +02:00
Daniel Marjamäki
3c085fd88a
Fixed #9359 (SymbolDatabase: function lookup fails when -funsigned-char is used)
2019-10-06 12:05:58 +02:00
Tyson Nottingham
0950a97df2
Fix false negatives in checkBitwiseOnBoolean ( #2220 )
...
* Fix false negatives in checkBitwiseOnBoolean
Use AST-based tests in favor of token-based tests for greater coverage.
* Travis: add suppressions for bitwiseOnBool
2019-10-06 09:57:31 +02:00
Daniel Marjamäki
b97436e8f8
Fixed #9382 (Hang: CheckLeakAutoVar pellepl/spiffs/src/spiffs_hydrogen.c)
2019-10-06 09:52:05 +02:00
IOBYTE
8f46bb3ef6
fix #9392 (SymbolDatabase: Weird default constructor outside class) ( #2243 )
2019-10-06 07:21:12 +02:00
Daniel Marjamäki
7294145797
SymbolDatabase: set value type for std::move()
2019-10-05 19:57:52 +02:00
Daniel Marjamäki
4e525e52ec
ExprEngine: Avoid endless recursion for struct members that have struct type
2019-10-05 18:29:41 +02:00
Daniel Marjamäki
e686699294
ExprEngine: Fix ExprEngin::IntRange::isIntValueInRange
2019-10-05 16:33:40 +02:00
Daniel Marjamäki
954e98cc03
astyle formatting
...
[ci skip]
2019-10-05 16:32:43 +02:00
Paul Fultz II
cf1c766292
Fix issue 9317: False positive returnDanglingLifetime when using reference to constant inside if statement ( #2241 )
2019-10-05 16:32:20 +02:00
Paul Fultz II
6b6553e320
Dont warn for arrays that are containers ( #2240 )
2019-10-05 16:14:30 +02:00
IOBYTE
46f3f58e5f
Fix #9388 ("debug: Executable scope 'x' with unknown function." with alias used in initialization list) ( #2239 )
2019-10-05 09:34:37 +02:00
Daniel Marjamäki
fcccd5f42e
ExprEngine: Small tweaks
2019-10-04 17:58:18 +02:00
IOBYTE
c32a568c1f
fix #8965 ("(debug) Executable scope 'x' with unknown function." with rvalue parameter in method) ( #2237 )
...
I fixed the AST enough to pass testrunner but I don't believe it is
correct.
This code:
void Foo4(int&&b);
has this AST:
( 'void'
|-Foo4
`-&& 'bool'
|-int
`-b 'signed int'
but I don't believe && should have `bool`.
2019-10-04 12:30:11 +02:00
IOBYTE
50d82763fc
Fix #9385 ("debug: Executable scope 'func' with unknown function" with parameter in member function) ( #2235 )
2019-10-03 21:13:03 +02:00
Daniel Marjamäki
f80d387374
ExprEngine: Arrays if-then-else
2019-10-03 20:16:06 +02:00
Daniel Marjamäki
555890fdfa
ExprEngine: Removed NullPointerDereference checker for now.
2019-10-03 19:24:14 +02:00
IOBYTE
3e17c24dd8
fix syntax error on template operator ( #2225 )
2019-10-03 12:26:45 +02:00
Paul Fultz II
997803869d
Forward values after assignment in valueFlowReverse ( #2226 )
...
* Forward values after assignment in valueFlowReverse
* Rename variables
* Format
2019-10-03 09:58:57 +02:00
Daniel Marjamäki
b79283306f
ExprEngine: Rename Data::conditions => Data::constraints
2019-10-03 08:48:05 +02:00
Daniel Marjamäki
d916379f9f
ExprEngine: Better handling of if/else
2019-10-02 21:47:00 +02:00
Daniel Marjamäki
7ab22c7176
ExprEngine: Use smt solver Z3
2019-10-02 17:59:04 +02:00
IOBYTE
4ba00d0694
Fix #9381 (alias in namespace not replaced in method declaration) ( #2232 )
2019-10-02 08:11:04 +02:00
Daniel Marjamäki
cf965b72b5
SymbolDatabase: look for functions in anonymous namespaces in the findFunction
2019-10-01 19:09:34 +02:00
Daniel Marjamäki
07b337c580
Removed extra zero division heuristics, they seem redundant as ValueType is used
2019-10-01 17:33:58 +02:00
orbitcowboy
f05e21efa8
Formatted the code, there are no functional changes [ci skip].
2019-10-01 08:39:08 +02:00
Paul Fultz II
166bd2bafc
Fix issue 2153: valueFlowAfterCondition: struct member ( #2228 )
...
* Fix issue 2153: valueFlowAfterCondition: struct member
* Fix null pointer dereference
* Formatting
* Check for another null pointer
* Initialize variables
* Remove redundant condition
* Format
* Add missing initialization to copy constructor
* Format
2019-09-30 21:04:43 +02:00
Armin Müller
b4af8bdc2e
Typos found by running "codespell" ( #2227 )
2019-09-29 21:23:19 +02:00
Daniel Marjamäki
1ccc303602
ExprEngine: Simplify array value if possible, ensure each array data has a unique name
2019-09-29 21:20:57 +02:00
Daniel Marjamäki
03ff32993e
Fixed Cppcheck warning
2019-09-29 17:32:26 +02:00
Daniel Marjamäki
1979b64170
ExprEngine: Bailout when for|while|switch is seen
2019-09-29 17:28:12 +02:00
Daniel Marjamäki
69a54b0ee9
Library: added 'stdtype' attribute in <podtype> element so we can configure standard types better
2019-09-29 16:48:25 +02:00
Daniel Marjamäki
40c3e68e07
ExprEngine: Add --debug-verify, fixed handling of global arrays
2019-09-29 15:00:54 +02:00
Daniel Marjamäki
60e1cf8b8d
ExprEngine: Fix NULL pointer dereference tests
2019-09-29 08:26:09 +02:00
Daniel Marjamäki
2dc477571c
Fix gcc compiler warnings
2019-09-28 20:50:56 +02:00
Oliver Stöneberg
1fa4df419a
avoid some unnecessary copies in emplace_back() calls ( #2194 )
2019-09-28 20:22:46 +02:00
Daniel Marjamäki
3f587bef65
ExprEngine: Add some CWE476 (Null pointer dereference) checks
2019-09-28 19:28:12 +02:00
Daniel Marjamäki
1acd78a038
ExprEngine: Translate uninitialized values to value ranges
2019-09-28 16:16:36 +02:00
Daniel Marjamäki
2e5d663ae9
ExprEngine: Handle void* -> int* casts better
2019-09-28 15:40:00 +02:00
Daniel Marjamäki
4138bf7fb3
SymbolDatabase: Better handling when return type of function is PodType
2019-09-28 14:57:41 +02:00
Daniel Marjamäki
f6c0550c41
ExprEngine: Do not bailout if function type is not known if the result is not used anyway
2019-09-28 11:55:06 +02:00
Daniel Marjamäki
b2239f04ba
ExprEngine: Improve 'division by zero' warning
2019-09-28 11:03:20 +02:00
Daniel Marjamäki
0de3e76b2d
ExprEngine: Clarify when analysis is aborted
2019-09-28 10:59:28 +02:00
Daniel Marjamäki
a3cad7fa51
Fix Coverity warning CID 1405837; negative bit shift
2019-09-28 06:34:51 +02:00
SimonCornell1
6453a85363
Fix the following compilation error on VC142 : ( #2224 )
...
Error C2039 'inserter': is not a member of 'std' cppcheck C:\Users\simon\__Si\git_projects\cppcheck\lib\astutils.cpp 1229
2019-09-28 06:24:32 +02:00
Daniel Marjamäki
8b8701d078
ExprEngine: Cleanup output when variable declaration and initialization is separated
2019-09-27 21:03:47 +02:00
Daniel Marjamäki
398cfc1f5a
ExprEngine: Create array value in struct
2019-09-27 18:58:49 +02:00
Daniel Marjamäki
2b4fe66908
Try to make Travis happy
2019-09-27 16:13:43 +02:00
Daniel Marjamäki
f7a8075001
ExprEngine: Disable integerOverflow check
2019-09-27 15:07:56 +02:00
Daniel Marjamäki
7ea8b69235
ExprEngine: Robustness
2019-09-27 14:36:33 +02:00
Daniel Marjamäki
69016e38bc
ExprEngine: Add a temporary overflow check
2019-09-27 14:20:17 +02:00
Daniel Marjamäki
8ccbdfe725
ExprEngine: Better output
2019-09-27 13:30:09 +02:00
Daniel Marjamäki
71aa9a531a
ExprEngine: Create symbolic expression for string arguments
2019-09-27 13:12:16 +02:00
Daniel Marjamäki
7f64faae99
Virtual Destructors: Base class must have virtual destructor no matter if derived class has a destructor or not. There is UB according to paragraph 3 in [expr.delete].
2019-09-27 09:55:56 +02:00
Rikard Falkeborn
0111b4afdc
Silence unused variable warning ( #2223 )
2019-09-27 08:19:45 +02:00
Daniel Marjamäki
350363616c
Fix Cppcheck naming convention
2019-09-27 08:17:46 +02:00
Daniel Marjamäki
dffae8f7d9
Try to make Travis happy
2019-09-26 21:43:29 +02:00
Daniel Marjamäki
371babc322
ExprEngine: Improved handling of structs
2019-09-26 21:35:29 +02:00
Daniel Marjamäki
f47aaed21e
ExprEngine: Improve output
2019-09-26 21:00:36 +02:00
Daniel Marjamäki
f1b42fe05c
ExprEngine: Extend output
2019-09-26 20:49:03 +02:00
Daniel Marjamäki
2e1cbbeb14
ExprEngine: Fix output for StructValue
2019-09-26 19:39:30 +02:00
IOBYTE
d0968a1377
Warn about unknown macro causing template syntax error ( #2222 )
2019-09-26 16:01:01 +02:00
Daniel Marjamäki
cd816f42eb
ExprEngine: fix code for float comparisons
2019-09-26 12:13:14 +02:00
Daniel Marjamäki
b55c587ab2
astyle formatting
...
[ci skip]
2019-09-26 10:32:49 +02:00
Paul Fultz II
597d0fa35b
Support expression in valueFlowAfterCondition ( #2219 )
...
* Add valueFlowForwardExpression function to forward values of an expression
* Use token for expression
* Fix name in bailout message
* Handle expressions
* Add more tests for more expressions
* Add more tests
* Solve the expression if possible
* Formatting
2019-09-26 10:32:25 +02:00
IOBYTE
4475c4c7e2
template simplifier: fix syntax error ( #2218 )
2019-09-26 10:31:19 +02:00
Daniel Marjamäki
d7d22f51b7
ExprEngine: Minor output cleanup
2019-09-26 10:07:31 +02:00
Daniel Marjamäki
c5302d20a3
ExprEngine: ConditionalValues, output symbolic expressions
2019-09-26 10:03:58 +02:00
Rikard Falkeborn
4dbf006dc7
Fix severity of c++14 shifts with too many bits ( #2213 )
...
For c++14, shifting a variable with a value larger than or equal to the
number of bits in the variable is undefined. Left-shifting with a value
equal to the number of bits of the variable is implementation defined.
See also trac ticket #9306 .
2019-09-25 20:16:04 +02:00
Daniel Marjamäki
9e76630a4b
ExprEngine: Restructure handling of arrays to handle dynamic buffers better
2019-09-25 18:33:21 +02:00
Oliver Stöneberg
eac040a00b
Various clang-tidy fixes ( #2192 )
...
* use range loops
* removed redundant string initializations
* use nullptr
* use proper boolean false
* removed unnecessary continue from end of loop
* removed unnecessary c_str() usage
* use emplace_back()
* removed redundant void arguments
2019-09-25 15:25:19 +02:00
Tyson Nottingham
ca5f2562fc
Fix false negatives in checkIncrementBoolean ( #2210 )
...
Detect incrementing boolean expressions involving pointer dereferences,
array element accesses, etc.
2019-09-25 13:07:39 +02:00
IOBYTE
12f93b63a8
template simplifier: fix simplification of "< %num% %comp% %num% >" ( #2214 )
...
* template simplifier: fix simplification of "< %num% %comp% %num% >"
* fix test to not fail on 32 bit platforms
2019-09-25 12:06:29 +02:00
Daniel Marjamäki
0011fb5a36
ExprEngine: Temporary hardcoding for calloc
2019-09-24 22:22:16 +02:00
Daniel Marjamäki
7cf8327b31
ExprEngine: Sign extension in truncateValue
2019-09-24 20:31:12 +02:00
Daniel Marjamäki
0471e74489
ExprEngine: Handle char literals
2019-09-24 20:11:07 +02:00
Daniel Marjamäki
1769af4a6c
ExprEngine: Passing variable address to function
2019-09-24 19:53:33 +02:00
Daniel Marjamäki
ba035074f0
ExprEngine: Extended value truncation
2019-09-24 13:28:14 +02:00
Paul Fultz II
0df4876059
Fix issue 9367: FP knownConditionTrueFalse ( #2209 )
2019-09-24 08:15:03 +02:00
Daniel Marjamäki
c1ff3419a6
ExprEngine: Value truncation
2019-09-23 20:28:12 +02:00
Paul Fultz II
1616282f6b
Use fixed number of iterations for valueflow loop ( #2205 )
2019-09-23 19:35:39 +02:00
Daniel Marjamäki
9025b47f82
ExprEngine: some handling of NULL pointer
2019-09-23 18:10:06 +02:00
Paul Fultz II
a903aa7070
Fix issue 9351: false negative: (style) Condition '...' is always true ( #2201 )
2019-09-23 08:49:04 +02:00
Rikard Falkeborn
bb5ac32872
Fix #7031 (improve error message for memory related warnings) ( #2204 )
...
Printout both the locations on double free errors, mismatching
alloc/dealloc and dealloc return error.
2019-09-22 21:50:02 +02:00
Daniel Marjamäki
28d13e7567
ExprEngine: Implement basic float handling
2019-09-22 21:14:36 +02:00
Rikard Falkeborn
df800e35d4
Fix memleak FP with return with parenthesis ( #2202 )
...
* Fix memleak FP with return with parenthesis
Fix FPs pointed out by daca@home on the following form:
void* f(void) {
void* x = malloc(1);
return(x);
}
Fix it by only skipping tokens if there is an actual match with a
variable. This allows to remove the special casing of "return;".
* Add testcase with cast
2019-09-22 19:18:31 +02:00
Daniel Marjamäki
6e17853ea9
ExprEngine: Guess function call return value
2019-09-22 16:40:48 +02:00
Daniel Marjamäki
5c07cfd2e8
ExprEngine: Better handling of pointer aliasing
2019-09-22 15:58:55 +02:00
Daniel Marjamäki
ec4b7c1f4b
ExprEngine: Better handling of pointers
2019-09-22 10:56:57 +02:00
Daniel Marjamäki
7d6fd915be
ExprEngine: Better handling of compound assignments
2019-09-21 21:15:51 +02:00
Paul Fultz II
c1961cec1c
Fix issue 9362: FP: (style) Condition '(v&1)==0' is always false ( #2200 )
2019-09-21 19:53:54 +02:00
Daniel Marjamäki
da91c139d5
ExprEngine: Passing array to function, array data might be overwritten
2019-09-21 19:34:06 +02:00
Rikard Falkeborn
46ac0d79c1
Checkmemleakautovar: fix crash and FP ( #2196 )
...
This fixes crashes found by daca where valueType() is NULL. Also,
somewhat related, it removes warnings when casting to a type that is
unknown to cppcheck, for example, there is no longer a warning for the
following code:
void* f() {
void *x = malloc(1);
return (mytype)x;
}
2019-09-21 14:59:54 +02:00
Daniel Marjamäki
b2cab003ff
ExprEngine: Fix output for arrays
2019-09-21 14:17:16 +02:00
Daniel Marjamäki
3d0d3ec4c5
ExprEngine: handling array initialization with string literal
2019-09-21 11:36:34 +02:00
Tyson Nottingham
d6a70d27c7
Fix false negatives in checkAssignBoolToFloat and minor related improvements ( #2198 )
...
* Fix false negatives in checkAssignBoolToFloat
Detect assignments to expressions involving pointer dereferences, array
element accesses, etc.
* Pass assignment token to assignBoolToFloatError
Pass assignment token rather than boolean token to make error reporting
consistent between checkAssignBoolToFloat and checkAssignBoolToPointer,
as well as with other assignment checks in the code base.
* Make checkAssignBoolToPointer check consistent with checkAssignBoolToFloat
2019-09-21 08:24:54 +02:00
Paul Fultz II
40f1635c35
Fix issue 9361: false positive: (style) Condition 'isdigit(c)!=0' is always true ( #2199 )
2019-09-21 08:19:54 +02:00
Oliver Stöneberg
65d1e90aa3
deleted methods should be public ( #2193 )
2019-09-20 21:58:09 +02:00
Oliver Stöneberg
b5c598cca4
added missing OVERRIDE usage and removed redundant virtual ( #2190 )
2019-09-20 21:57:16 +02:00
Oliver Stöneberg
9028b4a81d
do not access static methods through instance ( #2189 )
2019-09-20 21:54:30 +02:00
Ken-Patrick Lehrmann
49b7ef84d9
Fix crashes in checkleakautovar ( #2195 )
...
Crashes found by daca@home
http://cppcheck1.osuosl.org:8000/crash.html
For instance
```
2019-09-20 16:27
ftp://ftp.se.debian.org/debian/pool/main/n/nedit/nedit_5.7.orig.tar.gz
cppcheck-options: -j1 --library=posix --library=gnu --library=motif -D__GNUC__ --check-library --inconclusive --enable=style,information --platform=unix64 --template=daca2 -rp=temp temp
platform: Linux-4.19.0-6-amd64-x86_64-with-debian-10.1
python: 2.7.16
client-version: 1.1.37
cppcheck: head 1.89
head-info: 38dec6a9a
(2019-09-20 16:46:57 +0200)
count: Crash! 934
elapsed-time: -11.0 9.0
head results:
Checking temp/nedit-5.7/source/shell.c: __GNUC__=1...
Program received signal SIGSEGV, Segmentation fault.
0x000055555564b862 in CheckLeakAutoVar::ret (this=0x7fffffffb8c0, tok=0x5555582ea9e0, varInfo=...) at lib/token.h:340
340 return mImpl->mValueType;
#0 0x000055555564b862 in CheckLeakAutoVar::ret (this=0x7fffffffb8c0, tok=0x5555582ea9e0, varInfo=...) at lib/token.h:340
#1 0x0000555555651764 in CheckLeakAutoVar::check (this=0x7fffffffb8c0) at build/checkleakautovar.cpp:714
#2 0x0000555555652b37 in CheckLeakAutoVar::runChecks (this=<optimized out>, tokenizer=0x7fffffffc3a0, settings=<optimized out>, errorLogger=<optimized out>) at lib/checkleakautovar.h:108
#3 0x00005555556bc833 in CppCheck::checkNormalTokens (this=0x7fffffffce50, tokenizer=...) at build/cppcheck.cpp:732
#4 0x00005555556bf694 in CppCheck::checkFile (this=0x7fffffffce50, filename=..., cfgname=..., fileStream=...) at build/cppcheck.cpp:542
#5 0x00005555556c1cb8 in CppCheck::check (this=this@entry=0x7fffffffce50, path="temp/nedit-5.7/source/shell.c") at /usr/include/c++/8/bits/basic_string.h:936
#6 0x00005555557fd63f in CppCheckExecutor::check_internal (this=0x7fffffffdbd0, cppcheck=..., argv=<optimized out>) at cli/cppcheckexecutor.cpp:884
#7 0x00005555557fda92 in CppCheckExecutor::check (this=this@entry=0x7fffffffdbd0, argc=argc@entry=14, argv=argv@entry=0x7fffffffdf58) at cli/cppcheckexecutor.cpp:198
#8 0x00005555555e6358 in main (argc=14, argv=0x7fffffffdf58) at cli/main.cpp:95
DONE
```
2019-09-20 21:29:17 +02:00
Daniel Marjamäki
6c59957109
ExprEngine: Better handling of conditions
2019-09-20 21:27:51 +02:00
Rikard Falkeborn
007b5d3e8d
Fix #9343 (memleak FP when return with cast) ( #2162 )
...
This was most likely introduced when the checks were changed to run on
the full tokenlist instead of the simplified one.
Take care to warn about cases where casts destroy the pointer, such as
uint8_t f() {
void* x = malloc(1);
return (uint8_t)x;
}
2019-09-20 15:09:27 +02:00
Daniel Marjamäki
049f6475ee
astyle formatting
...
[ci skip]
2019-09-20 15:07:27 +02:00
Paul Fultz II
ad8abdb0c3
Add impossible values to ValueFlow ( #2186 )
...
* Add impossible category
* Replace values
* Try to adjust known values
* Add ! for impossible values
* Add impossible with possible values
* Remove contradictions
* Add values when the branch is not dead
* Only copy possible values
* Dont bail on while loops
* Load std lib in valueflow
* Check for function calls
* Fix stl errors
* Fix incorrect impossible check
* Fix heap-after-use error
* Remove impossible values when they are lowered
* Show the bound and remove overlaps
* Infer conditions
* Dont push pointer values through dynamic_cast
* Add test for dynamic_cast issue
* Add shifttoomanybits test
* Add test for div by zero
* Add a test for issue 9315
* Dont make impossible value inconclusive
* Fix FP with shift operator
* Improve handleKnownValuesInLoop for impossible values
* Fix cppcheck warning
* Fix impossible values for ctu
* Bailout for streams
* Check equality conditions
* Fix overflows
* Add regression test for 9332
* Remove duplicate conditions
* Skip impossible values for invalid value
* Check for null
* Rename bound to range
* Formatting
2019-09-20 15:06:37 +02:00
IOBYTE
8c5cf8c029
Fixed #9046 syntaxError ( #2180 )
...
* Fixed #9046 syntaxError
* fix another syntax error
* fix some more syntax errors
2019-09-20 12:35:01 +02:00
Daniel Marjamäki
8fba2af267
Try to make Travis happy
2019-09-20 07:04:58 +02:00
Daniel Marjamäki
6c38b69e11
Rename dataIndex to mDataIndex according to our naming conventions
2019-09-20 06:12:35 +02:00
Oliver Stöneberg
de9f489b08
use range loops / constness ( #2181 )
...
* use range loops / constness
* platform.cpp: avoid shadowed variable
2019-09-19 20:29:33 +02:00
Daniel Marjamäki
5f0f8afc27
ExprEngine: Print some 'debug' output
2019-09-19 20:18:55 +02:00
Sebastian
bf55e835aa
Windows testrunner: Add testexprengine.cpp ( #2184 )
...
Add export of executeAllFunctions() in exprengine.h
2019-09-19 19:40:00 +02:00
Daniel Marjamäki
745c91106e
Removed unused Data::dump
2019-09-19 09:16:18 +02:00
orbitcowboy
b37b0c0f78
Running astyle [ci skip]
2019-09-19 08:03:29 +02:00
amai2012
d97c826319
Compile fix for VisualStudio
2019-09-18 22:07:42 +02:00
amai2012
5355df8b6e
Add exprengine.cpp to VisualStudio solution
2019-09-18 21:56:31 +02:00
amai2012
5a6084fbec
Map #warning to #pragma message for VisualStudio
2019-09-18 21:50:23 +02:00
Daniel Marjamäki
b66d701599
Fix Cppcheck warnings
2019-09-17 22:28:36 +02:00
Daniel Marjamäki
2d651b09fc
ExprEngine: Add new experimental path-sensitive data flow analysis. Initially used for 'verification' but could possibly later be used as a complement in the normal analysis. The code is work-in-progress and hacky!
2019-09-17 21:00:59 +02:00
Daniel Marjamäki
033640310b
One more fix for #9354 (Unknown macro is not reported and then Cppcheck is silent about issues)
2019-09-15 21:07:20 +02:00
Daniel Marjamäki
742c437953
Fixed #9354 (Unknown macro is not reported and then Cppcheck is silent about issues)
2019-09-13 13:05:48 +02:00
Paul Fultz II
068b0b246c
Fix issue 9352: FP constParameter and constVariable for auto& in combination with ternary ?: operator ( #2173 )
2019-09-13 08:33:30 +02:00
Daniel Marjamäki
fc25fe83bd
ctu: fixed error locations
2019-09-12 19:20:13 +02:00
Daniel Marjamäki
4e076e1854
Fix travis build
2019-09-12 19:06:57 +02:00
Daniel Marjamäki
da363c7d6f
Fixed #9349 (FP ctuuninitvar for pointer dereferenced inside sizeof)
2019-09-12 13:29:52 +02:00
Daniel Marjamäki
b8e3d3b982
CTU: Add 'column'
2019-09-12 10:46:33 +02:00
Daniel Marjamäki
8855978f8a
Import project: Ignoring paths better
2019-09-12 09:32:24 +02:00
IOBYTE
4e222afa2c
template simplifier: ignore alias template definitions with syntax errors ( #2169 )
...
Is not allowed to define a type in an alias template definition.
This code:
template<int N>
using A1 = struct B1 { static auto constexpr value = N; };
A1<0> a1;
produces this output:
2: } ;
3: struct B1 { static const auto value = 0 a1 ;
test.cpp:2:57: error: Analysis failed. If the code is valid then please
report this failure. [cppcheckError]
using A1 = struct B1 { static auto constexpr value = N; };
^
because it tries to instantiate the invalid alias template definition
and generates garbage code.
2019-09-11 19:31:15 +02:00
Paul Fultz II
ba037837c9
Track lifetime across multiple returns
...
This will now warn when doing something like this:
```cpp
template <class T, class K, class V>
const V& get_default(const T& t, const K& k, const V& v) {
auto it = t.find(k);
if (it == t.end()) return v;
return it->second;
}
const int& bar(const std::unordered_map<int, int>& m, int k) {
auto x = 0;
return get_default(m, k, x);
}
```
The lifetime warning is considered inconclusive in this case.
I also updated valueflow to no tinject inconclusive values unless `--inconclusive` flag is passed. This creates some false negatives because library functions are not configured to not modify their input parameters, and there are some checks that do not check if the value is inconclusive or not.
2019-09-11 19:25:09 +02:00
warmsocks
a56bc006b7
Fixed a typo in lib/checkother.cpp. Corrected spelling errors found by codespell. ( #2170 )
2019-09-11 19:21:38 +02:00
Daniel Marjamäki
bee30b0ca2
astyle formatting
...
[ci skip]
2019-09-10 19:42:17 +02:00
Paul Fultz II
dc0b3527ad
Fix issue 9311: False positive duplicateCondition "same if condition" with pointer inside array of struct ( #2166 )
...
* Check for typeOf through an array
* Handle array constructors
* Format
* Fix compile error on gcc 4.8
2019-09-10 19:41:35 +02:00
Paul Fultz II
2595b82634
Fix issue 9348: FP uninitvar for pointer passed to memcpy ( #2167 )
2019-09-10 19:40:08 +02:00
Paul Fultz II
ddb1f1b5ce
Try to fix issue 9341: daca crash: isContainerSizeChangedByFunction ( #2168 )
2019-09-10 19:39:44 +02:00
IOBYTE
639c29eb5c
Fix #9338 (Regression: Syntax error on valid C++) ( #2156 )
...
* Fix #9338 (Regression: Syntax error on valid C++)
* fix cppcheck warning
2019-09-09 21:46:21 +02:00
Paul Fultz II
9753e18ebd
Fix issue 9340: AST broken: endless recursion from '{' ( #2161 )
2019-09-09 21:35:49 +02:00
IOBYTE
59fdbd8435
Fix #9337 (Syntax error on valid C++) ( #2152 )
2019-09-07 09:09:04 +02:00
Paul Fultz II
27ebff7ae4
Add deeper analysis of when a function changes a containers size ( #2149 )
...
* Add deeper analysis of when a function changes a containers size
* Fix issues
* Track addressOf
2019-09-06 21:18:45 +02:00
Paul Fultz II
70cad280ea
Fix issue 9319: FP knownConditionTrueFalse related to aggregate initialization of struct ( #2147 )
2019-09-05 19:36:45 +02:00
Paul Fultz II
9e140831eb
Fix issue 9329: FP knownConditionTrueFalse - vector modified by function calls ( #2145 )
2019-09-05 16:42:26 +02:00
Paul Fultz II
e657cf4073
Fix issue 9320: False positive knownConditionTrueFalse related to truncation ( #2144 )
2019-09-05 15:15:58 +02:00
Daniel Marjamäki
a9fda3f488
Clarify redundantVarAssignment warnings
2019-09-04 10:55:41 +02:00
IOBYTE
e5220bdf0c
make ellipsis ... a single token ( #2143 )
...
* make ellipsis ... a single token
Using cppcheck -E to preprocess code with ellipsis produces output that
can't be compiled because ... is split into 3 tokens.
* try to fix addon
2019-09-04 08:07:30 +02:00
Paul Fultz II
1afd56e964
Fix issue 8785: ValueFlow: Track pointer alias
...
This fixes the issue by making `ProgramMemory` keep track of values based on the conditions.
It also removes the `deadpointer` check since it duplicates the `invalidLifetime` check.
2019-09-03 17:16:15 +02:00
Paul Fultz II
55a78f482b
Fix issue 9293: false negative: uninitvar
2019-09-03 06:46:34 +02:00
Paul Fultz II
dc201d110d
Fix issue 9274: false negative: (error) Buffer is accessed out of bounds (std::string, std::wstring)
2019-09-03 06:43:54 +02:00
Daniel Marjamäki
af449779f0
astyle formatting
...
[ci skip]
2019-09-03 06:43:08 +02:00
Paul Fultz II
88d194214f
Fix FP with invalidContainerRef ( #2141 )
2019-09-03 06:41:35 +02:00
Ken-Patrick Lehrmann
5c172bb55a
Fix issue 8897: Huge array initializations ( #2135 )
...
* Fix issue 8897: Huge array initializations
iscpp11init would take a lot of time when parsing huge arrays.
This patch add memoization to keeps track that we are parsing an array,
and allows to propagate the result without re-parsing the array for each
of its members.
* Use enum class instead of enum
2019-09-02 20:31:01 +02:00
PKEuS
e9f8dddabe
Set version to 1.89.99/1.90 dev
2019-09-02 15:44:40 +02:00
Daniel Marjamäki
7d63bdee6f
astyle formatting
...
[ci skip]
2019-09-02 06:59:07 +02:00
Paul Fultz II
cb509f1a8b
Fix issue 4845: alias to vector element invalid after vector is changed ( #2113 )
...
* Try harder to track ref lifetimes
* Dont add lifetimes for references
* Use correct token
* Check for front and back as well
* Improve handling of addresses
* Formatting
* Fix FP
2019-09-02 06:58:09 +02:00
IOBYTE
fd403bf7e6
template simplifier: only add recursive instantiation if its arguments are a constant expression ( #2138 )
2019-09-02 06:51:19 +02:00
Ken-Patrick Lehrmann
005765a561
Clarify valueFlowUninit ( #2136 )
...
https://github.com/danmar/cppcheck/pull/2129#issuecomment-526916467
2019-09-02 06:50:56 +02:00
Ken-Patrick Lehrmann
7a75aa084b
Fix crash in CheckUninitVar ( #2129 )
...
http://cppcheck.osuosl.org:8000/ycmd
```
2019-08-30 23:21
ftp://ftp.se.debian.org/debian/pool/main/y/ycmd/ycmd_0+20181101+git600f54d.orig.tar.gz
cppcheck-options: -j1 --library=posix --library=gnu --library=qt --library=python --library=googletest --library=boost -D__GNUC__ --check-library --inconclusive --enable=style,information --platform=unix64 --template=daca2 -rp=temp temp
platform: Linux-4.15.0-58-generic-x86_64-with-Ubuntu-18.04-bionic
python: 2.7.15+
client-version: 1.1.31
cppcheck: head 1.88
count: Crash! 83
elapsed-time: -11.0 61.2
head results:
Checking temp/ycmd-0+20181101+git600f54d/ycmd/tests/clang/testdata/completion_fixit.cc: __GNUC__=1...
Program received signal SIGSEGV, Segmentation fault.
CheckUninitVar::valueFlowUninit (this=this@entry=0x7fffffffb350) at build/checkuninitvar.cpp:2376
2376 if (!tok->variable())
#0 CheckUninitVar::valueFlowUninit (this=this@entry=0x7fffffffb350) at build/checkuninitvar.cpp:2376
#1 0x00005555556901ac in CheckUninitVar::runChecks (this=<optimized out>, tokenizer=0x7fffffffbcb0, settings=0x7fffffffcd10, errorLogger=<optimized out>) at lib/checkuninitvar.h:68
#2 0x00005555556a2210 in CppCheck::checkNormalTokens (this=this@entry=0x7fffffffcaf0, tokenizer=...) at build/cppcheck.cpp:730
#3 0x00005555556a6ee2 in CppCheck::checkFile (this=this@entry=0x7fffffffcaf0, filename="temp/ycmd-0+20181101+git600f54d/ycmd/tests/clang/testdata/completion_fixit.cc", cfgname="", fileStream=...) at build/cppcheck.cpp:540
#4 0x00005555556aad4c in CppCheck::check (this=this@entry=0x7fffffffcaf0, path="temp/ycmd-0+20181101+git600f54d/ycmd/tests/clang/testdata/completion_fixit.cc") at build/cppcheck.cpp:195
#5 0x00005555557ef167 in CppCheckExecutor::check_internal (this=this@entry=0x7fffffffd880, cppcheck=..., argv=argv@entry=0x7fffffffdc08) at cli/cppcheckexecutor.cpp:884
#6 0x00005555557efa9a in CppCheckExecutor::check (this=0x7fffffffd880, argc=17, argv=0x7fffffffdc08) at cli/cppcheckexecutor.cpp:198
#7 0x00005555555b1d1b in main (argc=17, argv=0x7fffffffdc08) at cli/main.cpp:95
```
2019-09-01 14:51:40 +02:00
PKEuS
9163248e0c
Fixed linker errors on Windows
2019-09-01 14:44:03 +02:00
Daniel Marjamäki
4ede39a9b7
1.89: Set version
2019-09-01 12:16:33 +02:00
Daniel Marjamäki
c32261c737
Updated copyright year
2019-09-01 11:49:43 +02:00
Ken-Patrick
2c656d6586
Issue 9255: Prevent infinite recursion in parsedecl ( #2134 )
2019-09-01 11:36:02 +02:00
IOBYTE
3a1aec8850
template simplifier: ignore friend templates ( #2122 )
...
* template simplifier: ignore friend templates
friend templates were interpreted as variable templates
* fix cppcheck warning
2019-09-01 09:56:33 +02:00
Ken-Patrick
d918f76a0d
Remove useless check introduced by 717aa826d8
( #2130 )
...
I was confused by the naming in the forum entry (this/that). This would
be a pointer, there's no point checking for it there.
2019-09-01 09:53:45 +02:00
Ken-Patrick
d1c6cb9aa5
Fix issue 9304: boolean type of ternary ( #2131 )
...
* Add test cases for 9304
* Fix 9304
2019-09-01 09:51:53 +02:00
Paul Fultz II
121093658d
Fix issue 9202: False positive: std::array, size is a constant ( #2132 )
2019-09-01 09:44:34 +02:00
Ken-Patrick
717aa826d8
Fix false positive in initializationListUsage ( #2128 )
...
https://sourceforge.net/p/cppcheck/discussion/general/thread/d5b690ef19/
Check that we warn only about using the initializer list when we assign
the object being constructed.
2019-08-31 12:27:07 +02:00
Paul Fultz II
e8435b9ecb
Fix issue 9306: Adjust shiftTooManyBitsSigned for C++14 ( #2127 )
2019-08-31 07:40:57 +02:00
Daniel Marjamäki
1a25d3f9ec
astyle formatting
...
[ci skip]
2019-08-30 18:34:14 +02:00
Paul Fultz II
0b9e823fc8
Fix issue 9305: False positive uninitvar - struct initialized via function ( #2123 )
2019-08-30 18:32:45 +02:00
Paul Fultz II
2942be53f7
Add more tests for valueFlowUninit ( #2124 )
2019-08-30 08:41:17 +02:00
Paul Fultz II
03fe6795bf
Fix issue 9302: FP uninitvar - struct accessed via pointer ( #2121 )
2019-08-29 08:38:50 +02:00
IOBYTE
28a95802a2
template simplifier: fix syntax error false positive (an expression can't be a template) ( #2115 )
...
https://stackoverflow.com/questions/57590411/cppcheck-syntax-error-with-using-typedef
2019-08-27 06:37:58 +02:00
Daniel Marjamäki
a47633c4b9
Added TODO comment
2019-08-26 06:56:29 +02:00
Daniel Marjamäki
4bd9d76a4c
Try to make Travis happy
2019-08-25 10:24:13 +02:00
Daniel Marjamäki
82eec11898
Created redundantInitialization id
2019-08-25 09:45:39 +02:00
Daniel Marjamäki
324e5e581b
Redundant assignments: Fix false positive when reassignment expression contains assembler
2019-08-24 20:15:52 +02:00
Daniel Marjamäki
0dfda5eb4a
Try to make Travis happy
2019-08-24 15:43:31 +02:00
Daniel Marjamäki
996daaee4e
STL: Fixed outOfBounds false positive
2019-08-24 15:40:29 +02:00
Daniel Marjamäki
9d26be8380
Fixed #5259 (Improve check: Uninitialized variable not reported when used in array initialization)
2019-08-24 14:43:35 +02:00
Paul Fultz II
5c488b9519
Fix issue 9190: FP uninitvar for struct member ( #2112 )
...
* Fix issue 9190: FP uninitvar for struct member
* Add more test cases
* Fix false negative
2019-08-24 11:27:47 +02:00
Daniel Marjamäki
35fb55d76c
Fixed #5259 (Improve check: Uninitialized variable not reported when used in array initialization)
2019-08-24 08:01:55 +02:00
Daniel Marjamäki
9cbdc262f6
Fix Cppcheck internal warning
2019-08-23 16:56:28 +02:00
Daniel Marjamäki
d3f7fc92f2
Quick fix to make Travis happy
2019-08-23 15:23:49 +02:00
versat
50c6af5e5d
astyle formatting
...
[ci skip]
2019-08-23 10:19:29 +02:00
Daniel Marjamäki
7061cc334b
RedundantAssignment: Don't warn for initialization with {0}
2019-08-23 08:51:16 +02:00
Thomas Niederberger
d122b1c722
Fix issue with __declspec and final ( #2107 )
...
* Add missing Qt macros
Add two Qt macros that were missing
* Fix issue with __declspec and final
This change is a bit naive but it fixes the issues I was having when combining __declspec(dllexport) and final classes. Without the fix I get errors along the line of "The code 'class x final :' is not handled. You can use -I or --include to add handling of this code. "
2019-08-23 06:43:02 +02:00
Rikard Falkeborn
fd3cb24973
leakNoReturnVar: Don't break early ( #2095 )
...
There seems to be no reason for stopping checking the scope if a call to
free() is seen (or fclose() or realloc()), so just continue checking.
Also, if there are multiple arguments, check all, perhaps there are more
memory leaks to warn about.
2019-08-23 06:33:00 +02:00
Paul Fultz II
c0a8d628b9
Fix issue 6010: Uninitialized inner struct ( #2098 )
...
* Fix issue 6010: Uninitialized inner struct
* Show to root variable that is unitialized
* Warn on pointer dereferences
2019-08-23 06:23:20 +02:00
Daniel Marjamäki
6815e38879
TokenList::insertTokens: copy column also
2019-08-20 20:53:44 +02:00
IOBYTE
4b231c53a4
Fixed #9287 and #9288 (Syntax error on valid C++ code) ( #2104 )
2019-08-20 20:25:18 +02:00
Daniel Marjamäki
ef47d3d304
Fixed #9286 (FP: syntax error: { .abc.a = 1)
2019-08-20 13:56:38 +02:00
Daniel Marjamäki
474fed453e
memleak: Fixed false negative for sample
2019-08-18 19:45:39 +02:00
Daniel Marjamäki
a5ba82c2d3
Fixed #9260 (--template=gcc does not work correctly with -j)
2019-08-18 16:33:32 +02:00
Daniel Marjamäki
d95f29b23a
Fixed test/cli
2019-08-18 12:51:32 +02:00
Daniel Marjamäki
2d9a131817
Refactoring: Rename variables. Do not use leading _. Renamed 'col' to 'column'
2019-08-18 12:19:05 +02:00
Daniel Marjamäki
de9b928d98
ErrorLogger: add 'column' in serializer/deserializer
2019-08-18 09:06:40 +02:00
Daniel Marjamäki
04e3884ff6
xml: Add column attribute in <location>
2019-08-18 08:37:56 +02:00
Daniel Marjamäki
c3a27eb8c1
Fix a few cppcheck internal warnings
2019-08-17 16:02:58 +02:00
Daniel Marjamäki
a17f2a6f05
Compiling/Installing : The CFGDIR parameter was removed. Use FILESDIR instead.
2019-08-17 10:53:07 +02:00
IOBYTE
04bb6c0d1f
template simplifier: fix new daca crashes ( #2093 )
2019-08-17 07:38:07 +02:00
Paul Fultz II
ee7fe3aaa1
Fix FP: Unitialized variable when using a pointer
...
This fixes the FP in cases like this:
```cpp
void f() {
bool b;
bool * x = &b;
if (x != nullptr)
x = 1;
}
```
It tracks the indirection of the uninit value in valueflow.
2019-08-17 07:36:41 +02:00
Paul Fultz II
3e0d1141d3
Fix issue 9277: FP: Dont warn for knwon conditions in if constexpr ( #2085 )
2019-08-16 07:56:39 +02:00
Paul Fultz II
3aef0c9bd3
Fix issue 8715: regression uninitvar not detected ( #2092 )
2019-08-16 07:48:54 +02:00
Paul Fultz II
ef714225bb
Use library to track container lifetimes
2019-08-15 21:14:54 +02:00
Daniel Marjamäki
95ac8db584
TemplateSimplifier: Set column number for expanded tokens
2019-08-15 15:22:56 +02:00
Daniel Marjamäki
f33a8a417f
Put 'isExpandedMacro' info in the dump files
2019-08-15 14:24:56 +02:00
Daniel Marjamäki
a57d22d2d9
astyle formatting
...
[ci skip]
2019-08-15 10:46:16 +02:00
Paul Fultz II
af214e8212
Fix issue 8825: ValueFlow: uninitialized struct member ( #2087 )
...
* Pass uninit value across pointers
* Add more testing
2019-08-15 10:44:55 +02:00
Rikard Falkeborn
fc1d5b187f
leakNoVarFunctionCall: Use AST more ( fix #9252 ) ( #2086 )
...
Use the AST a little bit more to improve the check. In order to do so,
rewrite the check to work from the outer function first and then check
the arguments, instead of the other way around.
It also fixes Trac ticket #9252 , no warning is now given for
void* malloc1() {
return(malloc1(1));
}
This FP seems to be common in daca results.
It also makes it possible to improve handling of casts, for example
cppcheck now warns about
void f() {
strcpy(a, (void*) strdup(p));
}
But not for
char* f() {
char* ret = (char*)strcpy(malloc(10), "abc");
return ret;
}
These FP/FN were introduced when the check was switched to use the
simplified token list.
2019-08-14 22:01:40 +02:00
Rikard Falkeborn
f139558d90
Dmake cleanups ( #2077 )
...
* dmake: Refactor object files to separate function
No functional change.
* dmake: Use range for loops
No functional change.
* Add all external cpp files instead of open coding
No functional change.
* Remove duplicate check.h in lib.pri HEADERS
* Add missing newline
No functional change, but the readability of the generated Makefile is
slightly improved.
2019-08-14 20:53:51 +02:00
Paul Fultz II
4f76588f98
Fix issue 9275: False positive: Non-local object uses local variable ( #2084 )
2019-08-14 20:09:33 +02:00
Paul Fultz II
0c1dff5c93
Fix issue 9268: false negative: (style) Condition '...' is always true ( #2080 )
...
* Fix issue 9268: false negative: (style) Condition '...' is always true
* Fix copy and paste mistake
2019-08-14 06:34:27 +02:00
Paul Fultz II
13df5b2413
Fix FP with negative index and negated condition ( #2081 )
2019-08-14 06:32:31 +02:00
Daniel Marjamäki
d4549217d0
Renamed safeClassRefMember => unsafeClassRefMember
2019-08-13 20:58:31 +02:00
Daniel Marjamäki
ed7edc6d2a
Improve warning message
2019-08-13 20:42:25 +02:00
Daniel Marjamäki
41f8c1b281
Fixed #9271 (Safe classes: Class that store references)
2019-08-13 20:40:48 +02:00
Rikard Falkeborn
ffcceb097e
Memleak: Refactor check to separate function ( #2079 )
...
This makes all the checks in CheckMemoryLeakNoVar separate functions to
improve readability.
2019-08-13 13:00:59 +02:00
Paul Fultz II
c0c6f92221
Fix issue 8431 and 8776: Size of constant string
...
Fixes these cases:
```cpp
void f(void) {
const std::string msg="xyz";
if(!msg.empty()){} // Always true
}
```
And out of bounds access:
```cpp
#include <string>
char fstr1(){const std::string s = "<a><b>"; return s[42]; }
wchar_t fwstr1(){const std::wstring s = L"<a><b>"; return s[42]; }
```
2019-08-12 20:24:16 +02:00
Paul Fultz II
68e8253920
Fix issue 8313 and 7326: Track values of pointer aliases in valueflow
2019-08-12 12:58:53 +02:00
Daniel Marjamäki
aec217fede
astyle formatting
...
[ci skip]
2019-08-12 12:54:25 +02:00
Rikard Falkeborn
cd36f8ed0a
Fix #9253 : leakNoVarFunctionCall: do not warn if freopen opens standard stream ( #2076 )
...
This fixes false positives from daca@home where freopen is used to
reopen a standard stream. There is no longer a warning for
void f() {
assert(freopen("/dev/null", "r", stdin));
}
2019-08-12 12:53:59 +02:00
Paul Fultz II
9aa97cbb95
Fix issue 8296: ValueFlow: value not set in conditional scope in subfunction ( #2071 )
...
* Fix issue 8296: ValueFlow: value not set in conditional scope in subfunction
* Refactor condition checkingg
* Make test case TODO
2019-08-11 15:39:37 +02:00
Daniel Marjamäki
0edc4feb57
Try to make Appveyor happy
2019-08-10 08:46:27 +02:00
IOBYTE
5fc5e3728d
template simplifier: refactor TemplateSimplifier::TokenAndName into a… ( #2073 )
...
* template simplifier: refactor TemplateSimplifier::TokenAndName into a class
assert when more than one family flag is set
* fix function parameter names
2019-08-10 08:42:12 +02:00
Daniel Marjamäki
6a260929e2
CLI: error id from addon is <addon>-<id>
2019-08-10 07:43:47 +02:00
Daniel Marjamäki
0fbbe2ff23
Refactor load/write of cppcheck project. Reuse same string constants in cli and gui.
2019-08-09 21:15:02 +02:00
Armin Müller
785cc69644
Typos found by running "codespell" ( #2072 )
2019-08-08 21:05:28 +02:00
Paul Fultz II
bd02ca5ccb
Fix issue 9207: Not detected 'always true' and unreachable code
2019-08-08 07:46:47 +02:00
IOBYTE
c6c50567cf
Fix #9250 (Regression: crash in gcc testsuite) ( #2067 )
...
* Fix #9250 (Regression: crash in gcc testsuite)
* fix cppcheck warning
2019-08-07 08:05:02 +02:00
Ken-Patrick
cb0b057595
8706 ( #2066 )
...
* 8706
* Add test case for #8706
2019-08-07 08:04:10 +02:00
Ken-Patrick
9ec8886898
Use std::any_of in token.h ( #2065 )
...
[lib/token.h:964]: (style) Consider using std::any_of algorithm instead of a raw loop.
2019-08-07 08:02:07 +02:00
Paul Fultz II
aaeec462e6
Re-enable valueFlowSubFunction ( #2063 )
...
* Re-enable valueFlowSubFunction
* Formatting
* Skip ternary operators in subfunctions
* Fix test with iostreams
* Fix FP with multiple parameters
2019-08-05 16:26:32 +02:00
Daniel Marjamäki
ebcca4edd1
Improve --debug-warnings output for 'auto' tokens without type. Do not report that prematurely before the type is set properly.
2019-08-05 13:42:06 +02:00
Daniel Marjamäki
20278d9c92
Clarify signConversion warning message
2019-08-05 12:41:08 +02:00
Paul Fultz II
ffdd2dc793
Fix issue 8924: Re-enable valueFlowTerminatingCondition
2019-08-05 07:18:06 +02:00
IOBYTE
7ebc9d1b5f
Fix #9249 (Syntax error on valid C++) ( #2062 )
2019-08-04 10:24:44 +02:00
Daniel Marjamäki
510748134f
Fixed #9234 (FP unreadVariable - assignment via iterator)
2019-08-04 10:21:16 +02:00
Daniel Marjamäki
ce53931d00
Fixed #9251 (False positive: unininitialized variable (multi variables))
2019-08-03 21:12:34 +02:00
Daniel Marjamäki
cdc602e1be
Fixed #9137 (Tokenizer: Wrong handling of volatile pointer)
2019-08-03 12:28:50 +02:00
Daniel Marjamäki
c03df8e6b4
SymbolDatabase: Improved matchParameter for containers
2019-08-03 10:10:40 +02:00
IOBYTE
2da83df37b
Fix #9246 (Syntax error on C++ code) ( #2061 )
2019-08-03 08:15:06 +02:00
amai2012
f02636e995
Refactoring: Convert enums to enum classes
2019-08-02 21:14:29 +02:00
rebnridgway
d2b9c1f15a
Fix some bugs in new Scope Calculation code ( #2060 )
...
* Fix for too much information in scope name
When the scope calculation encounters code such as
"friend class X::Y;"
or
"template<> class X<void> {"
it will now reset the additional name component of the scope that is about to be opened.
* Made sure new scope name is reset after being used
2019-08-02 19:55:08 +02:00
Daniel Marjamäki
e66e6549ee
SymbolDatabase: Improved ValueType::matchParameter handling of containers
2019-08-02 15:59:22 +02:00
Daniel Marjamäki
26b0ea52ed
SymbolDatabase: Simplify code
2019-08-02 15:41:18 +02:00
IOBYTE
0d1685cd29
Fix #9178 example with instantiation ( #2059 )
2019-08-02 07:53:39 +02:00
amai2012
29596baa92
Refactoring: Convert enum Direction to enum class
2019-08-01 20:56:02 +02:00
Daniel Marjamäki
7eaa49fd5b
Refactoring SymbolDatabase::findFunction. No functional change is intended.
2019-08-01 17:53:14 +02:00
Daniel Marjamäki
81db8fda18
SymbolDatabase: Code cleanup in findFunction
2019-08-01 17:29:25 +02:00
Daniel Marjamäki
25a13d061c
Refactoring SymbolDatabase::findFunction
2019-08-01 16:14:00 +02:00
Daniel Marjamäki
f95fdd80dd
SymbolDatabase: Refactoring findFunction
2019-08-01 14:30:29 +02:00
Daniel Marjamäki
2a17b897c5
SymbolDatabase: Use ValueType::matchParameter for *var parameters
2019-08-01 13:29:44 +02:00
Daniel Marjamäki
dbddc321e8
SymbolDatabase: Try to match function parameters with unknown types
2019-08-01 13:25:03 +02:00
Rikard Falkeborn
f6726b76ae
Fix 9215 (add tilde for missing destructor override warning) ( #2057 )
2019-08-01 10:43:45 +02:00
amai2012
8a934805ed
Convert InvalidValueType to enum class
2019-07-31 22:56:16 +02:00
amai2012
b0fbbb5aa7
Convert SHOWTIME_MODES to enum class
2019-07-31 22:35:51 +02:00
Daniel Marjamäki
8deb855b41
Fix ValueType::matchParameter for 'const float *' => 'signed long long'
2019-07-31 18:55:55 +02:00
Daniel Marjamäki
91ca6165eb
SymbolDatabase: Use ValueType::matchParameter for expression parameters
2019-07-31 18:35:56 +02:00
Daniel Marjamäki
70ac607a5c
SymbolDatabase: extend usage of ValueType::matchParameter for variable parameters
2019-07-31 18:25:47 +02:00
Daniel Marjamäki
c51f44ce4c
SymbolDatabase: extend usage of ValueType::matchParameter for variable parameters
2019-07-31 18:24:15 +02:00
Daniel Marjamäki
1eb5f2266c
ValueType::matchParameter: Fix matching of char** and void*
2019-07-31 16:23:50 +02:00
Daniel Marjamäki
a3dc2db77a
SymbolDatabase: Use ValueType::matchParameter for variable address parameters
2019-07-31 12:38:36 +02:00
Daniel Marjamäki
039d49bcb1
Improve ValueType::matchParameter for pointers with different types
2019-07-31 12:12:17 +02:00
Daniel Marjamäki
35a3a34632
Revert "SymbolDatabase: Use ValueType::matchParameter"
...
This reverts commit cea00a8e09
.
2019-07-31 12:07:07 +02:00
Daniel Marjamäki
cea00a8e09
SymbolDatabase: Use ValueType::matchParameter
2019-07-31 11:20:43 +02:00
orbitcowboy
a9bdf99e07
std.cfg: Added *experimental* support for math constants liken M_PI. These are *NOT* standard, but they are supported by GCC/Clang and VS.
2019-07-31 11:11:01 +02:00
Daniel Marjamäki
728ac6ae2e
SymbolDatabase: Use ValueType::matchParameter for char literal parameters
2019-07-31 09:35:32 +02:00
rebnridgway
e629f9a90f
Calculate token scopes in advance rather than as the tokenlist is iterated ( #2038 )
...
* Removed redundant scope calculation
* Add scope propagation code to insertToken
* Add relevant scope code to Token class
* Add code to calculate the scope of Tokens
* Add calculateScopes method to class
* Add missing include for shared_ptr
2019-07-31 09:19:27 +02:00
IOBYTE
9436f72a94
Fix daca dnsdist crash ( #2053 )
2019-07-31 09:18:43 +02:00
Daniel Marjamäki
e58e51ee14
SymbolDatabase::findFunction: For string literal, a std::string parameter is a better match than a void* parameter
2019-07-30 21:20:01 +02:00
Daniel Marjamäki
f5c269a191
SymbolDatabase: Use ValueType::matchParameter for string literal parameters
2019-07-30 21:02:35 +02:00
Daniel Marjamäki
d5d50d9b17
ValueType::matchParameter: Improved constness matching
2019-07-30 09:19:51 +02:00
Daniel Marjamäki
914430dede
Appveyor: A quick fix to make Appveyor happy, revert the changes
2019-07-30 07:59:28 +02:00
Daniel Marjamäki
88e3199372
SymbolDatabase: Use ValueType::matchParameter for numeric literal parameters
2019-07-30 07:48:14 +02:00
Daniel Marjamäki
bf219aecde
SymbolDatabase::findFunction: Use ValueType::matchParameter for expression parameters
2019-07-30 07:14:05 +02:00
Daniel Marjamäki
f13b1a0bce
SymbolDatabase: Use ValueType::matchParameter for boolean parameters
2019-07-29 22:58:12 +02:00
Daniel Marjamäki
ed5ae7c5fa
SymbolDatabase::findFunction: Use ValueType::matchParameter for float literal parameters
2019-07-29 21:53:39 +02:00
Daniel Marjamäki
cccbfaa0e4
SymbolDatabase::findFunction: Use getArguments utility function
2019-07-29 21:17:31 +02:00
Daniel Marjamäki
3ad9d6a1ad
Make the code a bit more robust
2019-07-29 20:57:16 +02:00
Daniel Marjamäki
f63011c219
Try to fix daca@home crashes
2019-07-29 19:06:41 +02:00
Daniel Marjamäki
9e738db435
SymbolDatabase: expand usage of ValueType::matchParameter for non-pointer variables
2019-07-29 18:46:50 +02:00
Daniel Marjamäki
3066c0653c
Fixed #8668 (SymbolDatabase: Wrong findFunction match for const pointer argument)
2019-07-29 18:14:23 +02:00
Daniel Marjamäki
607b3daca8
ValueFlow: Improve bailout for structs etc in loops
2019-07-29 15:51:48 +02:00
Daniel Marjamäki
a1214348c0
Fixed #8974 (false negative regression about never used variable)
2019-07-29 08:49:19 +02:00
IOBYTE
07ac6c5f08
Fix ternary operator simplification to accept template parameters. ( #2048 )
...
Also simplify decltype of bool and numeric literals in template
arguments.
2019-07-28 21:52:52 +02:00
IOBYTE
badc573b80
Fix #9224 (Performance regression in template parsing: 250x - 1200x slower) ( #2046 )
2019-07-28 09:25:18 +02:00
Daniel Marjamäki
e8ec6e6f11
Fixed #8349 (Noisy nullPointerRedundantCheck)
2019-07-27 20:03:06 +02:00
Rikard Falkeborn
0324bbf63c
dmake: Fix check of last header file in lib.pri ( #2045 )
...
Since the number of test files is larger than the number of lib files,
this only caused an extra harmless '\' being printed after the last
header file in lib.pri. If the number of test files would have been
smaller than the number of lib files, the generated lib.pri would have
been broken.
2019-07-27 09:45:04 +02:00
Daniel Marjamäki
1c75257212
Token::hasKnownIntValue: Fix when there is one possible int value and one known BUFFER_SIZE value, it should return false.
2019-07-27 08:25:07 +02:00
Rikard Falkeborn
f95d193e22
Fix #8282 (memleak FP when returning std::pair) ( #2039 )
2019-07-26 07:03:58 +02:00
Paul Fultz II
ee28a45db4
Fix issue 9235: new crash in astutils isVariableChanged from endless recursion ( #2040 )
2019-07-26 07:03:21 +02:00
Paul Fultz II
b049fd9303
Improve propogation of lifetimes of function arguments
...
This will now warn for cases like this:
```cpp
int* f(int * x) {
return x;
}
int * g(int x) {
return f(&x);
}
````
2019-07-26 07:02:07 +02:00
Rikard Falkeborn
a69a570505
Fix FP leakVarNotUsed with freopen() and stdin ( #2034 )
...
One usecase for freopen() is to redirect input and output streams to
files. For that, the return value is not needed.
2019-07-25 21:09:23 +02:00
Daniel Marjamäki
9009eeb83d
Tweak Function::isSafe()
2019-07-25 20:52:24 +02:00
Daniel Marjamäki
4611cbb5bb
One more fix for Function::isSafe
2019-07-25 17:31:52 +02:00
Daniel Marjamäki
09be07f2b2
Fix Function::isSafe
2019-07-25 17:28:32 +02:00
Daniel Marjamäki
45d1ca6f7c
Safe checks: Clarify a warning message
2019-07-25 17:19:51 +02:00
Paul Fultz II
744a94ad5a
Fix issue 9231: FP constParameter - argument passed parent ctor ( #2032 )
2019-07-24 20:59:58 +02:00
IOBYTE
999d2f797c
Fix #9225 (Crash on valid C++14 code) ( #2031 )
...
* Fix #9225 (Crash on valid C++14 code)
This only fixes the crash. Specialization of nested templates is still
broken.
* fix cppcheck warnings
* fixed another cppcheck warning
2019-07-24 19:20:19 +02:00
Daniel Marjamäki
bbcffce529
Fixed #9062 (False positive "condition is always true")
2019-07-24 19:16:35 +02:00
Daniel Marjamäki
e11dcc609b
Fixed #7758 (Function array is seen as Uninitialized)
2019-07-24 18:20:23 +02:00
Daniel Marjamäki
7c0b011c05
Fixed #9230 (Improve check: integer conversion overflow in return)
2019-07-24 16:17:52 +02:00
Daniel Marjamäki
2da75d5af4
Split up Cppcheck attribute. low and high values can be specified separately and they can be used for variables also.
2019-07-24 15:08:26 +02:00
versat
641b350cf7
astutils.h: Remove conflicting function declaration for isAliased()
...
This function was made static with commit 6c82685fbf
2019-07-24 13:23:54 +02:00
Daniel Marjamäki
fb7f18ddea
ValueFlow: fix false detection of duplicate values
2019-07-24 12:30:33 +02:00
Daniel Marjamäki
cab9f61b79
safe checks: Handle float parameters
2019-07-24 12:09:13 +02:00
Daniel Marjamäki
e0738c48d2
simplify code
2019-07-24 11:40:51 +02:00
Daniel Marjamäki
10be2a1941
Safe checks: container parameters
2019-07-24 11:39:35 +02:00
Daniel Marjamäki
6c82685fbf
Fixed compiler warnings
2019-07-24 11:01:38 +02:00
Paul Fultz II
bb52a63c4e
Add check for const variables
...
When a local reference is declared, this will check if that local reference can be declared as `const`.
2019-07-24 09:59:01 +02:00
Paul Fultz II
4c3191e577
Lower recursion limit when using asan ( #2013 )
2019-07-24 09:57:53 +02:00
Daniel Marjamäki
753efb4c9b
Function::isSafe: handle global/namespace functions better
2019-07-24 08:23:05 +02:00
Daniel Marjamäki
3ec45acc43
astyle formatting
...
[ci skip]
2019-07-24 08:22:12 +02:00
Paul Fultz II
3ec3bd52e0
Fix FP when using a pointer to a container ( #2029 )
2019-07-24 00:04:49 +02:00
Paul Fultz II
ab0fcc7640
Fix issue 9216: reset() method confusion ( #2025 )
...
* Fix issue 9216 with smart pointer reset
* Check for arrow
2019-07-23 22:45:58 +02:00
Paul Fultz II
60b670babd
Fix issue 9219: False positive, returnDanglingLifetime ( #2026 )
...
* Check for pointer deref for container methods
* Formatting
2019-07-23 21:59:05 +02:00
IOBYTE
5ad5cfcc29
Fix #9217 (Regression: Memory explodes in simplifyTemplateAliases) ( #2021 )
...
* Fix #9217 (Regression: Memory explodes in simplifyTemplateAliases)
* fix use after free when nothing was copied
2019-07-23 21:28:24 +02:00
Daniel Marjamäki
4fb6c27276
Modernize: Use enum class
2019-07-23 14:29:02 +02:00
Daniel Marjamäki
680fbfe612
Fix Cppcheck warning, unused value
2019-07-23 14:10:34 +02:00
Daniel Marjamäki
681bd0a911
GUI: Better settings for extended safe checks
2019-07-23 11:54:38 +02:00
Daniel Marjamäki
74bd2aa680
Use range for loop
2019-07-22 12:24:16 +02:00
Daniel Marjamäki
a81c39af09
Replace 'unsigned' with 'nonneg'
2019-07-22 11:25:51 +02:00
Daniel Marjamäki
7ed3db7b32
astyle formatting
...
[ci skip]
2019-07-22 10:38:17 +02:00
Rikard Falkeborn
8cd1d5a47d
Use library for memleak checks ( #2002 )
...
* Use library for memleak checks
Change memleakOnRealloc and leakReturnValNotUsed to use library
configuration instead of hardcoding "realloc".
In order to do so, some care needs to be taken when matching for a
reallocation function, since it can no longer be assumed that the input
to be allocated is the first argument of the function. This complicates
getReallocationType() and checkReallocUsage() but is necessary in order
to handle for example freopen() properly.
Also, refactor memleakOnRealloc check to reduce duplicated code when
checking "a" and "*a". When doing so, extending the check to look for
arbitrary number of "*" can be done for free (just change an if
statement to a while statement). Most likely, this is an unusual case in
real world code.
* Remove redundant whitespace in Token::Match()
* Run on simplified checks
* Fix cppcheck warning
2019-07-22 10:37:36 +02:00
Rikard Falkeborn
abea580b78
Fix FP memory leak with unknown function call in condition ( #2012 )
...
* Fix FP memory leak with unknown function call in condition
This was introduced in 8513fb81d2
when
fixing memory leaks for global variables allocated in condition. The
refactored code had an inconsistency where c and c++ code behaved
slightly differently when `var` is NULL. This seemed to not have an
impact as the code was written prior to 8513fb81d2
,
but when the same code was used for conditions, FPs were introduced.
The introduced FPs were memleak warnings when there should have been an
information message about missing configurations for code like
void f() {
char *p = malloc(10);
if (set_data(p)) {}
}
Fix this by always returning true if varTok->Variable() is NULL for
both c and c++ code.
* Improve function name
2019-07-18 15:23:19 +02:00
Paul Fultz II
8cd8a2671c
Fix issue 9211: No error on divide by zero outside template instatiation
...
I am not sure how to add a test for this.
2019-07-18 14:55:30 +02:00
Daniel Marjamäki
28e5133f50
Refactoring: Use range for loop
2019-07-18 14:55:01 +02:00
Paul Fultz II
a08a9c1349
Switch to use lifetime analysis for iterators and pointers to invalid containers
...
This will diagnose more issues such as:
```cpp
void f(std::vector<int> &v) {
auto v0 = v.begin();
v.push_back(123);
std::cout << *v0 << std::endl;
}
```
2019-07-18 10:56:44 +02:00
Daniel Marjamäki
421a8da6a8
Try to clarify signConversion message
2019-07-17 22:41:24 +02:00
Daniel Marjamäki
f0aeb845e5
ValueFlow: Clarify warnings when argument min/max values are used
2019-07-17 22:17:34 +02:00
Daniel Marjamäki
d11d6f112e
Detect shadowed arguments
2019-07-17 17:08:42 +02:00
Daniel Marjamäki
0be78bbde6
Rename fileInd to fileIndex
2019-07-17 16:28:47 +02:00
Daniel Marjamäki
90a215af0e
Rephraze performance message. /would be faster/could be faster/ to indicate that Cppcheck is not _sure_ that it would be faster
2019-07-17 16:06:10 +02:00
Daniel Marjamäki
64ef879ebf
Fix syntaxError for struct initialization
2019-07-17 15:21:17 +02:00
Daniel Marjamäki
9973db3a71
Modernize: Use enum class for Library::Action and Library::Yield
2019-07-17 11:39:30 +02:00
Daniel Marjamäki
ec4d68e231
Modernize: use enum class
2019-07-17 10:43:18 +02:00
Daniel Marjamäki
2afd5f5dd0
Modernize: Use enum class
2019-07-17 10:39:06 +02:00
Daniel Marjamäki
b15e6801a4
Replace 'unsigned' with 'nonneg' in tokenizer
2019-07-17 10:36:49 +02:00
Daniel Marjamäki
e9b12b1fe0
Replace 'unsigned' with 'nonneg'
2019-07-17 10:14:25 +02:00
Daniel Marjamäki
e124b31334
Replace 'unsigned' with 'nonneg'
2019-07-17 09:11:42 +02:00
Daniel Marjamäki
c04f31a2c2
Refactoring: Use common function
2019-07-17 09:04:42 +02:00
Daniel Marjamäki
5800692fa1
Move and refactor the CheckMemoryLeak::isclass
2019-07-17 08:59:09 +02:00
Rikard Falkeborn
8513fb81d2
Fix #9206 (FP with global variable allocated in condition) ( #2007 )
2019-07-17 07:43:07 +02:00
Daniel Marjamäki
b3688f22e8
Unknown macro: Detect and warn about unknown macro before throw/return
2019-07-16 20:32:46 +02:00
Daniel Marjamäki
b4a05a3dd0
Refactoring: Use enum class
2019-07-16 11:12:35 +02:00
Daniel Marjamäki
32eda27391
Refactoring: Use enum class
2019-07-16 10:51:26 +02:00
versat
4e89b13adf
checkio.cpp: Fix forgotten "nonneg" change which breaks build
2019-07-16 09:30:36 +02:00
Daniel Marjamäki
7a4a9eba4b
remove cast
2019-07-16 09:28:48 +02:00
Daniel Marjamäki
ef73a10e30
Replace 'unsigned' with 'nonneg' in checkother
2019-07-16 09:10:10 +02:00
Daniel Marjamäki
3637c486c4
Replace 'unsigned' with 'nonneg' in checkclass
2019-07-16 09:03:45 +02:00
Daniel Marjamäki
e877683f01
Replace 'unsigned' with 'nonneg' in checkleakautovar
2019-07-16 08:54:21 +02:00
Daniel Marjamäki
c57d3e069a
Replace 'unsigned' with 'nonneg' in checkfunctions
2019-07-16 08:49:02 +02:00
Daniel Marjamäki
a038ba7dce
replace 'unsigned' with 'nonneg' in checkio
2019-07-16 08:37:26 +02:00
Daniel Marjamäki
5dc4f44091
Replace 'unsigned' with 'nonneg' in checkcondition
2019-07-16 08:21:25 +02:00
Daniel Marjamäki
1888b39314
Use 'nonneg' instead of 'unsigned' in checkbufferoverrun
2019-07-16 07:59:35 +02:00
Daniel Marjamäki
5eff1b0f4a
Replace 'unsigned' with 'nonneg' in checkstl
2019-07-15 14:05:23 +02:00
Daniel Marjamäki
38182bf37b
Replace 'unsigned' with 'nonneg' in valueflow
2019-07-15 13:47:17 +02:00
Daniel Marjamäki
5175bda774
Use 'nonneg' instead of 'unsigned' in checkautovariables
2019-07-15 13:33:29 +02:00
Daniel Marjamäki
4122b2111f
astyle formatting
...
[ci skip]
2019-07-15 12:56:44 +02:00
IOBYTE
6d6bb31926
fix crash in daca gcc-avr from intentional bad instantiation test ( #1994 )
...
* fix crash in daca gcc-avr from intentional bad instantiation test
* fix cppcheck warning
2019-07-15 12:41:06 +02:00
IOBYTE
c2ccfd5f8b
Increase Windows stack size to 8M ( #1998 )
...
* Increase Windows stack size to 8M
* try to add stack size cmake
2019-07-15 12:39:58 +02:00
Daniel Marjamäki
af051a3787
astyle formatting
...
[ci skip]
2019-07-15 09:29:47 +02:00
Denis
68e6a440ff
Fix adding unescaped slash token when splitting gcc case range. ( #1987 )
...
* Fix adding unescaped slash token when splitting gcc case range.
Construction like case '!'...'~' converted to a list of separate case
tokens. When slas '\' symbol appears as a part of this list it was added
"as is", but it should be escaped like '\\' to be valid c++ code.
* Add test for switch-case range with slash
2019-07-15 09:29:31 +02:00
Daniel Marjamäki
aeefaf7004
Travis: Fix one more 'nonneg' issue
2019-07-14 22:49:37 +02:00
Daniel Marjamäki
b30ef3d050
Fix wrong 'nonneg'
2019-07-14 17:31:26 +02:00
Daniel Marjamäki
d2284ddbcd
Fix false positives in self check: Variable t is assigned a value that is never used. Classes with destructors was not handled properly.
2019-07-14 16:20:45 +02:00
Daniel Marjamäki
534659e596
Avoid 'unsigned' in Tokenizer. Use 'nonneg' instead for arguments and members.
2019-07-14 15:48:20 +02:00
Daniel Marjamäki
0014fe880e
Mark members and arguments with 'nonneg'
2019-07-14 12:22:33 +02:00
Daniel Marjamäki
36d7e8a361
Add 'nonneg' macro
2019-07-14 11:40:44 +02:00
Daniel Marjamäki
1cadd9398a
Fixed #8933 (false negative: (style) Variable is assigned a value that is never used (std::string))
2019-07-14 09:44:30 +02:00
Daniel Marjamäki
cf06acae08
Fixed #5995 (False negative selfAssignment regression from 1.65)
2019-07-13 21:45:54 +02:00
Daniel Marjamäki
49dd2deef1
Avoid 'unsigned' in ctu
2019-07-13 20:31:50 +02:00
Daniel Marjamäki
e489d9a40f
Fix bug. Used wrong ValueType in smart pointer handling
2019-07-13 20:29:15 +02:00
Daniel Marjamäki
5d853bcb58
Avoid 'unsigned' in astutils
2019-07-13 16:13:21 +02:00
Daniel Marjamäki
316537a837
Avoid 'unsigned' for int variables
2019-07-13 16:06:24 +02:00
Daniel Marjamäki
cff462c6ef
Token deleteNext/deletePrevious parameters
2019-07-13 15:47:53 +02:00
Daniel Marjamäki
bf9edc00c2
Fix compiler errors
2019-07-13 15:42:36 +02:00
Daniel Marjamäki
f5e76a2d18
Avoid 'unsigned' when declaring int variables in checkuninitvar
2019-07-13 15:31:17 +02:00
Daniel Marjamäki
794d25fcf5
Avoid 'unsigned' when declaring int variables in Platform
2019-07-13 15:23:59 +02:00
IOBYTE
526a86dc60
Fix recursiveCount in CheckLeakAutoVar to really be recursive count. ( #1988 )
2019-07-13 07:40:24 +02:00
Scott Furry
61dcf10b6c
Edit Change lib/errorlogger.h ( #1992 )
...
Shortening extremely long lines in file to improve readability.
2019-07-13 07:19:12 +02:00
Daniel Marjamäki
37d407641d
Avoid 'unsigned' types. line number.
2019-07-13 06:27:40 +02:00
Daniel Marjamäki
ae933c20c7
Fixed #1765 (Improve check: delete not handled well when there are extra parentheses)
2019-07-12 18:25:20 +02:00
Daniel Marjamäki
8ad3e43f92
Add handling of a simple C++ contract
2019-07-12 16:05:35 +02:00
Daniel Marjamäki
68cc7516a1
Annotations: Add annotation __cppcheck_in_range__(low,high)
2019-07-12 11:09:54 +02:00
IOBYTE
74e3114a64
Fix #9097 (Crash on thousands of "else ifs"s in gcc-avr package) ( #1982 )
...
* Fix #9097 (Crash on thousands of "else ifs"s in gcc-avr package)
* increase recursion count maximum to 512 because cppcheck was hitting the 256 limit
* 512 was too much for windows
2019-07-12 07:56:05 +02:00
Daniel Marjamäki
783f7f1648
Rename safeValues to unknownValues
2019-07-11 16:05:48 +02:00
IOBYTE
9700490e51
fix lib/checkclass.cpp:51:12: warning: enumeration value ‘eLambda’ not handled in switch [-Wswitch] ( #1978 )
2019-07-11 08:25:25 +02:00
Daniel Marjamäki
a9d61c4ddd
Fix Cppcheck warning
2019-07-10 22:08:27 +02:00
Daniel Marjamäki
5f217021ab
Another attempt to fix appveyor
2019-07-10 21:30:50 +02:00
Daniel Marjamäki
45844ef962
Try to fix appveyor. Replace int64_t with MathLib::bigint.
2019-07-10 21:26:20 +02:00
Daniel Marjamäki
05d35b063d
Function return: Extra check of safe function return values
2019-07-10 20:00:21 +02:00
Daniel Marjamäki
c9906125de
Safe functions: Check more possible function argument values
2019-07-10 16:59:05 +02:00
Daniel Marjamäki
9f548efbd3
Refactoring: enum class
2019-07-10 15:27:07 +02:00
Daniel Marjamäki
95d65c8c34
Refactoring; enum class
2019-07-10 14:05:16 +02:00
Rikard Falkeborn
a1a14b8465
Fix FP with cast pointer to free() ( #1961 )
...
This fixes false positives when the pointer passed to free() (or similar
deallocation functions) is cast using a c-style cast.
2019-07-10 09:13:59 +02:00
Daniel Marjamäki
58076bc672
SymbolDatabase: Better handling of smart pointers
2019-07-09 17:32:19 +02:00
IOBYTE
a05dfc9150
fix daca codeblocks crash ( #1968 )
...
* fix daca codeblocks crash
* fix the cause of the missing scope
2019-07-09 16:04:22 +02:00
Daniel Marjamäki
862c4ef87b
Symboldatabase: Fix possible null pointer dereference if smart pointer type does not have a scope
2019-07-08 17:43:45 +02:00
Daniel Marjamäki
a0b22410cf
SymbolDatabase: Better handling of smart pointers
2019-07-07 21:52:49 +02:00
IOBYTE
e551057f59
Refactor Tokenizer::simplifyUsing to use continue to reduce indentation ( #1967 )
...
* Refactor Tokenizer::simplifyUsing to use continue to reduce indentation
added function findTemplateDeclarationEnd to skip template declarations
to reduce duplicate code
* fix travis build
2019-07-07 18:33:33 +02:00
IOBYTE
c902c5f688
Fix #9197 (Template name cache: Assertion `tok && tok->str() == ">"' failed.) ( #1964 )
2019-07-07 10:20:43 +02:00
Paul Fultz II
b0d10273ed
Fix issue 3695: Handle class pointers
...
This switches to use lifetime analysis to check for assigning to non-local variables:
```cpp
class test
{
public:
void f()
{
int x;
this->ptr = &x;
}
protected:
int *ptr;
};
```
2019-07-07 10:16:19 +02:00
IOBYTE
9569fa1374
Partial fix for #9191 (simplifyTypedef: Problem when namespace is used) ( #1952 )
...
* Partial fix for #9191 (simplifyTypedef: Problem when namespace is used)
This fixes simplifyUsing which has the same problem as simplifyTypedef.
simplifyUsing was designed to support using namespace but it was never
implemented. The changes are minor to add it.
simplifyTypedef requires much more work to support using namespace.
* reduce scope of variable
* make idx const
2019-07-06 20:22:13 +02:00
PKEuS
ae86536128
Updated to Visual Studio 2019
2019-07-06 12:11:19 +02:00
Paul Fultz II
65af02f0cf
Fix crash with lambda capture ( #1960 )
2019-07-06 10:46:17 +02:00
versat
57d44f1362
astyle formatting
...
[ci skip]
2019-07-05 14:00:59 +02:00
Rikard Falkeborn
839fcddd8a
Fix #6115 (Add support to realloc to cfg files) ( #1953 )
...
* Allow to configure realloc like functions
* memleakonrealloc: Bring back tests.
The old memleak checker was removed, and the tests for it was removed in
commit 9765a2dfab
. This also removed the
tests for memleakOnRealloc. Bring back those tests, somewhat modified
since the checker no longer checks for memory leaks.
* Add realloc to mem leak check
* Add tests of realloc buffer size
* Configure realloc functions
* Add test of freopen
* Allow to configure which element is realloc argument
* Fix wrong close in test
cppcheck now warns for this
* Update manual
* Update docs
* Rename alloc/dalloc/realloc functions
Naming the member function realloc caused problems on appveyor. Rename
the alloc and dealloc functions as well for consistency.
* Change comparisson order
* Remove variable and use function call directly
* Create temporary variable to simplify
* Throw mismatchError on mismatching allocation/reallocation
* Refactor to separate function
* Fix potential nullptr dereference
As pointed out by cppcheck.
2019-07-05 12:44:52 +02:00
Paul Fultz II
e0ced1c415
Parse lambdas as functions ( #1955 )
...
* Parse lambdas as functions
* Fix issue with missing paren
* Fix error when parsing non-existent args
* Remove unused function variable
2019-07-05 12:30:42 +02:00
Rikard Falkeborn
2a17e624d9
Overlapping sprintf, improve handling of casts ( #1945 )
...
* Overlapping sprintf, improve handling of casts
If there is a cast of the argument buffer, cppcheck would print out the
expression including the cast, which looks a bit strange to talk about
Variable (char*)buf is used as...
Instead, only print the variable name without the cast.
Also, handle arbitrary many casts (the previous code only handled one).
Multiple casts of the input arguments is probably an unusual case in
real code, but can perhaps occur if macros are used.
* Fix printing of variable
... and add a test.
* Simplify testcase
2019-07-05 12:27:39 +02:00
Paul Fultz II
5801fb26f0
Fix syntax error with lambda captures ( #1954 )
...
* Fix syntax error with lambda captures
* Fix issue when using initializer in lambdas
2019-07-05 12:26:01 +02:00
shaneasd
7e54f989f9
Update symbol database such that the override keyword implies that the function is also virtual ( #1907 )
...
* Update symbol database such that the override keyword implies that the function is also virtual
* Add test case for implicit override
* change isVirtual to hasVirtualSpecifier
* fix method documentation for getVirtualFunctionCalls and getFirstVirtualFunctionCallStack
* Fix isImplicitlyVirtual to consider the override keyword and document logic
* Fix getFirstVirtualFunctionCallStack and getVirtualFunctionCalls to use isImplicitlyVirtual instead of isVirtual so new test case passes
2019-07-04 12:32:32 +02:00
Rikard Falkeborn
60a213e6a5
Fix #9047 (c-style casts before malloc) ( #1930 )
...
* Fix #9047 (c-style casts before malloc)
Note that there are still no warnings for c++-style casts
* Fix memleak check with casts of assignments in if-statements
* Fix possible null pointer dereference
As pointed out by cppcheck.
* Add check of astOperand2 when removing casts
This is similar to how it is done in other checks.
2019-07-03 08:39:44 +02:00
IOBYTE
c4933acb5a
Fixed #9147(SymbolDatabase bailout: unhandled code) ( #1948 )
...
* Fixed #9147(SymbolDatabase bailout: unhandled code)
* add test for #9183
2019-07-03 08:35:48 +02:00
Daniel Marjamäki
f84dcc4738
astyle formatting
...
[ci skip]
2019-07-03 08:29:47 +02:00
Paul Fultz II
8f4cb36e1e
Check for more garbage code ( #1949 )
...
* Check for garbage commas
* Find garbage dot operator
2019-07-03 08:28:24 +02:00
Ken-Patrick
d6f6e68fa2
Fix false positive 9167 ( #1904 )
...
Skip returns from local class/struct definition in FwdAnalysis.
2019-07-03 08:17:06 +02:00
PKEuS
d74f8c678f
Set version to 1.88.99/1.89 dev
2019-07-02 20:59:52 +02:00
IOBYTE
5642778206
Fixed #9193 (functionStatic false positive (inconclusive)) ( #1943 )
2019-07-02 11:40:57 +02:00
IOBYTE
bf4e1ef790
template simplifier: consistently handle templates with no arguments ( #1939 )
...
this fixes daca boost1.67 crashes
2019-07-01 07:01:14 +02:00
Daniel Marjamäki
0eedcfc160
Fixed #7464 (warn about opposite if and else-if conditions)
2019-06-30 23:26:49 +02:00
Scott Furry
e459762bcd
Suppress Code semantic and syntax warnings ( #1936 )
...
Sources were built with Clang but with increased verbosity of error detection.
A number of syntax and semantic warnings were encountered. Commit adds
changes to correct these warnings.
Some changes involve removing extra, and unncessary, semi-colons at EOL
(e.g. at end of switch clause).
Project astyle settings are not currently setup to detect if a file is to
have an extra carriage return after the last line of data. Two files were
altered to ensure an extra carriage return.
An advisory to enhance code was encountered in triage code. Clang advisory
on a for-loop interation value suggested that:
`use reference type 'const QString &' to prevent copying`
2019-06-30 21:43:25 +02:00
Scott Furry
a195477470
Correct Zero/Null as pointer constant ( #1938 )
...
Building with enhanced clang warnings indicated a large number of
instances with the warning:
`warning: zero as null pointer constant`
Recommended practice in C++11 is to use `nullptr` as value for
a NULL or empty pointer value. All instances where this warning
was encountered were corrected in this commit.
Where warning was encountered in dependency code (i.e. external library)
no chnages were made. Patching will be offered upstream.
2019-06-30 21:39:22 +02:00
Daniel Marjamäki
4d81b77249
Fixed Cppcheck warning, condition is always false
2019-06-30 18:43:55 +02:00
Daniel Marjamäki
56df6169fb
Fixed #8356 (ValueFlow: variable is not changed in for loop)
2019-06-30 17:50:35 +02:00
albert-github
280a0a7b2f
Wrong argument name used in documentation ( #1937 )
...
Trivial error in documentation
2019-06-30 15:41:53 +02:00
Scott Furry
1994b21ae5
Minor Corrections to Doxygen data ( #1935 )
...
Increasing the verbosity in Clang, warnings were produced that identified
differences in code and doxygen-formatted comments.
Corrections applied to silence warnings yet still convey intent of original comments.
2019-06-30 09:17:42 +02:00
Daniel Marjamäki
d9a9743b8a
Revert "Calculate token scopes in advance rather than as the tokenlist is iterated ( #1882 )"
...
This reverts commit 0d7836f3a0
.
2019-06-30 09:12:18 +02:00
rebnridgway
0d7836f3a0
Calculate token scopes in advance rather than as the tokenlist is iterated ( #1882 )
...
* Added scopeinfo member to token class
Moved ScopeInfo2 declaration here as well because that's where it needs to be now.
* Added scopeinfo accessors and declaration to class
* Add new method for calculating scopes
This replaces the methods in the TemplateSimplifier which calculate the current scope as the token list is iterated. The old method required checking if the scope had changed for every token multiple times (for multiple iterations), which was surprisingly costly. Calculating scopes in advance like this decreases runtime on a worst-case file by around thirty percent.
ScopeInfo objects are disposed of when the TemplateSimplification is done as they are not used later.
* Add calculateScopes method to header
* Removed code that calculated current scope
This has been replaced by code that calculates the scopes up front and stores them with each token, which is much faster.
* Fixed compile errors from extra parentheses
* Added missing code to fix memory leak
* Added code to actually clean up ScopeInfo structs
* Tidy up a dodgy for loop
* Convert argument to const ref
* Calculate missing scopes
As the templatesimplificator expands templates and does multiple passes it needs to make sure all scopes are calculated.
* Remove copying the scope to the next token
This is now done properly when scopes are calculated.
* Remove call to calculateScopes
This is now done by the TemplateSimplifier.
* Recalculate scopes for every pass of simplifyTemplates
* Add code to calculate extra scopes as they are added
I thought that this might be useful for calculating scopes when Tokens are created, but as there are several ways of creating Tokens that don't guarantee that they are placed in a list it is easier to just calculate scopes when you know you have a list and when you know you're adding to a list.
* Fix several bugs and poorly designed code
Remove the global scopes collection, and clean them up instead by iterating through the tokenlist to find them. This means scopes can be calculated by functions in the Token class as well as in the Tokenizer class without leaking the scope object.
Fix a couple of bugs in the calculateScopes method and make it more efficient.
* Remove unnecessary calls to calculateScopes
* Move brace to correct position
Calculating scopes during insertToken only needs to happen if we created a new Token.
* Handle 'using namespace' declarations separately
This fixes a bug caused by a statement matching 'struct B < 0 > ;'
* Fix argument name mismatch
* Actually use newScopeInfo when inserting Token
* Switch to using shared_ptr to hold scopeInfos
This means ScopeInfo2 objects get properly cleaned up when they are no longer needed.
* Change ScopeInfo member to be a shared_ptr
* Update code to use shared_ptr
* Add missing include for shared_ptr
* Remove unnecessary cleanup code
This has been replaced by shared_ptr for ScopeInfo2 objects
2019-06-29 14:34:22 +02:00
Rikard Falkeborn
d1d622b74c
Valueflow: support global static const variables ( #1861 )
2019-06-29 14:33:55 +02:00
Daniel Marjamäki
faaabc74a7
Set version 1.88
2019-06-29 08:38:13 +02:00
Daniel Marjamäki
341406ab17
Fixed Cppcheck warning; ::AddonInfo::getFullPath can be static
2019-06-29 07:59:55 +02:00
Daniel Marjamäki
0a41f1ad6b
Fix Cppcheck warning: Suppressions::dump can be const
2019-06-29 07:53:32 +02:00
Daniel Marjamäki
84cc09d17c
Update Copyright
2019-06-29 07:49:14 +02:00
Daniel Marjamäki
9c3c2d785b
Fixed Cppcheck warning
2019-06-29 07:46:25 +02:00
IOBYTE
8b347aed42
Fixed #8663 (Stack overflow with template disambiguator) ( #1932 )
2019-06-28 22:07:21 +02:00
IOBYTE
16788df055
template simplifier: various small fixes ( #1916 )
...
* fix adding instantiation of first argument to an instantiation
* add support for function pointer template variables
* fix more cases where templates ending in ">>" are changed to end in "> >"
* fix travis build
* standard types can't be a template parameter name
* remove redundant level == 0 checks
* fix lambda in template variable
* fix a test
2019-06-28 11:14:20 +02:00
Carlo Marcelo Arenas Belón
ec4e43767e
minor improvements ( #1929 )
...
* lib: isNonBoolStdType no longer needed
lib/checkbool.cpp:50:13: warning: unused function 'isNonBoolStdType'
[-Wunused-function]
static bool isNonBoolStdType(const Variable* var)
* cmake: C++11 is required
also change instructions to a more common syntax
2019-06-28 06:57:05 +02:00
Ken-Patrick
927d139488
Fix FP #9165 ( #1928 )
...
Properly check the type of the expressions, instead of using the type
of the tokens
2019-06-27 07:48:44 +02:00
Daniel Marjamäki
c97dc79815
--addon: Use json for addon output
2019-06-24 19:29:43 +02:00
Paul Fultz II
66e0f06494
Fixx issue 9163: FP returnDanglingLifetime - returning std::string::find ( #1912 )
...
* Fixx issue 9163: FP returnDanglingLifetime - returning std::string::find
* Use simpleMatch
2019-06-24 18:52:17 +02:00
IOBYTE
46b543ba27
template simplifier: stop running passes when nothing was simplified. ( #1914 )
2019-06-23 10:55:09 +02:00
Daniel Marjamäki
175070ca50
Revert "Fixed #8938 (FP identicalInnerCondition)"
...
This reverts commit 0edf0b5628
.
This bailout seems to cause many false negatives
2019-06-22 21:57:19 +02:00
Daniel Marjamäki
de9c999d79
Better handling of spaces in paths
2019-06-22 19:20:15 +02:00
Daniel Marjamäki
7ceb51a952
Try to improve 'clarifyStatement' warning message
2019-06-22 08:44:41 +02:00
Daniel Marjamäki
beea7fa8d2
Token::index(): Created Token member that indicates the Token position in the token list. It can be used to quickly check if tok1 precedes tok2.
2019-06-21 22:16:23 +02:00
Daniel Marjamäki
d636a83f8b
Tokenizer: Assign Token 'progressValue' before returning so they are set properly when the checks are run
2019-06-21 08:43:19 +02:00
Daniel Marjamäki
c98ceb6e14
Tweak bailout so it's only used in unused template classes
2019-06-20 14:00:44 +02:00
Daniel Marjamäki
cf79830afd
Revert "Remove bailout. It hides lots of warnings for real code to avoid FP in unused templates."
...
This reverts commit 2a4be5ae1c
.
When I look at daca@home now there are still lots of false negatives. So this bailout did not cause as much false negatives as I thought.
2019-06-19 22:29:00 +02:00
Ken-Patrick
44d6066c6f
FP on assignment through pointer ( #1887 )
...
* Fix FP when assigning through pointers
* Add test case for false positive
cppcheck would faulty warn:
"Condition '*b>0' is always true"
2019-06-17 21:25:15 +02:00
IOBYTE
246576fceb
Fixed #9178 (Assertion `brackets1.empty() == false' failed on valid C++ code) ( #1905 )
...
This fixes a nasty intrinsics related bug causing instantiations that
shouldn't happen.
2019-06-17 21:18:27 +02:00
Daniel Marjamäki
59c7be307c
Travis: Fix test/cli testing
2019-06-16 19:11:12 +02:00
Daniel Marjamäki
2a4be5ae1c
Remove bailout. It hides lots of warnings for real code to avoid FP in unused templates.
2019-06-16 19:01:45 +02:00
Rikard Falkeborn
d909ac8565
Bugfix buffer size for strdup like functions ( #1893 )
...
strdup() allocates the string length plus one for a terminating null
character. Add one to compensate for this.
Fixes false positive buffer out of bounds on code like this:
void f() {
const char *a = "abcd";
char * b = strdup(a);
printf("%c", b[4]); // prints the terminating null character
free(b);
}
Also, add a testcase for valueFlowDynamicBufferSize() and add tests for
strdup(), malloc() and calloc().
2019-06-16 16:02:27 +02:00
Daniel Marjamäki
ba0a75881a
Refactor AddonInfo::getAddonInfo
2019-06-16 15:46:20 +02:00
Ken-Patrick
66ebc187f6
Cleanup some const_cast of Token* ( #1886 )
...
* Add non const version of some methods of Token
The aim is to reduce the (ab)use of const_cast.
* Cleanup some more const_cast in valueflow
* Remove useless const_cast
* Remove some const_cast from templatesimplifier
* Remove some const_cast from valueflow
2019-06-16 10:09:38 +02:00
Daniel Marjamäki
61a259597b
Fix Cppcheck warnings
2019-06-15 13:28:01 +02:00
Daniel Marjamäki
8359d85b12
Fix Cppcheck warning
2019-06-15 13:23:21 +02:00
Daniel Marjamäki
46cad95238
Fix Cppcheck warnings
2019-06-15 13:05:17 +02:00
Daniel Marjamäki
d1f80a2a91
Fix Cppcheck warnings
2019-06-15 13:01:45 +02:00
Paul Fultz II
b466415bb4
Fix syntax error in issue 9155 ( #1885 )
2019-06-15 09:48:22 +02:00
IOBYTE
75720528b0
template simplifier: add 2 new template parameter simplifications ( #1884 )
...
* template simplifier: add 2 new template parameter simplifications
int{} -> 0
decltype(int{}) -> int
This fixes reduced test cases like #9153 . I'm not sure they will help
real world code that much.
It was necessary to increase the pass count to 4 to get #9153 completly
simplified.
* relax decltype(type{}) simplification to any type
2019-06-15 09:46:32 +02:00
Daniel Marjamäki
e37b92fb3b
astyle formatting
...
[ci skip]
2019-06-14 12:07:22 +02:00
eivindt
44670005ea
Record C/CPP/Posix Standard used for cppcheck in dump file / use this for misra checking ( #1782 )
...
* Add cmd parameter for choosing between C90 and C99
Misra specifies different requirements to the uniqueness of
macros/enums/variables depending on what C standard
that's being used.
* Add standards configuration to each dump file
Read standards config from misra addon to decide what rules to use.
* Posix as standard setting should be deprecated. Don't include this in the xml
* Rewritten to use a switch
2019-06-14 12:06:57 +02:00
eivindt
5dd7dacfd7
Fix small error using correct name for addon script when specified in json file ( #1881 )
2019-06-13 14:11:21 +02:00
IOBYTE
c0d8990e8b
Fix up a few more cases where templates ending in ">>" should be changed to end in "> >". ( #1883 )
2019-06-13 13:37:55 +02:00
IOBYTE
2a4b28c267
Fixed #9155 (Syntax error on valid C++ code) ( #1880 )
...
Refactored simplifyTemplateAliases to iterate over template type aliases
rather than instantiations. This fixed template type aliases that were
not templates.
Don't instantiate templates in template type aliases. They will get
instantiated once the type alias is instantiated. This required
increasing the template simplifier pass count to 3 so one of the
existing tests continued to work.
2019-06-12 07:44:48 +02:00
Paul Fultz II
b863c18e1d
Fix crash in issue 9007 ( #1878 )
2019-06-10 08:24:09 +02:00
Paul Fultz II
169510bd3a
Fix issue 9171: Endless recursion ( #1877 )
2019-06-10 08:22:48 +02:00
IOBYTE
5af8beecf6
template simplifier: specialized member class not recognized causing wrong instantiation ( #1876 )
...
Specialized member classes declared outsize the class were not
recognized. This caused the the member class to be instantiated rather
than the specialized class. We already had a test for this but it was
wrong so it went unnoticed.
2019-06-09 08:11:59 +02:00
Paul Fultz II
1f24aa778b
Fix issue 9156: Analysis failed because square brackets arent linked correctly ( #1871 )
2019-06-09 08:10:57 +02:00
IOBYTE
7a87786cbc
template simplifier: class or typename can't be a name ( #1875 )
...
* template simplifier: class or typename can't be a name
* struct can't be a name
2019-06-08 07:27:53 +02:00
IOBYTE
81e41f129a
template simplifier: improve populating template specialization maps ( #1873 )
...
Declaration to specialization mapping is still not perfect.
2019-06-07 08:22:34 +02:00
IOBYTE
f02e45bf3d
fix syntax error for std::literals::complex_literals::operator""if ( #1870 )
2019-06-05 10:15:22 +02:00
IOBYTE
41cf865947
template simplifier: add links to expanded return type in function forward declaration ( #1868 )
...
This crash was seen in daca capnproto but I could only get creduce to
generate garbage code so the test is in checkgarbage.
2019-06-03 07:06:04 +02:00
Daniel Marjamäki
7ca35d181b
uninitStructMember: Fixed FP shown in daca@home
2019-06-02 20:19:53 +02:00
Daniel Marjamäki
7a3302b3e3
CheckLeakAutoVar: Fixed FP seen in daca@home
2019-06-02 15:25:54 +02:00
orbitcowboy
821903e2e1
Running astyle [ci skip]
2019-06-02 13:29:20 +02:00
Paul Fultz II
8a1c0dd017
Fix FP with non-local variable referencing a non-local variable ( #1864 )
2019-06-02 10:21:26 +02:00
Paul Fultz II
6ae7be0f53
Fix FP with lifetime containers ( #1865 )
2019-06-02 10:14:48 +02:00
IOBYTE
bee248b2de
token simplifier: fix namespace, token link and syntax error support for template type aliases ( #1863 )
2019-06-01 10:52:29 +02:00
Daniel Marjamäki
5d10b57b04
Fixed #8997 (False positive redundantAssignment when pointer is updated with +=)
2019-05-31 12:24:31 +02:00
Paul Fultz II
f75c15af56
Fix issue 6821: New check: access heap/stack data using address of variable
...
This fixes errors with:
```cpp
int f() {
int i;
return (&i)[1];
}
```
It uses the lifetime analysis to detect the issues.
2019-05-31 12:24:31 +02:00
orbitcowboy
79ab9cf84d
Running astyle [ci skip].
2019-05-31 10:14:52 +02:00
Paul Fultz II
108cdaa485
Fix FP with unreadVariable ( #1859 )
2019-05-31 08:06:36 +02:00
Paul Fultz II
33130bdff6
Fix issue 9145: Syntax error on valid C++14 code ( #1860 )
2019-05-31 08:05:01 +02:00
Daniel Marjamäki
f66cbac0a4
Fix Cppcheck warning
2019-05-30 21:48:12 +02:00
Daniel Marjamäki
de07e2177c
Fix Travis hang
2019-05-30 21:25:14 +02:00
Daniel Marjamäki
66a61fe5e8
SymbolDatabase: Improved findFunction
2019-05-30 20:26:45 +02:00
Daniel Marjamäki
36b6fb9f4d
Fixed #8558 (False portability positive caused by incorrect method resolution)
2019-05-30 19:24:51 +02:00
Daniel Marjamäki
4da50942b0
Fixed #8120 (False positive: Memory pointed to by 'p' is freed twice)
2019-05-30 16:22:41 +02:00
orbitcowboy
55df395a4e
Running astyle [ci skip]
2019-05-30 14:41:14 +02:00
Ken-Patrick
3cdc236e10
Fix false positive with several ! (not) operators ( #1856 )
...
With the following code
int f(int x, int y) {
if (!!(x != 0)) {
return y/x;
}
cppcheck would wrongly warn that there might be a division by zero in
"return y/x;".
2019-05-29 09:45:15 +02:00
IOBYTE
1e7f5010eb
template simplifier: fix expansion of template arguments in default parameter instantiation ( #1857 )
2019-05-28 21:32:37 +02:00
orbitcowboy
66e8ec90de
wxwidgets.cfg: Added support for wxWindow::ClientToScreen().
2019-05-28 08:50:38 +02:00
orbitcowboy
f54c60c13d
Running astyle [ci skip]
2019-05-28 08:49:59 +02:00
IOBYTE
e8692b012f
template simplifier: partial fix for instantiation of templates with type trait parameters ( #1855 )
2019-05-27 20:51:52 +02:00
Paul Fultz II
312fdf157b
Fix issue 9144: Syntax error with type intrinsics ( #1852 )
...
* Fix issue 9144: Syntax error with type intrinsics
* Only run when using cpp
2019-05-27 06:54:21 +02:00
Paul Fultz II
61935802d1
Fix issue 9141: Syntax error ( #1853 )
2019-05-27 06:50:43 +02:00
orbitcowboy
b3c3ecf926
MathLib: Removed condition that is evaluates always to 'false'.
2019-05-26 10:46:12 +02:00
Paul Fultz II
eb1c9ba357
Cache template name position to improve performance
...
This improves the performance of the templatesimplefier by caching the template name position. I am not sure if the works entirely correctly but all the tests do pass with this change. Running this with gtest headers without removing unused template headers the time went from 48s to 5s, almost a 10x improvement.
2019-05-25 10:08:51 +02:00
Paul Fultz II
cb7f925f5e
Fix issue 9109: Syntax error for valid C++ code
2019-05-24 10:44:08 +02:00
IOBYTE
5efb23ffff
template simplifier: fix instantiation of variadic template with no arguments ( #1848 )
...
* template simplifier: fix instantiation of variadic template with no arguments
* fix white space change
* add support for <class...>
* add variadic template flag
2019-05-23 20:53:26 +02:00
Daniel Marjamäki
de4a33167d
astyle formatting
...
[ci skip]
2019-05-21 10:43:33 +02:00
Paul Fultz II
9838bfa79f
Fix false positive in constArgument when passing struct member ( #1845 )
2019-05-21 10:41:16 +02:00
Paul Fultz II
9949ae1b4f
Fix issue 8995: False Positive: Redundant code with initializer-list created object ( #1844 )
2019-05-21 10:40:36 +02:00
Paul Fultz II
9055682fdc
Fix synax error in issue 9057 and 9138 ( #1843 )
2019-05-21 08:47:10 +02:00
Daniel Marjamäki
29e5992e51
Fixed #9045 (FP operatorEqRetRefThis - recent regression)
2019-05-20 21:30:20 +02:00
IOBYTE
592ff56b90
template simplifier: fix single parameter template with default value ( #1842 )
...
* template simplifier: fix single parameter template with default value
* fix derived class with single default argument
2019-05-19 19:19:57 +02:00
Paul Fultz II
ce96ec2773
Fix issue 9136: Syntax error on valid C++14 code: createLinks2() failed
2019-05-19 19:06:12 +02:00
Paul Fultz II
8cbd9b03aa
Fix issue 8890: AST broken calling member function from templated base class ( #1836 )
...
* Fix issue 8890: AST broken calling member function from templated base class
* Format
* Check for double bracket
* Add test to createLinks2
* Remove extra test
* Reduce test case for links
2019-05-19 10:05:34 +02:00
Rikard Falkeborn
ada881ccdf
Fix #9130 (FP memory leak with NULL pointer cast) ( #1839 )
2019-05-18 06:22:25 +02:00
Paul Fultz II
cf3515ee61
Fix issue 7372: False positive uninitMemberVar - on template specialization
...
This fixes the issue by skipping diagnostics when the symbols are incomplete in the constructor.
2019-05-17 20:24:41 +02:00
Carlo Marcelo Arenas Belón
bf5c71bdca
sync ( #1835 )
...
* build: remove -Wabi and add -Wundef
gcc >= 8 throws a warning about -Wabi (without a specific ABI version)
being ignored, while -Wundef seems more useful (as shown by the change
in config.h, which was probably an unfortunate typo)
travis.yaml should probably be updated soon, but was left out from this
change as the current images don't yet need it
* lib: unused function in valueflow
refactored out since 8c03be3212
lib/valueflow.cpp:3124:21: warning: unused function 'endTemplateArgument' [-Wunused-function]
* readme: include picojson
* make: also clean exe
2019-05-17 09:31:41 +02:00
Daniel Marjamäki
57c6628732
Revert 'Cleaning up unsimplified templates'. This fix caused problems.
2019-05-16 21:11:04 +02:00
Daniel Marjamäki
34cf62452e
Change approach for Tokenizer::createLinks2: assume that <> should be linked
2019-05-16 20:50:56 +02:00
Daniel Marjamäki
0144db2490
Fixed 'Syntax Error' when < link is not set properly
2019-05-15 21:34:56 +02:00
Daniel Marjamäki
21ec78d8a1
Fix typo: %stype% => %type%
2019-05-15 09:06:27 +02:00
Daniel Marjamäki
79bb22f038
Fixed #9131 (Tokenizer::createLinks2; using std::list; list<config_option*> stack;)
2019-05-14 20:30:02 +02:00
Paul Fultz II
4e94c64da8
Fix issue 9099 and 9102: Incorrect valueflow for global variables ( #1832 )
2019-05-14 08:58:27 +02:00
Paul Fultz II
195da2b3d2
Fix issue 8993: False positive duplicateCondition related to auto ( #1831 )
2019-05-14 08:57:36 +02:00
Rikard Falkeborn
dc0e8c214e
Fix #9128 (FP in return non bool with class declared in function) ( #1830 )
...
Also break up the tests to smaller tests.
2019-05-14 08:56:28 +02:00
Daniel Marjamäki
9f00149674
Fixed #9127 (ast: wrong ast after using and template instantiation)
2019-05-12 17:24:42 +02:00
Daniel Marjamäki
27fad38e00
Fixed #9084 (Tokenizer::setVarId: Same varid for member variable and argument, unknown template type)
2019-05-12 09:10:37 +02:00
Daniel Marjamäki
4d9b1e6c3d
Fixed #9094 (Tokenizer::createLinks2 problem with 'x%x<--a==x>x')
2019-05-11 19:11:40 +02:00
Daniel Marjamäki
1e2f1bac1f
Fixed #8921 (Broken AST - mem = (void*)(new char))
2019-05-11 15:50:30 +02:00
Daniel Marjamäki
d58d4273f9
Cleaning up unsimplified templates
2019-05-11 13:00:03 +02:00