Commit Graph

7761 Commits

Author SHA1 Message Date
Daniel Marjamäki c88297c971 Fixed #7054 (AST: handle C++ initialization with {} better) 2015-10-17 17:03:24 +02:00
Dmitry-Me fa30ed5d15 Reduce variable lifetime, better name 2015-10-16 11:00:04 +03:00
PKEuS c22833342c Merge pull request #695 from Dmitry-Me/explicitContinue
Explicit continue instead of fall through with a check
2015-10-15 21:48:08 +02:00
Alexander Mai 8e3e981323 #7050 segmentation fault (invalid code) in isVariableChanged 2015-10-15 21:27:55 +02:00
Dmitry-Me ae7a7d287e Explicit continue instead of fall through with a check 2015-10-15 18:03:27 +03:00
Daniel Marjamäki 6cf25825de Fixed #7030 (Tokenizer::simplifyTypedef: Label) 2015-10-15 16:56:22 +02:00
Dmitry-Me 64bdf03986 Remove repeated search, clearer code 2015-10-15 16:48:35 +03:00
PKEuS 46bfa62aad Execute prepareTernaryOpForAST earlier (#7048) 2015-10-15 10:31:54 +02:00
Alexander Mai 600641c4c5 #7043 segmentation fault (invalid code) in Tokenizer::simplifyVarDecl 2015-10-14 20:34:55 +02:00
PKEuS d0cc97a4cf Fixed wrong syntax error (#7045) 2015-10-14 16:01:48 +02:00
Dmitry-Me f54f9a7d3e Explicit continue, better variable name 2015-10-14 15:06:04 +03:00
PKEuS a97f6f973f Support C++14 digit separators (#7042) 2015-10-14 12:00:54 +02:00
Daniel Marjamäki 60f8982999 Fixed #7039 (ValueFlow: bitand calculation '16&15') 2015-10-14 10:44:04 +02:00
Daniel Marjamäki a04e072976 Fixed #7040 (False positive syntaxError False positive syntaxError) 2015-10-13 20:31:17 +02:00
PKEuS 3971f8625f Fixed false positive seekOnAppendedFile if FILE* is reused (#6566) 2015-10-13 15:32:13 +02:00
PKEuS 05b5275110 Improved AST:
- Fixed TODO for ternary operator. Add parantheses between ? and : where necessary as a preparation for createAst()
- Improved AST validation:
-- Better message for binary operator with only one operand
-- Ensure ? has : as second operand (#7035)
2015-10-12 19:21:48 +02:00
Daniel Marjamäki 97326fce13 Fixed #6992 (argument name of function typedef conflicts with local variable name) 2015-10-12 10:15:02 +02:00
Daniel Marjamäki 141dd78b0e Tokenizer: Added a define CPPCHECK2 that can be used to test cppcheck without various simplifications I want to get rid of in the long run 2015-10-12 09:19:35 +02:00
Daniel Marjamäki 7148ad4239 Tokenizer: Fix sloppy syntax error 2015-10-12 08:51:41 +02:00
Daniel Marjamäki df67e0efb6 Tokenizer: Try to hide attributes for non-gcc and non-clang compilers 2015-10-12 08:50:52 +02:00
Daniel Marjamäki 6157fc69ac Tokenizer: Added a simple AST verification 2015-10-12 08:34:12 +02:00
Daniel Marjamäki 8b8870cb5e Added noreturn attributes for methods that throws 2015-10-12 08:33:53 +02:00
Daniel Marjamäki 2c7c6b3e38 CheckIO: Try to use ValueType more 2015-10-11 17:35:54 +02:00
Daniel Marjamäki cba11e623e Use ValueType in astIsIntegral() 2015-10-11 14:11:11 +02:00
Daniel Marjamäki be7bca385d avoid some fixes for noisy signedness warnings 2015-10-11 12:50:46 +02:00
Daniel Marjamäki 40fffddb83 avoid some fixes for noisy signedness warnings 2015-10-11 12:36:23 +02:00
Daniel Marjamäki 0aad8af9ae avoid fix for noisy signedness warning 2015-10-11 12:22:37 +02:00
Daniel Marjamäki ac9cb87e04 ValueType: Handle bit operations, sizeof better. Use ValueType in astIsFloat(). 2015-10-11 12:20:40 +02:00
Daniel Marjamäki 5b082aa799 ValueType: struct member 2015-10-11 10:48:08 +02:00
Daniel Marjamäki 9738cc66eb ValueType: function return type 2015-10-11 08:42:31 +02:00
Daniel Marjamäki cf179f82b6 ValueType: Better handling of wide strings 2015-10-11 08:13:30 +02:00
Daniel Marjamäki 37d9a95ef1 CheckIO: Refactoring. Split out CheckIO::checkFormatString() from CheckIO::checkWrongPrintfScanfArguments(). 2015-10-10 20:08:15 +02:00
Daniel Marjamäki 0849ad4707 ValueType: Better handling of const 2015-10-10 08:32:45 +02:00
Daniel Marjamäki 6545172d8c Revert "Add a dynamic rule enable/disable system"
This reverts commit 231b486e49.

There was regressions reported in tools/generate_and_run_more_tests.sh.
2015-10-09 21:56:19 +02:00
Albert Aribaud 231b486e49 Add a dynamic rule enable/disable system 2015-10-09 19:57:05 +02:00
PKEuS 2eb8492993 Fixed crash on garbage code #7034 2015-10-09 13:49:17 +02:00
PKEuS 7d624f2e21 Fixed crash on garbage code #7033 2015-10-09 13:06:52 +02:00
Daniel Marjamäki 6d256b01b6 CheckIO: Use ValueType::Type::LONGDOUBLE type also 2015-10-08 19:52:24 +02:00
Daniel Marjamäki a500f6f703 Improved handling of 'long double' and address-of in ValueType. Removed Tokenizer::simplifyFloatCasts() to handle float casts better. 2015-10-08 19:50:10 +02:00
PKEuS 3645e3c16b Fixed two TODO unit tests by delaying arraySize simpification until createLink2 is executed 2015-10-08 12:52:28 +02:00
Daniel Marjamäki be72b7413a ValueType: Handling of originalTypeName 2015-10-07 20:24:17 +02:00
Daniel Marjamäki c461b58421 astyle formatting
[ci skip]
2015-10-07 19:50:50 +02:00
Daniel Marjamäki 604a9acb48 ValueType: Handling constness 2015-10-07 19:08:26 +02:00
PKEuS b7f2f826a4 Refactorization: Removed some redundant code 2015-10-07 18:40:04 +02:00
Daniel Marjamäki db31e22316 ValueType: Improved signedness 2015-10-07 18:10:48 +02:00
PKEuS 2e510c8733 Added missing include to valueflow.h 2015-10-07 14:42:10 +02:00
PKEuS 50ed47c725 Fixed crash on garbage code (#7022) 2015-10-07 13:52:06 +02:00
PKEuS b634a76fcb Added CPPCHECKLIB to two clases and reverted 30a942af0b 2015-10-07 13:38:34 +02:00
Daniel Marjamäki f5d9ba9cf3 Rewrote the charvar checker. It now uses valueflow also to limit false negatives. 2015-10-06 17:30:51 +02:00
amai2012 88b3d90505 #7023 segmentation fault (invalid code) in astIsIntegral. Avoid crash, unfortunately there is no syntax error yet detected. 2015-10-06 11:21:31 +02:00
Matthias Krüger e99b4319c9 astutils: remove unused functions isSignedChar and isChar. 2015-10-06 08:27:47 +02:00
Daniel Marjamäki 2034706033 AST: Use AST type in astIsSignedChar 2015-10-06 07:13:41 +02:00
Daniel Marjamäki b77203a277 CheckIO: Handle AST pointer type better 2015-10-05 19:59:15 +02:00
Daniel Marjamäki b9036c2ca8 AST types: Fix for 'long long' handling 2015-10-05 19:20:42 +02:00
Daniel Marjamäki bc8f1b972e CheckIO: Early return 2015-10-05 19:04:29 +02:00
Daniel Marjamäki 8f6bd7fd0d Fixed #7014 (False positive for printf("%c", "hello"[0])) 2015-10-05 10:12:30 +02:00
Daniel Marjamäki f35c24d4af SymbolDatabase: Better handling of valuetypes in AST 2015-10-04 23:27:58 +02:00
Daniel Marjamäki 30a942af0b VS: Attempt to fix build problem with VS 2015-10-04 22:58:00 +02:00
Daniel Marjamäki 399cd0c07b SymbolDatabase: Refactoring AST type information 2015-10-04 20:32:16 +02:00
Daniel Marjamäki 9b253612ca SymbolDatabase: Add type information in AST 2015-10-04 19:42:58 +02:00
Frank Zingsheim 3bc21b8138 Fixed #6996 (ValueFlow: known and possible values) 2015-10-04 10:33:43 +02:00
Daniel Marjamäki f5bd00f153 Library: return true from Library::isnullargbad() for format string arguments. Related with #7012. 2015-10-03 20:51:45 +02:00
Daniel Marjamäki 28e3c266b3 Fixed #7012 (False positive uninitvar - first argument to snprintf) 2015-10-03 18:35:16 +02:00
Daniel Marjamäki a574fda8a9 Fixed #6935 (Wrong duplicate expression) 2015-10-03 14:56:24 +02:00
Alexander Mai 27f72d7ae0 #7020 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. #7021 segmentation fault (invalid code) in Tokenizer::simplifyEnum 2015-10-03 10:47:23 +02:00
Simon Martin 0f7e20c11d Ticket #7017: Properly interpret operator= return type for template classes in CheckClass::operatorEq. 2015-10-02 23:23:44 +02:00
amai2012 fde59242bb #7018 segmentation fault (invalid code) in Tokenizer::simplifyEnum 2015-10-02 15:33:23 +02:00
PKEuS e6467703b2 Support cast to ** in Tokenizer::simplifyCasts() (#7005) 2015-09-28 16:08:14 +02:00
PKEuS 590f1f1d66 Fixed handling of __asm...__endasm (#6970) 2015-09-28 15:43:48 +02:00
Thomas Otto 7ba69cfd0a sizeofCalculation: skip if void-casted inside a macro (#6888) 2015-09-28 14:33:29 +02:00
Daniel Marjamäki bd243a4748 Fixed #6903 (ValueFlow: Fix FP in ?:) 2015-09-27 13:29:28 +02:00
Dmitry-Me 6304a4dddb Fix FP for members of temporaries 2015-09-25 13:57:11 +03:00
Dmitry-Me da15efb3f6 Fix FN for distinct structs with identical members 2015-09-24 18:29:08 +02:00
Alexander Mai c27fc31fcf #6997 segmentation fault (invalid code) in CheckUninitVar::checkIfForWhileHead. Detect invalid syntax. 2015-09-23 10:33:55 +02:00
orbitcowboy fc0786acb0 Merge pull request #686 from Dmitry-Me/omitUnneededActions6
Continue early, reuse pattern, better names
2015-09-22 21:31:47 +02:00
Dmitry-Me 0b991f5560 Tell if it's struct or union 2015-09-22 17:38:23 +03:00
Dmitry-Me ce783483d1 Continue early, reuse pattern, better names 2015-09-22 16:38:49 +03:00
Martin Ettl 8936985c5c #7001: Fixed templatesimplifier.cpp: Remove double include. 2015-09-18 12:20:41 +02:00
orbitcowboy c285b75611 Merge pull request #685 from Dmitry-Me/useTempVariables
Use temp variables, better variable names
2015-09-16 16:30:25 +02:00
Daniel Marjamäki 305760f143 Uninitialized variables: Fix FP for struct array 2015-09-16 14:42:55 +02:00
Dmitry-Me 074639548b Use temp variables, better variable names 2015-09-16 15:31:13 +03:00
Dmitry-Me 85d47e25e4 Move variable declaration to where it's first used 2015-09-16 13:15:07 +03:00
Dmitry-Me aa60358458 Temp variables, better names 2015-09-15 15:34:12 +03:00
Daniel Marjamäki af233efcce Uninitialized variables: tweaked checking of arrays / allocated buffers 2015-09-14 09:03:21 +02:00
PKEuS 6647976d80 Simplified a few Token::Match calls 2015-09-14 08:57:23 +02:00
Matthias Krüger 2ddd4c7197 fix [lib/checkuninitvar.cpp:836]: (warning) Found simple pattern inside Token::Match() call: "&" 2015-09-13 17:54:53 +02:00
Daniel Marjamäki ab38ab800e CheckUninitVar: don't rely on Tokenizer::simplifyKnownVar() to simplify references 2015-09-13 17:31:45 +02:00
Daniel Marjamäki ad007ca2d7 Uninitialized variables: better checking of arrays 2015-09-13 16:32:16 +02:00
Frank Zingsheim 1fd9ba0cc4 Fixed #6988 (incorrect nullPointer error for string) 2015-09-13 10:53:05 +02:00
Daniel Marjamäki 8cee96a179 ValueFlow: Refactor 'ProgramMemory' so it can handle token * values also and not just int values. I believe this refactoring is needed before #6973 can be fixed. 2015-09-12 19:49:02 +02:00
Dmitry-Me 773ee8c32a Better variable name, explicit no-op 2015-09-11 17:26:33 +03:00
amai2012 7dadd9f3ca Merge pull request #677 from Dmitry-Me/simplifySearchReplace
Simplify overengineered search-replace code
2015-09-11 16:02:39 +07:00
amai2012 210d8d1957 Merge pull request #676 from Dmitry-Me/reuseCachedValue
Reuse cached value
2015-09-11 15:58:45 +07:00
Dmitry-Me 70d98c7176 Get rid of set object 2015-09-10 17:59:20 +03:00
Dmitry-Me 78ed37ca86 Explicit continue, break loop early 2015-09-10 12:54:35 +03:00
Dmitry-Me b2cd0aabf5 Simplify overengineered search-replace code 2015-09-09 18:43:32 +03:00
PKEuS fbbdfa85ca Revert "Fixed false negative #5815"
This reverts commit dc6c278d83.
2015-09-09 14:46:47 +02:00
Dmitry-Me fdfddde496 Reuse cached value 2015-09-09 15:29:06 +03:00
Daniel Marjamäki 47f64df8aa minor refactoring 2015-09-09 10:08:37 +02:00
Matthias Krüger 49e2573b5c fix -Wodr warning/violation putting struct 'VarInfo' into anonyous namespace
Was:

lib/checkclass.cpp:1994:8: warning: type ‘struct VarInfo’ violates one definition rule [-Wodr]
 struct VarInfo {
        ^
lib/checkleakautovar.h:32:7: note: a different type is defined in another translation unit
 class CPPCHECKLIB VarInfo {
       ^
lib/checkclass.cpp:1998:21: note: the first difference of corresponding definitions is field ‘var’
     const Variable *var;
                     ^
lib/checkleakautovar.h:40:39: note: a field with different name is defined in another translation unit
     std::map<unsigned int, AllocInfo> alloctype;
2015-09-08 16:57:28 +02:00
orbitcowboy 7d229f082c test/cfg: Improved testing of std.cfg regarding uninitialized variables. 2015-09-08 11:45:13 +02:00
Dmitry-Me 662e3c8b8c Omit unneeded match checks 2015-09-07 18:35:15 +03:00
Daniel Marjamäki d88dc3ed3e Reverted 00c54df07c (don't remove enum declarations) because it caused unexpected false positives 2015-09-06 18:37:22 +02:00
Daniel Marjamäki 00c54df07c Tokenizer: Don't remove enum declarations 2015-09-06 17:44:49 +02:00
PKEuS 5c348890b2 Preserve varId in simplifyArrayAccessSyntax (#6523) 2015-09-05 13:14:08 +02:00
Philipp Kloke 687bde8af5 Set version to 1.70.99/1.71 dev 2015-09-04 21:10:05 +02:00
Daniel Marjamäki dafba604ff 1.70: Set versions 2015-09-04 19:36:34 +02:00
Dmitry-Me e9cb3d8c97 Consistent variable name 2015-09-04 17:00:44 +03:00
orbitcowboy c1120c1df4 Merge pull request #672 from Dmitry-Me/fixSpelling
Fix spelling
2015-09-04 15:39:03 +02:00
Dmitry-Me e377a2e9b2 Fix spelling 2015-09-04 16:12:40 +03:00
Dmitry-Me 31014fe334 Omit unneded action 2015-09-04 16:06:20 +03:00
PKEuS 1aa958d60c Updated VS solution with VS2015 as default. Added flags /Zc:inline and /Zc:throwingNew. 2015-09-04 14:30:54 +02:00
orbitcowboy 117bdef19c Merge pull request #668 from Dmitry-Me/makeChecksMutuallyExclusive
Treat checks as mutually exclusive
2015-09-04 11:17:42 +02:00
orbitcowboy d97d5d8691 Merge pull request #669 from Dmitry-Me/fixIncompleteComment
Comment omitted one of the items listed
2015-09-04 11:16:33 +02:00
Dmitry-Me a87990901a Better variable name 2015-09-04 11:38:46 +03:00
Dmitry-Me e082264677 Comment omitted one of the items listed 2015-09-04 11:19:03 +03:00
Dmitry-Me cd4f3cf8db Treat checks as mutually exclusive 2015-09-04 10:42:26 +03:00
PKEuS b49c5d7193 Merge pull request #665 from simartin/todo_condition
Fixed TODO-test for CheckCondition::checkBadBitmaskCheck by handling functions return bool.
2015-09-03 22:53:33 +02:00
Simon Martin f273323cd0 Fixed TODO-test for CheckCondition::checkBadBitmaskCheck by handling functions return bool. 2015-09-03 21:07:03 +02:00
Dmitry-Me 7287b1a251 Avoid unneeded match checks 2015-09-03 18:30:05 +03:00
Dmitry-Me 0f073ad27e Quick check to omit useless heavy matches 2015-09-03 13:09:57 +03:00
Dmitry-Me cdf1521258 Further fix search replace 2015-09-02 17:06:19 +03:00
Dmitry-Me 139ead15ef Merge overlapping patterns 2015-09-01 16:17:17 +03:00
amai2012 e683d31e71 Re-enable okenizer::removeMacroInClassDef for C code 2015-09-01 07:10:12 +02:00
PKEuS 04209c08cf Merge pull request #644 from Dmitry-Me/fixSearchReplace
Fix search-replace
2015-08-31 21:14:58 +02:00
Dmitry-Me 969b1bfbe9 Fix search-replace 2015-08-31 17:44:33 +03:00
PKEuS dc6c278d83 Fixed false negative #5815 2015-08-31 14:12:19 +02:00
Alexander Mai b90b751b54 Cure some doxygen warnings 2015-08-30 20:12:02 +02:00
PKEuS c5a8ecb6f9 New check: Detect unused 'goto' labels (#5124) 2015-08-30 16:45:47 +02:00
PKEuS f12f16cb4a Handle anonymous structs (which can appear inside unions) like anonymous unions (#2039) 2015-08-30 15:41:54 +02:00
Philipp Kloke 56698dd844 Fixed #6919: Support initializer list in duplicateEnumError check 2015-08-29 22:20:09 +02:00
PKEuS d7853b9963 Fixed simplification of fma(a, b, c) (#6958) 2015-08-29 20:52:03 +02:00
Alexander Mai 8d2c4453ad Small optimizations for C code in Tokenizer. Add some regression tests for recently fixed results 2015-08-29 19:00:09 +02:00
Daniel Marjamäki e31ee26b6c Merge pull request #662 from simartin/ticket_6959
Ticket #6959: Properly handle arrays of pointers in CheckClass::constructors
2015-08-29 13:22:10 +02:00
Daniel Marjamäki 6ddd0a953f Fixed #6917 (False positive uninitvar - unused array declaration and ternary expression) 2015-08-29 13:19:28 +02:00
Simon Martin b4b636b6a2 Ticket #6959: Properly handle arrays of pointers in CheckClass::constructors. 2015-08-29 13:11:00 +02:00
PKEuS 70368a2e3a Made ctor of triplet explicit, because cppcheck demands it. 2015-08-29 11:13:03 +02:00
PKEuS d5bc3285b9 Move "extern" to the beginning of a declaration like "static" and "const" 2015-08-29 10:57:52 +02:00
PKEuS f89205064a Several small optimizations in tokenize.cpp 2015-08-29 10:46:51 +02:00
Martin Ettl 08413f0112 test/cfg: Improved testing of std.cfg. 2015-08-29 00:09:33 +02:00
Simon Martin 101cebbde1 Ticket #6957: Properly handle arrays of pointers in CheckClass::constructors. 2015-08-28 23:06:39 +02:00
Simon Martin 59abb04042 Ticket #6596: Address of local variables can also be assigned to pointer-pointer arguments using the ptr[] syntax. 2015-08-28 20:29:51 +02:00
Daniel Marjamäki 498c920180 addons/cert.py: better handling of structs. read pragmas in the file. 2015-08-28 18:07:12 +02:00
amai2012 45bb7d5adb Merge pull request #647 from Dmitry-Me/continueOnRuleMatch
Treat matches as mutually exclusive
2015-08-28 16:00:53 +02:00
orbitcowboy b0f2351649 Merge pull request #658 from Dmitry-Me/omitMatchCall
Replace match call with explicit comparison
2015-08-28 14:56:35 +02:00
Dmitry-Me 962f0ee584 Treat matches as mutually exclusive 2015-08-28 15:27:56 +03:00
Dmitry-Me 0cef076f10 Prefer previous() to tokAt(-1) 2015-08-28 15:19:24 +03:00
Dmitry-Me 81613d958a Replace match call with explicit comparison 2015-08-28 15:16:10 +03:00
amai2012 2b17a5bcee Merge pull request #656 from simartin/ticket_6953
Ticket #6953: Fixed flawed logic in PR#650.
2015-08-28 06:01:13 +02:00
Simon Martin c78d99dc07 Ticket #6954: Properly handle pointers to arrays in CheckUnunsedVar. 2015-08-27 23:56:26 +02:00
Simon Martin 2e2f9facf5 Ticket #6953: Fixed flawed logic in PR#650. 2015-08-27 23:35:22 +02:00
Daniel Marjamäki 436d7b6d59 Merge pull request #655 from Dmitry-Me/explicitConstCastBetterNames
Use const_cast to add const, better variable name
2015-08-27 17:04:07 +02:00
Dmitry-Me c760ccee13 Use const_cast to add const, better variable name 2015-08-27 17:14:33 +03:00
PKEuS 72b918e704 Merge pull request #654 from Dmitry-Me/eliminateDuplicateCheck
Eliminate duplicate find() calls
2015-08-27 14:40:33 +02:00
PKEuS 2ace3d3144 Rewritten handling of declaration specifiers:
- Removed simplifyConst() because it did the opposite of the (superior) simplifyStaticConst()
- Execute simplifyStaticConst() in simplifyTokenList1() - there is no reason to defer it, and it is required to properly parse declarations like "unsigned static int i;"
- Fixed simplifyStaticConst() to handle more patterns. It did not work at the beginning of the token list and for function arguments
- Reimplemented Tokenizer::simplifyStdType()
-> properly support all possible ways to declare integers as requested by the standard, instead of only a few common permutations of "unsigned|signed", "short|char|long|int"
-> Fixed parsing of _Complex/complex types
2015-08-27 14:34:17 +02:00
Dmitry-Me ca75096141 Eliminate duplicate find() calls 2015-08-27 11:19:51 +03:00
PKEuS 39dd71e49b Merge pull request #653 from Dmitry-Me/reduceVariableScope
Reduce variable scope
2015-08-26 14:08:10 +02:00
Dmitry-Me 346f04098c Reduce variable scope 2015-08-26 14:48:19 +03:00
PKEuS 7bb79562e9 Skip inner classes in CheckAutoVariables::returnReference() (#6951) 2015-08-26 13:31:51 +02:00
PKEuS 37aec52399 Simplify complex/_Complex types (#6939) 2015-08-26 13:13:45 +02:00
PKEuS c8c59aa92b Removed Tokenizer::simplifyIfSameInnerCondition(). It covered only very simple patterns and is unlikely to have an impact on real-world code. 2015-08-26 13:04:00 +02:00
PKEuS 6b4a0a5ed7 Merge pull request #652 from Dmitry-Me/mergeIdenticalMAtches
Merge identical matches
2015-08-26 11:38:50 +02:00
Dmitry-Me 77317c3373 Merge identical matches 2015-08-26 10:43:15 +03:00
Simon Martin 6fb19b02d0 Properly differentiate arrays of pointers and pointers to arrays. 2015-08-25 21:19:19 +02:00
Simon Martin 8beb95e179 Fix CheckClass::checkMemset for arrays of pointers. 2015-08-23 19:57:58 +02:00
amai2012 873861df4a #6948 cash: daca: mgetty (garbage code) 2015-08-21 10:40:43 +02:00
PKEuS 8d926d7328 Moved some simple WinAPI/MFC-specific simplifications to windows.cfg 2015-08-20 15:59:59 +02:00
PKEuS ebae879cf9 Some small refactorizations to tokenize.cpp 2015-08-19 20:06:49 +02:00
PKEuS 11be2f79a6 Refactorization: Removed some redundant conditions and an unused syntax check from tokenize.cpp 2015-08-19 19:29:49 +02:00
PKEuS a720153e1e Refactorization: Removed redundant code for syntax error handling in templatesimplifier.cpp and symboldatabase.cpp 2015-08-19 19:29:48 +02:00
PKEuS 4e2d56242c Refactorization: Removed unreachable and duplicate code in tokenize.cpp 2015-08-19 19:29:48 +02:00
Daniel Marjamäki 13cf6be40b dump: use toxml for function names to handle operator& etc 2015-08-18 15:39:15 +02:00
Dmitry-Me a8135d9bd8 Merge overlapping patterns 2015-08-17 17:25:19 +03:00
PKEuS ab8afec3eb Refactorizations:
- Avoid unnecessary loop iterations
- Avoid unnecessary condition checking
- Reduced code duplication in symboldatabase.cpp
2015-08-16 14:23:07 +02:00
PKEuS 1627b19dd6 Refactorizations:
- Call std::string::find() with char instead of char* where possible
- Avoid string copying
- Optimized several Token::tokAt/strAt calls
2015-08-16 10:33:51 +02:00
PKEuS ee4a5843bb Some small refactorizations 2015-08-15 19:46:31 +02:00
PKEuS 1a266315f1 Removed some unused code 2015-08-15 19:17:25 +02:00
Daniel Marjamäki 7bb9d2d2f3 minor tweak. use isNotLibraryFunction in Library to prevent false matches 2015-08-15 16:48:30 +02:00
PKEuS b77912a0b5 Support namespaces in CheckOther::checkIgnoredReturnValue() 2015-08-15 12:19:14 +02:00
PKEuS 4d80df2f4a Added pointer to Type to Token (similar to Token::Variable() and Token::function()):
- Accessible via Token::type()
- Renamed former Token::type() to Token::tokType()
- Removed SymbolDatabase::isClassOrStruct()
2015-08-15 11:19:21 +02:00
Daniel Marjamäki 7ede9de502 Removed unused code. The isVariableUsed is used instead. 2015-08-15 07:43:39 +02:00
Alexander Mai 8b433fa053 Add regression test for #6299. Fix clang compiler warning due to doxygen comment 2015-08-14 18:27:03 +02:00
PKEuS a297a03b64 Fixed false positive #6787: Skip over lambdas in CheckAutoVariables::returnReference() 2015-08-14 13:03:07 +02:00
PKEuS b0bf69bae7 Fixed false positive #6763 and reordered conditions
Ran AStyle
2015-08-14 12:50:45 +02:00
PKEuS 3cf67014ad Fixed parsing of template in enum 2015-08-14 11:08:03 +02:00
Daniel Marjamäki e578988832 invalidScanf: removed the checking for 'scanf crash with huge input data for old glibc'. new systems are not vulnerable to this bug anymore. 2015-08-14 08:03:46 +02:00
Dmitry-Me 769d8e713d Eliminate repeated lookup, better variable names 2015-08-13 16:10:23 +03:00
Malcolm Parsons daf633ef78 Fixed #5028 Fix parsing of C++11 raw string literals 2015-08-12 13:11:55 +01:00
Daniel Marjamäki 6865724c4e Fixed #6914 (Token::expressionString: parenthesis missing in expression (*it)->stats.corpse_ticks) 2015-08-12 10:55:25 +02:00
Dmitry-Me f0aa9e31de Cache and reuse value 2015-08-12 10:57:36 +03:00
Dmitry-Me 50fb9cea66 Reduce variables scope 2015-08-11 17:20:30 +03:00
PKEuS 002b606a9c Refactorized CheckObsoleteFunctions:
- Mention all checked functions in getErrorMessages() and classInfo(), not only posix ones
- Made members static and initialize them only once only once
- Better support for global namespace
2015-08-11 14:57:23 +02:00
PKEuS c96f85e2a2 Refactorization: Implemented rValue-reference- and "const char*"-overload to make_container::operator<< 2015-08-11 14:05:01 +02:00
PKEuS ebfdacb0d3 Introduced .cfg file format version to 2 (to prevent older cppcheck versions from failing silently when reading them), because 5b287fc849 introduced a backward-incompatible feature.
Increased format version of std.cfg, which is the only cfg file that makes use of the new backward incompatible feature.

Refactorization: Avoid a redundant std::string::find()-call
2015-08-11 14:05:01 +02:00
Matthias Krüger 7a90b36cca CheckVaarg::va_start_subsequentCallsError: fix spelling "inbetween" -> "in between" 2015-08-11 14:03:00 +02:00
Matthias Krüger 391194579c CheckOther::checkComparisonFunctionIsAlwaysTrueOrFalseError: "evaluates always" -> "always evaluates" 2015-08-11 13:27:55 +02:00
Daniel Marjamäki 501ab0b6da CheckLeakAutoVar: updated handling of unknown types in C++ 2015-08-11 12:41:42 +02:00
PKEuS b0b01d3962 Merge pull request #637 from Dmitry-Me/mergeOverlappingPatterns5
Merge overlapping patterns
2015-08-11 12:24:52 +02:00
Daniel Marjamäki 2e78d21480 Fixed #6730 (ValueFlow: inner scope does not return (continue,throw)) 2015-08-11 11:21:03 +02:00
Dmitry-Me 51ee9b0e06 Merge overlapping patterns 2015-08-11 12:19:59 +03:00
Matthias Krüger 72b00b35f8 Tokenizer::simplifyNamespaceStd() check condition only once instead of potentially 3 times 2015-08-10 23:33:58 +02:00
PKEuS bce45fb328 Merge pull request #635 from Dmitry-Me/removeUnimplementedMethod
Remove unimplemented method
2015-08-10 23:00:22 +02:00
Alexander Mai a5aba110a4 Replace Tokenizer::simplifyBuiltinExpect by a suitable addition to gnu.cfg 2015-08-10 20:21:30 +02:00
Daniel Marjamäki 57aec12f34 Fixed #5622 (Allow class methods to be referenced in library XML configuration files) 2015-08-10 18:51:51 +02:00
Daniel Marjamäki a70c57daa2 Library: move Library::alloc and Library::dealloc from header to cpp file and use the functionName utility function 2015-08-10 18:36:09 +02:00
Dmitry-Me eec5e1722b Remove unimplemented method 2015-08-10 18:02:49 +03:00
Daniel Marjamäki 3a1a34751f Library: Initial handling of method calls 2015-08-10 09:41:06 +02:00
Daniel Marjamäki 5b287fc849 Library: The <function> name attribute can now have a comma separated list of names 2015-08-09 21:27:57 +02:00
Daniel Marjamäki 06110689a6 Replace Token::Match with Token::simpleMatch 2015-08-09 20:07:38 +02:00
Daniel Marjamäki b70fe4c609 Fixed #6711 (Add namespace support to library files) 2015-08-09 19:55:33 +02:00
Daniel Marjamäki 9627fccdc5 assignFunctionArg: don't warn when there is self assignment. There is a separate warning for self assignments. 2015-08-09 14:51:23 +02:00
Matthias Krüger 4e4a1cfe3a Tokenizer::combineOperators: prevent duplicate checking of same condition 2015-08-09 14:35:17 +02:00
Alexander Mai 66676b8e55 Warning selfAssignment was only issued if style was enabled. 2015-08-09 13:45:35 +02:00
Alexander Mai 95658030bc Avoid UB in Tokenizer::printDebugOutput in case of empty tokenlist (see #6913) 2015-08-09 07:49:34 +02:00
Daniel Marjamäki e71ab70356 Fixed #6871 (False positive uninitvar - pointer to uninitialized char[]) 2015-08-08 14:52:46 +02:00
Daniel Marjamäki 72706cd0b8 Fixed #6868 (Tokenizer: wrong simplification of the unlikely keyword) 2015-08-08 12:49:42 +02:00
Daniel Marjamäki 7ec8adeb93 Fixed #6701 (Uninitialized variable warning when header could not be found) 2015-08-08 08:53:08 +02:00
Daniel Marjamäki c9e239afbf Fixed #6908 (False positive: Same expression on both sides of '+='.) 2015-08-07 20:28:25 +02:00
Daniel Marjamäki ec3d76be5e astyle formatting 2015-08-07 20:27:32 +02:00
PKEuS 48c6b30d1a Merge pull request #634 from Dmitry-Me/avoidDeepCopy
Avoid deep copying std::string
2015-08-07 19:38:38 +02:00
Dmitry-Me d81776b8c8 Avoid deep copying std::string 2015-08-07 17:16:41 +03:00
Dmitry-Me ce96a5e84f Run cheaper checks first 2015-08-07 16:25:47 +03:00
Dmitry-Me c85112bdad Break list traversal once first match is found 2015-08-06 17:10:43 +03:00
amai2012 53feb88614 Merge pull request #630 from Dmitry-Me/detectRaceInInterlockedAccess
Prototype for detecting non-interlocked check after InterlockedDecrement()
2015-08-06 15:43:10 +02:00
Daniel Marjamäki 07a064aab0 Fixed #6910 (ValueFlow: variable incremented as macro argument is not known) 2015-08-05 14:08:57 +02:00
Daniel Marjamäki a51acc8abd minor tweak of 'Redundant condition' error message 2015-08-05 11:30:58 +02:00
Dmitry-Me 43800a9419 Detect non-interlocked check after InterlockedDecrement() 2015-08-05 12:20:28 +03:00
Daniel Marjamäki eda5272dfd Fixed #6875 (Improve 'Redundant condition' error message) 2015-08-05 11:15:54 +02:00
Daniel Marjamäki 4bebb80300 Fixed #6869 (False positive: uninitvar, array passed to function) 2015-08-05 10:19:17 +02:00
Daniel Marjamäki e598b07a6d Moved functions to astutils 2015-08-03 09:20:50 +02:00
amai2012 b8bb939e32 Add new files to VS project 2015-08-03 08:38:38 +02:00
Alexander Mai 4dc8e89327 Merge branch 'master' of https://github.com/danmar/cppcheck 2015-08-02 21:57:42 +02:00
Alexander Mai 96c3c111fc Refactoring: Move some AST related functions to distinct source file 2015-08-02 21:57:32 +02:00
Daniel Marjamäki 8d3f7e36e9 Fixed #6911 (valueflow: comparison of string and NULL) 2015-08-02 18:12:03 +02:00
Frank Zingsheim 7021cb2c6b Fixed #6284 (Token::Match called with varid 0. Constants) 2015-08-02 09:11:51 +02:00
Alexander Mai 965a034afd Fix some more false positives on zerodiv: error should be issued if type of epxression is known to be integral 2015-08-01 18:42:17 +02:00
Alexander Mai f91ad9bbf6 5402 false positive: (error) Division by zero -- with boost::format 2015-08-01 17:28:54 +02:00
Martin Ettl b7ea311123 Running astyle. No functional changes. 2015-08-01 12:31:16 +02:00
amai2012 b182edddda #6909 segmentation fault (invalid code) in Tokenizer::simplifyEnum 2015-08-01 12:24:22 +02:00
Alexander Mai acf050793e #6907 segmentation fault (invalid code) in Tokenizer::simplifyTokenList1 2015-08-01 07:39:56 +02:00
Alexander Mai 4400f2ac85 #6900 segmentation fault (invalid code) in CheckStl::runSimplifiedChecks. 2015-07-31 20:24:06 +02:00
Matthias Krüger 8bfbb5d09c CheckMemoryLeakNoVar::returnValueNotUsedError: put function name into singlequotes 2015-07-31 15:29:07 +02:00
Matthias Krüger 83ee640977 Tokenizer::syntaxError: put the character that we have an invalid number of into singlequotes instead of parentheses. 2015-07-31 15:28:59 +02:00
Matthias Krüger 87891b4128 CheckCondition::checkIncorrectLogicOperator put conditions in single quotes 2015-07-31 15:28:48 +02:00
Matthias Krüger 21ed807f8d CheckCondition::alwaysTrueFalseError: put condition in single quotes. 2015-07-31 15:28:37 +02:00
Daniel Marjamäki 251f6d2a15 Fixed #6898 (Token::expressionString: wrong output when first token is post-incremented) 2015-07-31 07:03:52 +02:00
amai2012 249a05126b #6895 segmentation fault (invalid code) in CheckCondition::isOppositeCond 2015-07-30 17:19:19 +02:00
Daniel Marjamäki 503fb485cf Removed hardcoding of functions from checkZeroDivision 2015-07-30 13:48:51 +02:00
Daniel Marjamäki 1752c4f4f0 Avoid 'Condition always true/false' FP when part of the condition is an expanded macro 2015-07-30 13:30:16 +02:00
amai2012 c5673612e2 #6069 False positive incorrectLogicOperator due to dynamic_cast. Run CheckCondition::checkIncorrectLogicOperator on non-simplified tokenlist. 2015-07-30 10:30:30 +02:00
Daniel Marjamäki 9085fdc156 Fixed #6887 (False positive eraseDereference - container is member of member variable) 2015-07-30 10:13:49 +02:00
Daniel Marjamäki 594d30f7ae Fix Cppcheck warning about unused variable 2015-07-29 20:26:00 +02:00
Daniel Marjamäki 6790d91fbb Improve error messages for conditional values. make valueFlowSwitchVariable values conditional that depend on the case. Partial fix for #6884. 2015-07-29 19:54:57 +02:00
PKEuS 738057229c Improved astIsFloat(): Handle function calls and sizeof, fixed ordering of checks
Handle sizeof in isSameExpression() (#6851)
2015-07-29 14:28:24 +02:00
Daniel Marjamäki 120f3072eb alwaysTrueFalse: Dont write warning when comparison is made in macro 2015-07-29 12:51:00 +02:00
Daniel Marjamäki fc25ed8c86 Fixed #6879 (valueflow in do-while(++i)) 2015-07-29 11:55:07 +02:00
Daniel Marjamäki bf75ee9aed Fixed #6885 (valueflow ignores assignment of variable via function call) 2015-07-29 10:49:17 +02:00
amai2012 1f43550688 #6880, 6881 Crashes on invalid code. Fix null pointer access 2015-07-28 18:41:50 +02:00
Dmitry-Me 544932734f VS: Disable 4482 warning 2015-07-28 18:33:45 +02:00
Daniel Marjamäki 0e82730ee4 addons/naming.py: fixed error report for function name 2015-07-28 14:34:37 +02:00
Daniel Marjamäki 5a57e4030a dump: Add Function name attribute 2015-07-28 14:18:58 +02:00
Daniel Marjamäki a1dfd6cf73 astyle formatting 2015-07-28 12:47:08 +02:00
Daniel Marjamäki a17f4d0a2d CLI: Added --debug-normal option that will show --debug output after 1st simplifications. This output is relevant for the 'normal' checkers. 2015-07-28 12:46:32 +02:00
Daniel Marjamäki e759710198 Fixed #6743 (valueFlowAfterCondition: wrong value when variable is changed in conditional code) 2015-07-28 08:58:05 +02:00
Daniel Marjamäki c5bbea2994 Fixed #6816 (FP: buffer overflow, checkminsizes of array with string value) 2015-07-27 16:39:41 +02:00
Daniel Marjamäki f449e91d43 made valueFlowSwitchVariable faster when there are many 'case %num%:' 2015-07-27 14:57:02 +02:00
Daniel Marjamäki 05a21d45eb Fixed #6670 (Analysis failed when there are {} in LHS in compound assignment) 2015-07-27 13:44:35 +02:00
Daniel Marjamäki 35eb1a393d AST: handle concatening of strings better. this is not ideal but better. 2015-07-27 13:13:30 +02:00
Daniel Marjamäki 64b72bd6e5 Fixed #6227 (False positive (oppositeInnerCondition) - if (!dynamic_cast<>)) 2015-07-27 10:43:52 +02:00
Daniel Marjamäki 5cc744b941 Fixed #6872 (Major performance regression - valueFlowSwitchVariable) 2015-07-27 06:45:06 +02:00
Daniel Marjamäki 389aec51ae Fixed #6598 (False positive zerodivcond - cast to double ignored) 2015-07-26 22:08:36 +02:00
Daniel Marjamäki ed1c6e41d9 Fixed #6876 (valueFlowForward: lambda function) 2015-07-26 19:28:42 +02:00
Alexander Mai 7c48bf3ca5 MathLib::isFloat now detects C99 hexadecimal float literals. MathLib::isDecimalFloat was added for C++ and pre-C99 compatibility. 2015-07-26 19:21:53 +02:00
Daniel Marjamäki 190550f9f9 Fixed #6877 (ValueFlow: valueFlowForward, after goto label the value is not known) 2015-07-26 17:05:21 +02:00
Daniel Marjamäki ae124cb365 ValueFlow: Attempt to make --debug output easier to understand by using words 2015-07-26 16:32:31 +02:00
Daniel Marjamäki 9197e70a8d ValueFlow: Changed --debug output so we can see if a variable is known or possible 2015-07-26 15:36:09 +02:00
PKEuS 7f9a313b94 Fixed hang in VS10 debug mode (AppVeyor) 2015-07-26 14:20:18 +02:00
Daniel Marjamäki 7f1af06df0 Preprocessor: fixed gcc -Wreorder warning 2015-07-26 13:48:01 +02:00
PKEuS 2342b604b0 Refactorized preprocessor (speedup of preprocessing time by ~10%):
- Reduced memory usage of PreprocessorMacro by 87,5% (removed redundant or unused members)
- Use char overload of std::string::find where possible
- Reordered conditions
2015-07-26 12:03:40 +02:00
Daniel Marjamäki 4e293d47c5 CheckMemoryLeak: Fix handling of comparisons after simplifyIfNotNull is removed, detected problem with run_more_tests 2015-07-26 11:27:52 +02:00
Alexander Mai bbec54db8e Implement MathLib::isFloatHex to detect C99 hexadecimal floating pointer literals. Rename MathLib::isHex to MathLib::isIntHex 2015-07-26 08:06:56 +02:00
Daniel Marjamäki afd9f071c0 simplified the code for ValueFlow Known/Possible values 2015-07-25 19:36:29 +02:00
PKEuS 92b867dd2c Fixed behaviour of --quiet/-q and its description 2015-07-25 17:55:12 +02:00
Daniel Marjamäki acc1566f64 uninitvar: Improved condition handling. Fixes one problem when running 'tools/run_more_tests.sh test/testuninitvar.cpp' 2015-07-25 17:55:01 +02:00
PKEuS 8ed0180279 Use C++11 string.back() instead of string[string.length()-1] 2015-07-25 17:19:53 +02:00
Daniel Marjamäki b0df668975 fix VS warning 2015-07-25 13:23:48 +02:00
Daniel Marjamäki e5151a13ab Fixed #6867 (False positive memleak) 2015-07-25 11:37:03 +02:00
PKEuS 53d7620b1a VS solution: Use check.h as precompiled header (reduces build time for core by 50%) 2015-07-25 11:13:19 +02:00
Daniel Marjamäki f939381673 Preprocessor: Fix buffer overflow if line is empty 2015-07-24 19:19:07 +02:00
Simon Shanks 9910c1fa0c Fixed #6617 (preprocessor performance improvement) 2015-07-24 13:30:41 +02:00
Daniel Marjamäki 8ffa917fa2 Fixed #6863 (AST: wrong handling of assignment between ? and :) 2015-07-24 13:02:00 +02:00
Daniel Marjamäki 234669b02b Removed the UninitVar::analyseFunctions(). This was written for multifile checking however it did not work as it should => no multifile errors can be detected. 2015-07-24 08:30:38 +02:00
PKEuS 795e5de903 Refactorization: Cleaned up after ExecutionPath removal 2015-07-23 20:37:09 +02:00
Daniel Marjamäki 367eecf0db Fixed Cppcheck internal warning, simpleMatch can be used instead of Match 2015-07-23 19:13:50 +02:00
Daniel Marjamäki c2a15ac286 Removed ExecutionPath 2015-07-23 19:01:12 +02:00
Daniel Marjamäki 3dbf290220 Refactor CheckStl::erase so it doesn't use ExecutionPath 2015-07-23 18:53:31 +02:00
Daniel Marjamäki ea933e9873 CheckUninitVar: Removed ExecutionPath based checker 2015-07-23 17:28:18 +02:00
PKEuS d45021673e Assign different IDs for different nullPointer messages (#6166) 2015-07-23 14:53:18 +02:00
Daniel Marjamäki 0b81a267f4 uninitvar: handling arrays in non-executionpath checker 2015-07-23 14:51:38 +02:00
PKEuS ce9272a4ed Refactorized file listing code (CLI):
- Apply PathMatch in FileLister::recursiveAddFiles() already to avoid touching directories that are ignored (#5775)
- Simplified code to warn about header exclusion; use Path::isHeader() instead of custom header filename detection
2015-07-23 14:28:17 +02:00
PKEuS 229d488048 Fixed build 2015-07-23 13:15:58 +02:00
Frank Zingsheim 1c12378ce9 Simplified pattern in Tokenizer::simplifyExternC() (#5544) 2015-07-23 13:04:25 +02:00
Daniel Marjamäki eda3fdc96a CheckCondition: Refactoring function parameter lookup 2015-07-23 12:06:33 +02:00
Frank Zingsheim 907dea92b1 Fixed #6844 (CMake with matchcompiler) 2015-07-23 10:49:53 +02:00
Frank Zingsheim 6485339d66 Support lambdas in "else if" simplification (#6860) 2015-07-23 09:41:35 +02:00
Daniel Marjamäki 8d8c03dad8 uninitvar: removed returns from new checking to fix 'more' tests. these returns should be readded when the executionpath checking is removed. 2015-07-23 09:21:53 +02:00
Daniel Marjamäki 79067ac031 uninitvar: use new checking instead of executionpath in more tests. small improvements in new checking to fix testcases. 2015-07-23 08:46:59 +02:00
Daniel Marjamäki 1de1aaa2f4 CheckUninitVar: Fix crash when AST is not created properly 2015-07-22 22:17:12 +02:00
Daniel Marjamäki 1f5eea98b5 CheckUninitVar: Fix a FP reported for invalid code 2015-07-22 21:58:06 +02:00
Daniel Marjamäki 42ed436e9d Tweaks in uninitvar, small steps to make it possible to remove the ExecutionPath 2015-07-22 20:31:58 +02:00
Daniel Marjamäki 75f922e799 cleanup checkother 2015-07-22 18:48:43 +02:00
Daniel Marjamäki b38062743d Refactoring handling of if conditions in CheckMemoryLeak 2015-07-22 16:45:14 +02:00
PKEuS 258e3b9dc3 Refactorization: Renamed Token::isOperator() to Token::isOperatorKeyword() to avoid confusion with Token::isOp(), use Token::isOperatorKeyword() in setVarId(). 2015-07-22 13:57:51 +02:00
Robert Reif 4e693f1620 Fixed #6827 2015-07-22 13:57:51 +02:00
PKEuS ab1113fb16 Fixed crash on garbage code #6859 2015-07-22 13:33:24 +02:00
Daniel Marjamäki b2b4bb49fa Refactoring handling of comparisons 2015-07-22 12:31:18 +02:00
Daniel Marjamäki c67776c04d Testing: extract testcases, edit comparisons, run cppcheck, compare results 2015-07-22 09:52:24 +02:00
Daniel Marjamäki 6313304f77 Fix Travis build 2015-07-22 01:52:24 +02:00
Daniel Marjamäki c6cadf5252 Fix Travis build 2015-07-22 01:41:01 +02:00
Daniel Marjamäki 350cba1c59 CheckLeakAutoVar: updated handling of comparisons after Tokenizer::simplifyIfNot was removed 2015-07-22 01:24:07 +02:00
Daniel Marjamäki f711520892 Fixed #6852 (false negative: logical conjunction 'x == 0') 2015-07-21 22:26:22 +02:00
Daniel Marjamäki f9d22f70db Removed simplifyIfNot simplification (#6072) 2015-07-21 20:56:47 +02:00
Daniel Marjamäki 24269b1061 Refactoring CheckMemoryLeak::notvar, use AST instead of token parsing 2015-07-21 20:27:59 +02:00
Daniel Marjamäki 1b8252181d Tokenizer: Removed Tokenizer::simplifyIfNotNull (#6072) 2015-07-21 17:58:44 +02:00
Daniel Marjamäki ffc707246b ValueFlow: Better handling of Known/Possible values after conditional unknown function call 2015-07-21 17:56:40 +02:00
PKEuS 7f6b6e43b1 Support strings in CheckStl::mismatchingContainers() (#6839) 2015-07-21 14:13:26 +02:00
PKEuS a3eb725c3f Support C++03-style of declaring a copy ctor as deleted (#6585) 2015-07-21 13:46:50 +02:00
amai2012 e8ac4d8e87 #6847 segmentation fault (invalid code) in Token::multiCompare. Fix and simple refactoring in Tokenizer 2015-07-21 13:40:50 +02:00
PKEuS bdd53b4142 Fixed false positive #6717 2015-07-21 12:13:59 +02:00
PKEuS dd9cb929bf Refactorization in Preprocessor: Support beginning/end of file in removeSpaceNearNL(), avoid string copying when calling replaceIfDefined() 2015-07-21 12:13:58 +02:00
Daniel Marjamäki 2e2735518e AST: Updated printAst 2015-07-21 11:54:11 +02:00
Daniel Marjamäki 8a72bb8aa8 AST: Fixed AST for struct initialisation 2015-07-21 11:40:42 +02:00
PKEuS 149d11d9ad Improved handling of inline assembly (#6813):
- Add ; after asm {} block if required
- Fixed inline suppressions
2015-07-20 23:09:54 +02:00
PKEuS a0890ecd2c Fixed false positive: Do not print useClosedFile on arrays (#6823) 2015-07-20 22:40:19 +02:00
PKEuS c987a99ac8 Fixed hang on garbage code (#6824) 2015-07-20 22:33:32 +02:00
Daniel Marjamäki 749bb34deb Fixed #6830 (ValueFlow: value of switch-variable inside switch) 2015-07-20 19:45:38 +02:00
Alexander Mai defee734f5 #6846 segmentation fault (invalid code) in CheckClass::hasAssignSelf 2015-07-20 19:04:34 +02:00
Daniel Marjamäki c0880c8d79 ValueFlow: Values that are assigned in switch are possible after switch 2015-07-20 09:36:56 +02:00
Frank Zingsheim 8416be4d9d #6345 Tokenizer::simplifyTypedef() adds redundant 'typename' to declaration 2015-07-20 07:55:22 +02:00
amai2012 af9b67562b Merge pull request #626 from simartin/ticket_6648
Ticket #6648: Properly handle variables that have been deallocated and whose _address_ is taken after
2015-07-19 18:04:47 +02:00
Simon Martin fa94f2e0f4 Ticket #6648: Properly handle variables that have been deallocated and whose _address_ is taken after in CheckLeakAutoVar. 2015-07-19 17:37:50 +02:00
Alexander Mai 8b97f04de4 Try to address some Coverity issues. Add TODO testcase for #5783. Introduce TODO_ASSERT macro. 2015-07-19 15:03:35 +02:00
Daniel Marjamäki ce7e879460 ValueFlow: isVariableChanged() should return true when variable is changed by passing its address to subfunction 2015-07-18 15:35:39 +02:00
Daniel Marjamäki 5aa0b284dc ValueFlow: Evaluate more calculations when operands have known values 2015-07-18 15:03:57 +02:00
Simon Martin 1f73d71542 Ticket #5776: Simplify (&a)->b into a.b 2015-07-17 23:27:35 +02:00
Simon Martin af1b0cfddf Ticket #6835: Don't get confused by parentheses while detecting template parameter default values. 2015-07-17 21:30:34 +02:00
Daniel Marjamäki 25d9ebedd8 ValueFlow: fixed known/possible value of static variable 2015-07-17 20:48:37 +02:00
Daniel Marjamäki f1e410a878 ValueFlow: value that is changed in do while loop must be possible instead of known. 2015-07-17 20:30:34 +02:00
Daniel Marjamäki 69c1a7ecb1 ValueFlow: default argument values are not known, they are possible 2015-07-17 16:05:07 +02:00
Daniel Marjamäki cb04dfbd37 Fixed #4842 (condition is always true (variable is assigned constant value and then used in condition)) 2015-07-17 15:30:23 +02:00
Daniel Marjamäki 577ab1c2ac ValueFlow: result of ? is not 'known' 2015-07-17 15:22:24 +02:00
Daniel Marjamäki 61cf224f32 ValueFlow: Make known loop value possible 2015-07-17 10:24:24 +02:00
Daniel Marjamäki 9bdee7fce9 ValueFlow: Refactoring setTokenValue() 2015-07-17 09:46:31 +02:00
Daniel Marjamäki 3d5781743c ValueFlow: Restore handling of not 2015-07-16 21:17:44 +02:00
Daniel Marjamäki 15a8e4d2df Temporarily revert "Fixed #4842 (condition is always true (variable is assigned constant value and then used in condition))"
This reverts commit a3fbad50cb.

The ValueFlow must be updated before this can be re-added.
2015-07-16 21:10:46 +02:00
Daniel Marjamäki 09efe140fe ValueFlow: Change value to 'Possible' after conditional assignment in inner loop 2015-07-16 21:08:32 +02:00
Daniel Marjamäki 38214b6907 ValueFlow: function arguments only has 'possible' values 2015-07-16 20:49:14 +02:00
Daniel Marjamäki fa13179c68 Fixed Cppcheck warning, condition is always true 2015-07-16 20:23:25 +02:00
Daniel Marjamäki a3fbad50cb Fixed #4842 (condition is always true (variable is assigned constant value and then used in condition)) 2015-07-16 20:17:57 +02:00
Daniel Marjamäki 88491267d6 ValueFlow: Added Value::valueKind that says if value is known or possible 2015-07-16 17:33:16 +02:00
Alexander Mai d45aa6170b Minor refactoring in Tokenizer: Optimize for C code and use nullptr instead of 0 2015-07-16 00:29:48 +02:00
Simon Martin 2d8993319c Ticket #6810: Avoid infinite loop upon invalid typed enum declaration. 2015-07-15 21:39:15 +02:00
Daniel Marjamäki b821e996e1 MathLib: Add TEST_MATHLIB_VALUE that is used to test MathLib::value 2015-07-15 17:36:41 +02:00
Alexander Mai b604d63dd8 #6726 cppcheck hangs with 100% CPU load (invalidcode) inside Token::astOperand2(). #6840 egmentation fault (invalid code) in Token::astOperand2. Improve stability on invalid code 2015-07-15 15:19:48 +02:00
Alexander Mai b30d9ffe98 #6838 cppcheck hangs on some strange input code. Token::astOperand1/2 throw internal error on garbage code instead of creating endless recursion in AST 2015-07-14 21:07:10 +02:00
Daniel Marjamäki 177fd9c79d MathLib: make isinf and isnan more portable 2015-07-14 20:48:08 +02:00
Antti Tuppurainen a75872a15e Fix uniform init in out-of-class ctor-initer 2015-07-14 18:09:07 +02:00
Daniel Marjamäki 405a1fba11 ValueFlow: set values for false/true 2015-07-14 18:02:26 +02:00
Daniel Marjamäki 1a872a2c9f Fixed #6019 (false negative: Expression is always true/false '!(v!=10) && !(v!=20)') 2015-07-13 20:53:49 +02:00
Daniel Marjamäki 7ccd30362c Fixed #6826 (False positive: ValueFlow conditional value used in condition) 2015-07-12 19:35:47 +02:00
Daniel Marjamäki a4a866ab07 Fix Cppcheck warning about non-explicit constructor for MathLib::value 2015-07-10 21:17:17 +02:00
Daniel Marjamäki ac04541d56 MathLib: Add value class. this will allow more type-independant value handling. 2015-07-10 20:36:38 +02:00
Daniel Marjamäki f36f1e8952 MathLib: Minor tweaks. Use toDoubleNumber instead of std::atof. Only use clang workaround with clang. 2015-07-10 18:34:28 +02:00
Daniel Marjamäki 81d9c90890 Fixed Cppcheck warning caused by a redundant null pointer test. 2015-07-08 21:04:38 +02:00
Daniel Marjamäki 0dd008e068 Fixed Cppcheck warning about possible null pointer dereference 2015-07-08 16:06:35 +02:00
Daniel Marjamäki 5a9328f26a Fixed Cppcheck warning about possible null pointer dereference 2015-07-08 13:41:27 +02:00
Simon Martin 7bfb1fb545 Simplify the code handling C++0x typed enumerations. 2015-07-06 23:37:16 +02:00
Boris Egorov f7c6140e1a checkautovariables: Simplify some conditions 2015-07-05 17:15:13 +02:00
Daniel Marjamäki f3b4c1d0db Remove some useless casts, probably added to avoid false positives. 2015-07-04 13:19:21 +02:00
Daniel Marjamäki b8e77c8005 valueflow: fix for ?:. the condition result is not a result of the ?. 2015-07-04 11:17:38 +02:00
Daniel Marjamäki fef251ac76 negative array size: fixed noise when array is not vla 2015-07-04 09:42:42 +02:00
Daniel Marjamäki 7e1ddea653 One more fix for #6811 (ValueFlow: result of ?:) 2015-07-02 20:52:04 +02:00
Daniel Marjamäki c751039612 Fixed #6811 (ValueFlow: result of ?:) 2015-07-02 20:11:27 +02:00
amai2012 4a1695c879 #6807 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. #6808 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. Throw InternalError on garbage code 2015-07-01 16:31:49 +02:00
Alexander Mai 6e03e7dca2 Remove some code checking for invalid class hierarchy which got obsolete since 480a5672b0. Run astyle 2015-07-01 07:50:13 +02:00
amai2012 480a5672b0 #6298 stack overflow in Scope::findFunctionInBase (endless recursion). Fix handling of circular class hierarchy 2015-07-01 00:04:01 +02:00
amai2012 1604e751e5 Fix some compiler warnings which got introduced recently 2015-06-30 20:11:51 +02:00
amai2012 99dfd55d0c #6804 segmentation fault (invalid code) in Token::getValueTokenDeadPointer. Fix null pointer access
TestGarbage: Increase coverage by running all code snippets as C as well as C++ code. (inspired by #6800)
2015-06-30 19:40:22 +02:00
amai2012 c0b91662ba #6803 segmentation fault (invalid code) in Token::findClosingBracket. 2015-06-30 12:16:55 +02:00
amai2012 0849deed01 #6801 C: FN variable scope, FP unused value?. Fix typo from d7aa65c1fc 2015-06-30 08:46:30 +02:00
amai2012 11538c84f6 Refactoring: Distinguish between C and C++ code
Refactoring: Replace CheckNonReentrantFunctions::initNonReentrantFunctions by static initialization
2015-06-29 21:17:15 +02:00
Alexander Mai d7aa65c1fc #6800 segmentation fault (invalid code) in SymbolDatabase::SymbolDatabase. Fix null pointer access for invalid C code 2015-06-29 19:56:02 +02:00
Martin Ettl b8e08ca5d8 Code cleanup. 2015-06-28 19:27:23 +02:00
Martin Ettl 7ff4d10c43 Astyle formatting, no functional changes. 2015-06-28 19:25:13 +02:00
amai2012 5814c3b84c Fix some compiler warnings with VS
Minor refactoring on Windows SEH code.
2015-06-28 19:20:16 +02:00
Alexander Mai 0b225fa02f 2nd attempt to fix crash in CheckUnusedFunctions::check. CheckBufferOverrun::checkBufferAllocatedWithStrlen: Don't check for 'new' in C code. 2015-06-28 18:34:09 +02:00
Alexander Mai 02a3a01eca Fix compiler warnings 2015-06-28 18:07:31 +02:00
Alexander Mai 2c73518e29 Fix platform-dependent test result, formatting and crash in whole program analysis 2015-06-28 17:54:48 +02:00
amai2012 4a47b8b3ae Refactoring: Better distinguish between C and C++ in a few checks. 2015-06-28 16:49:16 +02:00
Alexander Mai 56e90f95d9 Corrections for non-Microsoft compilers 2015-06-28 12:34:08 +02:00
amai2012 649a89d308 Refactoring: Expose some previously local functions to public and add Tokenizer as argument to distinguish between C and C++ code (e.g. in isSameExpression).
Refactoring: Improve type-safety for TestFixture::assertEquals to allow tests with types which were not handled correctly (e.g. unsigned long long)
2015-06-28 12:08:36 +02:00
Alexander Mai e75662aaf1 #6792 segmentation fault (invalid code) in TemplateSimplifier::templateParameters. Avoid null pointer access 2015-06-25 20:48:05 +02:00
amai2012 ac1f0301c0 #6791 segmentation fault (invalid code) in TokenList::createAst. Fix null pointer access 2015-06-25 08:57:09 +02:00
Alexander Mai c047fae53b #6790 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. Fix null pointer access 2015-06-25 07:47:40 +02:00
Alexander Mai 8946fcd960 #6772 segmentation fault (invalid code) in Tokenizer::setVarId. Add another validate() call to Tokenizer::simplifyTokenList1. Small refactoring to Tokenizer: mark many methods as private. 2015-06-24 20:47:04 +02:00
Alexander Mai 6ba9c21fb9 #6786 segmentation fault (invalid code) in Tokenizer::simplifyRedundantParentheses. Small refactoring for Tokenizer::simplifyTokenList2() including additional calls to validate() - which prevents heap corruption on invalid code 2015-06-24 20:22:28 +02:00
amai2012 9fedc9bd74 #6788 segmentation fault (invalid code) in Tokenizer::simplifyVarDecl. Fix null pointer access 2015-06-24 16:54:23 +02:00
Alexander Mai f806d945a1 Refactoring: Allow TemplateSimplifier to throw InternalErrors by itself. 2015-06-23 20:53:57 +02:00
amai2012 69f91ac187 #6785 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. Avoid null pointer access 2015-06-23 17:59:01 +02:00
Alexander Mai 07bcc7157b #6784 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. Avoid null pointer access 2015-06-22 20:43:26 +02:00
amai2012 99524b1f59 #6780 segmentation fault (invalid code) in Token::multiCompare. Simple fix in CheckOther 2015-06-22 11:12:46 +02:00
Alexander Mai b6858622eb #6779 internal error: division overflow. Previous error handling (see #4520) was too restrictive. 2015-06-20 23:15:35 +02:00
Alexander Mai 4172011e78 Missing update for Makefile. CheckMemoryLeakInFunction::getcode(): skip some C++ token matching in C mode. Minor refactoring 2015-06-20 22:49:28 +02:00
Alexander Mai b3c7a3f798 Fix more (potential) multi-threading issues 2015-06-20 22:26:51 +02:00
Simon Martin 7481fbb028 Fixed #6506 (Properly detect calls to the deallocating free() function) 2015-06-20 21:00:54 +02:00
Daniel Marjamäki 1d49334398 Fixed #6662 (False positive assignIfError (assignment in while condition)) 2015-06-20 16:23:16 +02:00
Martin Ettl 272cf27ec3 Improved constness of local variable, no functional changes. 2015-06-20 11:33:27 +02:00
Daniel Marjamäki 63f39ea48f Change unusedScopedObject severity from error to style. The checker does not determine that there is ub or wrong behaviour. 2015-06-20 11:22:15 +02:00
Simon Martin cba0583045 Ticket #6536: Properly handle variables whose name is that of an allocation function. 2015-06-19 23:48:40 +02:00
Daniel Marjamäki af4a4663e2 Fixed #6764 (False positive redundantCondition - !(i>1) is not i<1) 2015-06-19 19:49:05 +02:00
Daniel Marjamäki 02df692b0b Fixed #4760 (false negative: (error) usage of uninitialized variable (struct member)) 2015-06-19 18:21:46 +02:00
Alexander Mai 712919a691 #6431 Invalid XML created - Invalid encoding of string literal. Partial fix: ensure the short message string is also processed to avoid problems with non-terminated string. 2015-06-18 21:16:25 +02:00
Alexander Mai 60f5bd97df Refactoring: missing include added, (potential) multi-threading issue fixed, expose static method to allow unit testing 2015-06-18 19:07:51 +02:00
PKEuS 189a652c2e Fixed garbage code in checkinternal.cpp 2015-06-18 17:13:46 +02:00
Matthias Krüger baaf3213e4 checkcondition: only print style message "A && (!A || B)' is equivalent to 'A || B'" if --enable=style is given. 2015-06-18 13:23:48 +02:00
Alexander Mai 13c1c2c035 Refactoring (use const std::set for strings). Omit some matching for C++ stuff within C code. 2015-06-17 22:28:15 +02:00
Alexander Mai eebb5b8c77 Fix some compiler warnings in checkio.cpp. Fix some (potential) multi-threading issues in checkinternal.cpp 2015-06-17 21:25:15 +02:00
Daniel Marjamäki a884362817 Fixed #6752 (wrong AST when there is lambda function) 2015-06-17 19:32:44 +02:00
orbitcowboy 06e818f89d Running astyle, no functional change. 2015-06-17 09:09:23 +02:00
amai2012 33d7631ee3 Fix another Borlad-specific test by setting Windows platform type
Refactoring: make CheckIO::ArgumentInfo aware of language (C vs. C++) to perform some optimizations
2015-06-16 23:11:34 +02:00
amai2012 a8db00b4bf Repair test which had to be adjusted after previous changeset.
Refactoring: Add some const
2015-06-16 22:45:33 +02:00
amai2012 919fcb38f5 Refactoring Tokenizer
Create Tokenizer::simplifyAsm2(), skip simplifyExternC() in C code and
simplifyBorland() on non-Microsoft or C code
2015-06-16 20:53:11 +02:00
Martin Ettl 9b14ab15eb MathLib::intsuffix: Added support for LLU and LU suffixes. 2015-06-16 19:12:18 +02:00
amai2012 227b48212e Skip some C++-specific simplifications in Tokenizer 2015-06-15 19:42:20 +02:00
Daniel Marjamäki 2cc23b4bb3 MathLib: Try to keep type suffix in constant calculations 2015-06-15 19:01:56 +02:00
XhmikosR 8fc4456fb4 Fix compilation error with MSVC 2013 after a7b82b5. 2015-06-15 16:06:18 +03:00
Alexander Mai a5a835b1e0 #6771 segmentation fault (invalid code) in SymbolDatabase::SymbolDatabase 2015-06-14 22:18:28 +02:00
Daniel Marjamäki d571d5db6f Fixed compiler warning -Wfloat-equal in template when type is double and there is equality comparison 2015-06-14 20:25:52 +02:00
Daniel Marjamäki 1e1ba6b4a9 Fixed #6574 (False positive oppositeInnerCondition - unknown variable) 2015-06-14 20:06:05 +02:00
Alexander Mai 70ba6c4340 #6767 False positive: memory leak when variable name is 'new'. Fix handling of new in C code. Move some tests for TokenList to new testtokenlist.cpp 2015-06-14 15:49:49 +02:00
Alexander Mai a7b82b5c28 Refactoring to address some issues from #5895 (handling of unsigned numbers). Also adding a TODO testcase since the real issue (FP) is still not fixed 2015-06-13 18:08:13 +02:00
Alexander Mai 40d7baa6bb Fix more (potential) multi-threading issues by moving static local vars (non-POD-type) to file scope 2015-06-13 16:22:43 +02:00
Alexander Mai d704e97203 Fix (potential) multi-threading issues by moving static local vars (non-POD-type) to file scope 2015-06-10 21:14:17 +02:00
Daniel Marjamäki 3986c0dc64 fixed cppcheck warnings 2015-06-10 19:07:04 +02:00
Dmitry-Me cae605b1ec New warning: warn about redundant code in condition. 2015-06-10 18:53:55 +02:00
Frank Zingsheim 0e354a03bd Fixed #6716 (Performance: Alternative String Representation in Match Compiler) 2015-06-07 16:21:06 +02:00
Daniel Marjamäki 0ca410a4d7 Fixed #6668 (False positive bufferAccessOutOfBounds on sprintf() - regression) 2015-06-07 14:01:20 +02:00
Alexander Mai c18461b173 #6761 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. Fix crash. 2015-06-07 13:35:51 +02:00
Daniel Marjamäki 75b0430ba5 Token::strValue: fixed handling of backslash 2015-06-07 11:25:33 +02:00
Alexander Mai b6264e4a00 #6759 segmentation fault (invalid code) in Tokenizer::simplifyTokenList2. #6760 segmentation fault (invalid code) in Tokenizer::simplifyTypedef. Fix crashes 2015-06-06 13:11:32 +02:00