Daniel Marjamäki
498cdb8610
added debug output for the value flow
2014-01-18 09:58:32 +01:00
Daniel Marjamäki
30cae358d8
Removed the --value-flow flag. ValueFlow analysis will always be enabled from now on.
2014-01-17 18:07:05 +01:00
Daniel Marjamäki
311059f603
Tokenizer: Removed commented-out simplification
2014-01-17 17:44:33 +01:00
Daniel Marjamäki
0203a4a6f5
Tokenizer: Removed simplifyGoto as it's the cause of various FPs I see
2014-01-17 17:36:45 +01:00
Daniel Marjamäki
4eb746d7cc
Tokenizer: Removed simplifyComparisonOrder
2014-01-17 17:25:56 +01:00
Daniel Marjamäki
ab866be03a
Tokenizer: Move 'else if' simplification to tokenize
2014-01-12 17:47:02 +01:00
Heinrich Schuchardt
f6510a6b45
Fixed #5339 (Tokenizer::setVarId : function-pointer function argument not getting variable id, causing FP)
2014-01-12 15:15:09 +01:00
Daniel Marjamäki
752e9d0fb7
Tokenizer::varId: Fixed wrong varid for shadow types with same names as class members
2014-01-09 21:44:29 +01:00
Daniel Marjamäki
4f11086505
Tokenizer: Don't remove parentheses in 'a?b:(c>0?d:e)'
2014-01-08 20:53:33 +01:00
Martin Ettl
fa04273473
Merge branch 'master' of https://github.com/danmar/cppcheck
2014-01-06 18:51:15 +01:00
Zachary Blair
4a2da09491
minor cleanups. initialize members in initialization list
2014-01-06 08:02:04 +01:00
Daniel Marjamäki
afaf1473a8
Value flow: refactorings, write debug warning if iterating too far
2014-01-05 20:06:46 +01:00
Daniel Marjamäki
29c64cc34c
Merge pull request #209 from simartin/ticket_5266
...
Ticket #5266 : Properly tokenize "complex" static variable declarations.
2014-01-05 04:44:22 -08:00
Daniel Marjamäki
d8270c710a
Add new experimental value flow analysis
2014-01-04 20:57:02 +01:00
Simon Martin
d2cf9fd77c
Ticket #5266 : Properly tokenize "complex" static variable declarations.
2014-01-04 10:49:27 +01:00
Simon Martin
6019f45249
Ticket #5201 : Get rid of internal error when checking valid C input for memory leaks.
2014-01-03 23:27:56 +01:00
Martin Ettl
5a5277f2fa
Tokenizer::simplifyVarDecl: Fixed crash when checking garbage code.
2014-01-01 19:15:32 +01:00
Martin Ettl
0dccd3a632
Tokenizer:simplifyFlowControl(): Fixed crash on garbage code.
2014-01-01 19:04:02 +01:00
Daniel Marjamäki
32be4094e7
Symbol database: only put variables in variable list
2013-12-31 17:51:56 +01:00
PKEuS
4f0121ee2f
Splitted simplification out of tokenize()
2013-12-30 17:45:28 +01:00
Daniel Marjamäki
41e4194573
Tokenizer: set links for <> in 'a=new b<c>;' code
2013-12-29 15:37:27 +01:00
Daniel Marjamäki
596b4bd405
astyle formatting
2013-12-23 12:26:12 +01:00
Simon Martin
02dc49624d
Ticket #5214 : Don't read out of bounds upon invalid ternary operator.
2013-12-22 18:13:52 +01:00
Daniel Marjamäki
e2bc99aa24
Fixed #5154 (Tokenizer: wrong handling of msvc 'for each')
2013-12-17 06:34:27 +01:00
Daniel Marjamäki
762806499f
Fixed #5182 (Tokenizer::simplifyEnum: template function call as enum value)
2013-12-16 07:07:00 +01:00
Daniel Marjamäki
7938692b01
Fixed #5212 (Tokenizer::simplifyEnum bad simplification of enum value (1<<0)|(1<<1))
2013-12-15 07:47:04 +01:00
Daniel Marjamäki
f599e3184c
Fixed #5174 (Tokenizer: member function 'abort' returns)
2013-12-14 11:12:48 +01:00
Daniel Marjamäki
5ba02d2fdd
AST: Always use AST
2013-12-09 18:06:19 +01:00
Daniel Marjamäki
0c5282b1af
Fixed #5081 (False positive: (error) Uninitialized variable: f (handling of C-cast not correct))
2013-11-28 16:04:47 +01:00
Alexander Mai
38b2f6b9b0
Fixed #5168 (segmentation fault (invalid code) in Tokenizer::simplifyVarDecl)
2013-11-24 11:07:11 +01:00
Simon Martin
9817da00ec
Ticket #5168 : Don't crash when simplifying bit-fields for invalid code.
2013-11-23 20:33:03 +01:00
orbitcowboy
b74db1b791
Tokenize:simplifyFloatCast(): added corresponding suffix, incase of type 'float'.
2013-11-20 23:58:43 -08:00
Daniel Marjamäki
ef108c49ec
Tokenizer: simplify enums better. add parentheses to enforce operator precedence.
2013-11-20 18:04:28 +01:00
Daniel Marjamäki
47b98470eb
Tokenizer: Simplify float casts of integer constants
2013-11-19 18:07:12 +01:00
Daniel Marjamäki
2a640a59c2
Tokenizer: Improved handling of pointer aliases. This fixes some false negatives.
2013-11-16 17:30:04 +01:00
Daniel Marjamäki
30720affd6
Tokenizer::setVarId: Fixed hang when checking libgc
2013-11-15 16:16:22 +01:00
Daniel Marjamäki
7fe51eb58b
Fixed #4989 (False positive: Wrong processing of __asm block)
2013-11-13 06:04:00 +01:00
Martin Ettl
347e1eae20
Fixed #5162 : Tokenizer:simplifyInitVar: Unused pointer value (UNUSED_VALUE) returned_pointer: Pointer tok2 returned by tok2->next() is never used (CID 1124084).
2013-11-10 00:40:42 +01:00
Daniel Marjamäki
b0ce42565e
AST: Added experimental new implementations for CheckAssignIf::comparison, CheckOther::checkIncorrectLogicOperator and CheckOther::checkDuplicateExpression
2013-11-07 14:38:08 +01:00
orbitcowboy
929cda6696
fixed #5141 : Tokenizer: Dereference before null check (Scan.coverity id 1061759)
2013-11-04 03:53:23 -08:00
Daniel Marjamki
bcc8384a95
Fixed #5145 (False Positive: Variable 'A' hides enumerator with same name)
2013-11-03 09:34:48 +01:00
Daniel Marjamäki
5f0cfa0ee4
Fixed #4983 (False positive warning 'Possible null pointer dereference: lblList - otherwise it is redundant to check it against null.' with sizeof lblList[0])
2013-11-02 23:56:10 +01:00
Daniel Marjamäki
bbdfd8b5c7
Make it possible to create AST, by using the --ast flag
2013-11-02 18:37:35 +01:00
Daniel Marjamäki
f0a621a952
Tokenizer: Added MAXTIME so cppcheck can be compiled with a hard max time. Will be used for the daca2.
2013-11-02 17:31:14 +01:00
Daniel Marjamäki
d3bd373798
Fixed #5131 (False Positive: %u in format string requires 'unsigned int' but the argument type is 'int'.)
2013-10-31 17:20:00 +01:00
Simon Martin
d67722ebdf
Ticket #5121 : Handle comma separated static variable declarations depending on one another
2013-10-30 15:48:00 +01:00
orbitcowboy
30984ff649
Tokenize: improved const correctness of local variables, no functional change.
2013-10-25 01:34:53 -07:00
orbitcowboy
76e092428a
Tokenize: improved const correctness of local variables, no functional change.
2013-10-25 01:31:55 -07:00
Daniel Marjamäki
5d7e0aebf4
Fixed #5084 (False positive: (style) Same expression on both sides of '&&')
2013-10-19 18:04:53 +02:00
Robert Reif
b41ab8a4d5
Fixed #5088 (Token::Match called with varid 0. in libreoffice sd/source/ui/table/TableDesignPane.cxx)
2013-10-14 21:05:54 +02:00
orbitcowboy
9debeab47c
Tokenizer:simplifyMathExpressions: fixed false negative patterns for simplification.
2013-10-11 11:58:37 -07:00
Martin Ettl
a674ed1aa9
Tokenizer:simplifyMathFunction: added simplifcation for fma[f|l]() functions.
2013-10-13 16:28:02 +02:00
Martin Ettl
e18ebf313f
Tokenizer:simplifyMathFunctions: added support for more math functions.
2013-10-13 15:41:47 +02:00
Martin Ettl
cdb47813d5
Tokenizer:simplifyMathFunctions: added support for cosh[f|l], cos[f|l] and erfc[f|l] functions.
2013-10-13 14:23:10 +02:00
orbitcowboy
6eaa2f2444
Tokenizer:simplifyMathFunctions: added support for acos[f|l] functions.
2013-10-09 07:59:32 -07:00
Martin Ettl
f08325284c
Tokenizer:simplifyMathFunctions: added support for acosh[f|l]() functions.
2013-10-07 22:10:58 +02:00
Daniel Marjamäki
c234cace6d
Fixed #5064 (Tokenizer::simplifySizeof: Doesn't simplify 'sizeof !! (a==1);' properly)
2013-10-06 08:20:10 +02:00
Daniel Marjamäki
9cfc1030cd
Tokenizer: Optimised loop
2013-10-06 07:46:35 +02:00
Robert Reif
44559a1fb2
Fixed #5069 (sizeof(void) when variable name is override)
2013-10-05 07:40:59 +02:00
Robert Reif
6c06cdd24d
CheckIO fixes. Ticket: #5051
2013-10-04 17:30:55 +02:00
Martin Ettl
a8cf8f0984
Tokenizer:simplifyMathFunctions: fixed false positives when simplifying special pow() cases.
2013-10-03 22:54:45 +02:00
Martin Ettl
f8bd33f2bc
Tokenizer:simplifyMathFunctions: added support for log()-functions. Improved testcases and documentation. The function simplifyMathFunctions() returns now true in case a simplifcation is made. This function is called within a while loop to guarantee all simplifications are made.
2013-10-03 20:52:07 +02:00
Martin Ettl
548e2f3fbf
Tokenizer:simplifyMathExpression: fixed false negatives in simplifying Pythagorean and Hyperbolic identities.
2013-10-03 15:41:12 +02:00
Robert Reif
59de30823e
CheckIO: This patch adds support for fprintf_s, fscanf_s and %I. Ticket: #5051
2013-10-03 06:37:40 +02:00
Robert Reif
022e7a0f0f
CheckIO: Fix INT_PTR false positive found while checking mpc-hc. Ticket: #5057
2013-10-02 04:19:04 +02:00
Martin Ettl
fa5ee8fd13
Tokenizer: simplifyMathFunctions: added more simplifications for exp(), exp2() and log2() functions.
2013-10-01 20:30:59 +02:00
Robert Reif
cc6745fef6
CheckIO: Fixed false positives when using _snprintf_s and _snwprintf_s. Ticket: #5057
2013-10-01 05:49:44 +02:00
Martin Ettl
f0cbeb5233
simplifyMathFunctions: added support for exp(),sqrt(),cbrt() functions.
2013-09-29 18:11:17 +02:00
Robert Reif
c37c6617d3
Fixed #5057 (Microsoft secure printf/scanf support.)
2013-09-30 19:55:21 +02:00
Daniel Marjamäki
f96a88ec57
Fixed #5054 (debug warnings when Variable::typeStartToken() or Variable::typeEndTypen() is not set correctly)
2013-09-29 16:01:22 +02:00
Martin Ettl
0527aefb11
Improved simplifyMathFunctions when simplifying special cases of pow(x,y)-function.
2013-09-29 15:11:09 +02:00
Martin Ettl
805d082cd1
Tokenizer:simplifyMathFunction: added support for [ll]div() functions and corresponding unittests. The simplifcation is only performed, if a division by 1 is detected.
2013-09-26 07:01:08 +02:00
Martin Ettl
ea5bcfaa35
Fixed #5040 - simplify more math functions.
2013-09-26 00:44:16 +02:00
Robert Reif
2de3ebcb1e
CheckIO: fixed some more false negatives. Ticket: #4964
2013-09-24 06:43:03 +02:00
Daniel Marjamäki
d1c9cac155
Merge pull request #170 from simartin/clang_warnings_2
...
Remove warnings emitted by clang's -Wsign-conversion
2013-09-22 20:42:10 -07:00
Simon Martin
894f537eba
Remove warnings emitted by clang's -Wsign-conversion
2013-09-22 13:22:52 +02:00
Robert Reif
5c4c397372
CheckIO: add scanf argument type checking. Floating point and integer checking is complete but string checking is incomplete and character checking is missing. Ticket #4099
2013-09-22 06:56:31 +02:00
Lucas Manuel Rodriguez
2fce3e6104
Fixed #5037 (Add missing C++ std objects and types)
2013-09-21 12:13:35 -03:00
Martin Ettl
d5f514c820
Fixed #5031 : simplify labs|fabs|abs(-1) to 1.
2013-09-21 16:59:06 +02:00
Robert Reif
489a3a6e53
Fixed #5015 (strings not being concatinated properly)
2013-09-06 05:36:33 +02:00
Daniel Marjamäki
9000c233fa
Fixed #5012 (Hang when there is syntax error 'else }')
2013-09-05 06:38:07 +02:00
Daniel Marjamäki
6819f5ed18
Fixed #4860 (Segfault with another Clucene file)
2013-09-02 05:58:55 +02:00
Robert Reif
8790f6d73f
Fixed #4999 (Crash with simple code snipped in rev ab30fa3
)
2013-08-31 18:58:55 +02:00
Robert Reif
05f2f0e419
CheckIO: improved type info - keep track of original typename.
2013-08-31 06:26:39 +02:00
Daniel Marjamäki
4a1d1ce1a1
Fixed #3471 (Unused functions: take __attribute__((constructor)) in to consideration)
2013-08-30 06:27:46 +02:00
Robert Reif
fc435ae9aa
CheckIO: fix false negative for a function in a base class not being found, fix false positives and negatives for std::vector operator []
2013-08-30 05:41:59 +02:00
Daniel Marjamäki
3bd1d53c75
Fixed #4941 (segmentation fault (invalid code) in Tokenizer::setVarId)
2013-08-28 19:52:41 +02:00
Robert Reif
a1b9bb0688
CheckIO: Fix false positives for functions returning unknown types and false negatives for functions returning record types
2013-08-26 06:03:26 +02:00
Daniel Marjamäki
acdbbeee44
Fixed #4913 (Tokenizer::simplifyKnownVariables: wrong handling of *--p=0;)
2013-08-25 08:54:33 +02:00
Robert Reif
3c6ca35e09
Fixed #4977 (improve platform type tokenize performance)
2013-08-25 08:29:24 +02:00
Simon Martin
b713a69b30
Ticket #4450 : Handle comma separated static variable declarations with initializers in brackets.
2013-08-24 22:27:54 +02:00
Robert Reif
5ce1933687
CheckIo: handle more complex variables
2013-08-23 05:35:57 +02:00
Robert Reif
bf8a786265
reduce: add more settings from cppcheck cli
2013-08-19 06:06:53 +02:00
Daniel Marjamäki
13f85ea345
astyle formatting
2013-08-17 13:06:19 +02:00
Daniel Marjamäki
fd545f90db
Merge pull request #163 from simartin/ticket_4959
...
Ticket #4959 : Simplify {in,de}crements of known variables.
2013-08-17 03:35:30 -07:00
Simon Martin
5743416d3e
Ticket #4959 : Simplify {in,de}crements of known variables.
2013-08-16 23:51:00 +02:00
Daniel Marjamäki
67c77a31aa
Fixed #4942 (1.61 is very slow (compared to 1.60.1))
2013-08-16 18:39:56 +02:00
Simon Martin
bf09191b78
Fixed #4708 : prefix {in,de}crement too eagerly computed.
2013-08-15 15:53:08 +02:00
Daniel Marjamäki
f95b29db06
Improved handling of the __FILE__ macro
2013-08-14 06:36:03 +02:00
Robert Reif
d6ce072dc9
Fixed #4950 (Tokenizer: order of int modifiers)
2013-08-12 06:23:01 +02:00
Daniel Marjamäki
64733d9e63
astyle formatting
2013-08-10 12:32:59 +02:00
Daniel Marjamäki
3ac21ab1db
Merge pull request #158 from simartin/ticket_4764
...
Ticket #4764 : Handle template instantiations with only default parameters
2013-08-10 03:22:41 -07:00
Simon Martin
ad33d95ec1
Ticket #4764 : properly handle template instantiations with only default parameters.
2013-08-10 12:00:16 +02:00
Robert Reif
b940d0adc6
Fixed #4947 (Doesn't allow any ordering of int modifiers)
2013-08-09 23:13:04 +02:00
PKEuS
a9a5dc0354
Updated to AStyle 2.03, require this version
2013-08-07 16:27:37 +02:00
Daniel Marjamäki
2a78db4c06
Refactoring Token::findClosingBracket.
2013-07-31 10:30:20 +02:00
Daniel Marjamäki
807204e580
Fixed #4237 (False positive: (error) Memory Leak: data (references and pointer aliases))
2013-07-30 11:30:14 +02:00
Lucas Manuel Rodriguez
09f4d3732a
Fixed #4911 (segfault, assignment in do ... while, 1.61dev)
2013-07-28 11:58:14 +02:00
Daniel Marjamäki
44333f316a
Added terminate() handling to get quicker response when the user wants to terminate
2013-07-24 13:06:59 +02:00
Daniel Marjamäki
37716fb8bb
Tokenizer: Set variable() pointer for array members
2013-07-20 17:46:39 +02:00
Daniel Marjamäki
dfed6bbea0
Fixed #4445 (Token::Match called with varid 0)
2013-07-19 21:18:54 +02:00
Daniel Marjamäki
6fe1b92a47
Improved --check-library messages
2013-07-16 18:50:25 +02:00
Daniel Marjamäki
b2f6e9e3eb
library: improved handling of noreturn. The Tokenizer::isScopeNoReturn will now try to use the library to determine if scope is noreturn.
2013-07-14 10:10:11 +02:00
Lucas Manuel Rodriguez
cfd697d6d4
Fixed #4042 (False Positive : Same expression on both sides of '&')
2013-07-11 07:13:47 +02:00
Simon Martin
e2deb59f8a
Improved handling of syntax errors in Tokenizer::simplifyAddBracesPair.
2013-06-29 14:05:49 +02:00
Daniel Marjamäki
c389e08353
Fixed #4728 (simplify known variables better (%var% & %num%, bitwise and))
2013-06-26 18:13:28 +02:00
Daniel Marjamäki
7dd07472c1
Fixed #4530 (Tokenizer: improved simplification of strlen in calculation)
2013-06-25 20:10:40 +02:00
Lucas Manuel Rodriguez
d6be4559cd
Fixed #4840 (false negative: buffer access out of bounds)
2013-06-25 06:37:51 +02:00
Alexander Mai
5a9975bbdd
Fixed #4869 (segmentation fault in Tokenizer::simplifyStructDecl (invalid code))
2013-06-22 14:05:49 +02:00
Daniel Marjamäki
d3d7808a06
Fixed #4834 (FreeType: incorrect array boundary analysis)
2013-06-16 15:41:13 +02:00
Daniel Marjamäki
210f2ab352
Tokenizer: refactoring; use Token::link() instead of loop
2013-06-16 15:27:59 +02:00
Daniel Marjamäki
59478c15cf
Tokenizer: small speedup
2013-06-16 09:00:02 +02:00
Daniel Marjamäki
a9bd6cf3df
Fixed #4857 (False Positive: function argument hides enumerator of same type)
2013-06-16 08:13:41 +02:00
Daniel Marjamki
03f28e9c65
Fixed #4668 (Tokenizer: improve handling of 'if (x) MACRO() { ..')
2013-06-15 14:40:05 +02:00
Daniel Marjamäki
c4763b9010
Fixed #4463 (false positive: (style) Variable 'CHDERR_NOT_OPEN' hides enumerator with same name)
2013-06-12 06:45:26 +02:00
Daniel Marjamäki
616a693f1f
Merge pull request #139 from JustRamires/master
...
Ticket #4694
2013-06-08 07:46:08 -07:00
Roman Zaytsev Borisovich
4610b135dc
Fixed #4694
2013-06-07 10:37:33 +04:00
Daniel Marjamäki
dec520c507
Tokenizer::simplifyEnum: Fixed false positives
2013-06-04 21:18:20 +02:00
Daniel Marjamäki
8b5792a0f8
Tokenizer::simplifyEnum: Fixed internalErrors when building with compiled patterns.
2013-06-04 18:57:46 +02:00
Daniel Marjamäki
fa1fd31667
Tokenizer::simplifyEnum: Improved handling of shadow variables
2013-06-04 06:51:01 +02:00
Daniel Marjamäki
8954cc0984
Fixed #4280 (Tokenizer::simplifyEnum: don't simplify shadow variables)
2013-06-03 19:18:51 +02:00
Daniel Marjamäki
ca632bd771
Fixed Cppcheck warning. Made method const
2013-06-01 14:35:21 +02:00
Frank Zingsheim
614a78084f
Fixed #4799 : Improved quickfix from 0943fecf03
...
(Segmentation fault in K&R simplification inside lambda expression)
2013-05-21 19:43:07 +02:00
Frank Zingsheim
0943fecf03
Fixed #4799 (Segmentation fault in K&R simplification inside lambda expression)
2013-05-14 20:56:31 +02:00
PKEuS
1903585ea3
Fixed bug in handling rvalue references: Scope has to be set everywhere. ( #4732 )
2013-05-14 01:43:32 -07:00
Frank Zingsheim
0076ebe08d
More general fix to #4187 (False positive: Variable inside a lambda is reported as uninitialized)
...
Travis: Problems with matchcompiler.py
2013-05-12 11:19:10 +02:00
Frank Zingsheim
511f8a4c1f
More general fix to #4187 (False positive: Variable inside a lambda is reported as uninitialized)
2013-05-12 10:19:43 +02:00
Daniel Marjamäki
cbe0a0825c
Fixed #4725 (Tokenizer: Replace block declaration (^{}) with asm())
2013-05-09 14:47:18 +02:00
Daniel Marjamäki
4659745106
Fixed #4786 (segfault with one LibreOffice file)
2013-05-06 16:56:34 +02:00
Zachary Blair
de8ee5b042
Fixed #4554 (false negative: buffer access out of bounds)
2013-05-02 21:50:48 -07:00
Daniel Marjamäki
9f8ce6f77f
Fixed #4729 (Tokenizer::setVarId: Varid not tracked properly after function declaration with 'shadow' parameter name)
2013-04-19 18:36:16 +02:00
PKEuS
cf5d8fa3df
Use Token::link() instead of Token::findClosingBracket() whereever possible
2013-04-15 13:48:28 -07:00
Daniel Marjamäki
a49fc57e00
Tokenizer: don't simplify 'a!=(b!=0)' to 'a!=b'. Ticket: #4697
2013-04-11 07:19:32 +02:00
XhmikosR
8ac9b8e7a9
remove duplicate ";" and fours dots
2013-04-09 17:49:09 +02:00
PKEuS
fd7c90f68d
Forgot to commit a file in eb2962792f
.
2013-04-04 10:57:35 -07:00
PKEuS
188096665c
Implemented support for rvalue references (C++11):
...
- Split up && when it is part of an rvalue reference declaration
- Added support into symbol database
- Current implementation sets Variable::isReference() to true also for rvalue references - they can probably be treated like normal references in many checks.
Changed behaviour of symbol database: Insert argument Variable of functions that are not implemented into SymbolDatabase::_variableList
2013-04-04 09:47:44 -07:00
Daniel Marjamäki
2d70af2c82
Reverted fix. It might be possible to make a better fix
2013-03-25 19:55:35 +01:00
Daniel Marjamäki
2b02013fa7
Fixed #4668 (False positive: uninitialized Variable after unknown macro)
2013-03-25 19:52:33 +01:00
Daniel Marjamäki
cc3139cf39
Tokenizer: Fixed 'variableScope' message.
2013-03-18 19:32:40 +01:00
Daniel Marjamäki
1b18bfc93c
Fixed #3585 (errors not recognized when class has extra specification)
2013-03-18 19:09:04 +01:00