Commit Graph

6712 Commits

Author SHA1 Message Date
PKEuS 605fb9039a Merge pull request #391 from Dmitry-Me/resolveIssue1037098
Resolve CID 1037098
2014-09-06 23:17:52 +02:00
PKEuS 117e45f8af Merge pull request #395 from Dmitry-Me/fixBufferOverrun
Fix potential buffer overrun
2014-09-06 23:03:02 +02:00
PKEuS 4859b55ce6 Merge pull request #422 from simartin/ticket_6023
Ticket #6023: Properly handle template'd default template parameter values
2014-09-06 22:55:45 +02:00
Alexander Mai e4d0435976 Merge branch 'master' of https://github.com/danmar/cppcheck 2014-09-06 22:27:38 +02:00
Alexander Mai 6b26b6ed31 Fix read access to uninitialized variable 2014-09-06 22:27:13 +02:00
Simon Martin 6e10603227 Ticket #6023: Properly handle template'd default template parameter values. 2014-09-06 20:39:04 +02:00
PKEuS 35b00a5e05 Support rValue references in typedef (#1823) 2014-09-06 19:00:26 +02:00
Alexander Mai efab840b50 #5230 Explicit reinterpret_cast should not give a warning. Lower all invalidPointerCast messages to 'portability' 2014-09-06 13:09:02 +02:00
Alexander Mai 29b46cb505 #6132 crash: daca: kvirc CheckOther::checkRedundantAssignment() 2014-09-05 20:03:34 +02:00
Martin Ettl 8a15486370 Fixed CID-1234716: Dereference after null check in lib/checkio.cpp 2014-09-01 09:00:05 +02:00
PKEuS e8f7279039 Refactorization: Moved detection of STL strings to SymbolDatabase 2014-09-05 12:03:08 +02:00
PKEuS 4940da06c0 Calculate checksum only if necessary (#6129) 2014-09-05 11:05:21 +02:00
Simon Martin eeeb816db9 Ticket #6103: Simplify "new (type)" constructs into "new type" to avoid confusion upon certain input. 2014-09-05 08:02:18 +02:00
PKEuS 8c24553229 Support inherited member variables in setVarId (#4101) 2014-09-04 22:22:09 +02:00
Alexander Mai 5a96413220 #6127 crash on patch(?)-".c" file. Avoid segfault. 2014-09-04 21:28:18 +02:00
Alexander Mai 65f599bd9e Fix version number macros 2014-09-04 21:18:15 +02:00
Daniel Marjamäki b3e4abd82a Fixed Cppcheck warnings 2014-09-04 18:08:56 +02:00
Daniel Marjamäki 05617d7285 Fixed #6118 (False positive: divide by zero - if condition not evaluated properly) 2014-09-04 17:52:14 +02:00
PKEuS 800b57d87e Merge pull request #415 from Dmitry-Me/reducePatternsDuplication
Reduce patterns duplication
2014-09-04 07:46:59 +02:00
PKEuS 5d0aa15002 Merge pull request #416 from Dmitry-Me/removeDuplicateChecks
Remove duplicate checks
2014-09-04 07:46:45 +02:00
PKEuS e4a81f9666 Improved checksum algorithm to fix configurations being purged by coincidence (#6126):
- Better distribution of values by rotating the bits of the checksum for each token
2014-09-03 23:10:38 +02:00
Alexander Mai 270f59e76a Fix doxygen warning and astyle formatting 2014-09-03 20:38:41 +02:00
Dmitry-Me 68d650e9ac Remove duplicate checks 2014-09-03 14:17:34 +04:00
PKEuS 6d27ca6c9a Fixed SymbolDatabase if unnamed struct is casted and returned (#6125) 2014-09-03 11:15:05 +02:00
PKEuS bf2f76e70c Detect and purge duplicate configurations by calculating a checksum. 2014-09-02 22:35:52 +02:00
Alexander Mai a632f68345 #6122 segmentation fault (invalid code) in in valueFlowForLoop2. Simple fix and testcase. 2014-09-02 19:41:50 +02:00
Alexander Mai 45dc4ca6be Fix compiler warning. Re-order if-expression for performance reasons 2014-09-02 19:18:30 +02:00
Dmitry-Me 46d24c7bfb Reduce patterns duplication 2014-09-02 19:51:22 +04:00
Dmitry-Me 7342a81ea7 Minor refactorings. rename token. cleanup if/else. 2014-09-02 16:10:51 +02:00
PKEuS a52401cf1b Fixed some compiler warning about signed/unsigned conversions. 2014-09-02 11:44:51 +02:00
PKEuS 3e65cb446e Remove "auto" keyword (storage class specifier) from C++03 and C code (#4990). 2014-09-02 11:21:47 +02:00
PKEuS 2d608890a5 Improved message 'mismatchSize' (#4167) 2014-09-02 09:38:40 +02:00
PKEuS ddc19febb5 Merge pull request #413 from Dmitry-Me/improveCStyleCastsDetection
Improve C style casts detection
2014-09-02 08:07:53 +02:00
PKEuS 428f7a6f26 Attempt to fix crashs on clang test suite. 2014-09-01 23:29:15 +02:00
PKEuS 00044aabb0 Handle ternary operator in redundantAssignment check (#5964) 2014-09-01 23:16:52 +02:00
Alexander Mai a4ff30301a #5805 'Passing value -1.0 to sqrt() leads to undefined result' is incorrect. Degrade wrongmathcall from error to warning, since it deals with implementation-defined behaviour 2014-09-01 19:31:32 +02:00
PKEuS 80df3dc642 Disabled several checks and simplifications for C code, if they are C++-only. Do not match arguments for C code, since there can't be overloads. 2014-09-01 18:43:24 +02:00
amai2012 9bc0e3afd6 Merge pull request #412 from Dmitry-Me/moveChecksEarlier
Move cheap checks earlier to avoid more expensive ones
2014-09-01 17:49:45 +02:00
Dmitry-Me f937dde1e0 Improve C style casts detection 2014-09-01 16:40:28 +04:00
PKEuS 0995b85c09 Attempt to fix crashs when self-checking cppcheck introduced by previous commit 2014-09-01 14:12:43 +02:00
PKEuS 40e5dab9dc Refactorization in checkmemoryleak.cpp:
- Use Library to detect noreturn/notnoreturn functions
- Removed realloc from std.cfg as long as there is no proper way to configure such functions
2014-09-01 13:54:33 +02:00
PKEuS c92230dfee Fixed crash on garbage code introduced by recent commit. 2014-09-01 12:41:30 +02:00
PKEuS 20a066bb14 Run unreachableCode checking only on executable scopes (#5789) 2014-09-01 11:29:39 +02:00
PKEuS b5e064e737 Fixed unreachableCode message if a lambda is returned (#6008). 2014-09-01 11:10:42 +02:00
Dmitry-Me a6219adc9b Move cheap checks earlier to avoid more expensive ones 2014-09-01 12:52:27 +04:00
PKEuS 353a9e9a64 Bailout for duplicateBranch check if branches are empty (#5354) 2014-09-01 10:19:14 +02:00
PKEuS e35329aba3 Fixed reporting of unmatched suppressions for unusedFunction (#4946) 2014-09-01 10:13:03 +02:00
PKEuS 47764321f2 Several fixes to invalidScanfFormatWidthError():
- Different IDs for different messages (#5809)
- severity is warning, not style, so check _settings->isEnabled() properly
- Removed never shown message text
2014-09-01 09:33:58 +02:00
amai2012 d1d3c24f3e Merge pull request #411 from Dmitry-Me/moveDeclarationsCloserToWhereTheyreNeeded
Move declarations closer to where they're first used
2014-09-01 08:48:46 +02:00
PKEuS 59cccb83ce Reimplemented version.h:
- Use macros to form version number and string. CPPCHECK_MAJOR, CPPCHECK_MINOR and CPPCHECK_DEVMINOR now contain the parts of the version number.
- "dev" status is now detected by comparison of CPPCHECK_MINOR and CPPCHECK_DEVMINOR, version string created accordingly.

Fixed two comments.
2014-09-01 08:48:25 +02:00
Dmitry-Me 9199dde560 Move declarations closer to where they're first used 2014-09-01 10:05:59 +04:00
PKEuS 288c94a47f Extended Message "fflushOnInputStream" to files opened for reading. 2014-08-31 21:03:33 +02:00
PKEuS b07f61170d Changed severity of fflushOnInputStream to portability: The behaviour of fflush(stdin) is defined on Linux. 2014-08-31 20:56:05 +02:00
PKEuS e1bc5f5248 Fixed false positive #4788 (break; in BOOST_FOREACH) 2014-08-31 20:40:52 +02:00
PKEuS 8722bba52a Fixed false positive #4648 2014-08-31 20:33:27 +02:00
PKEuS 3ccdae78ba Support __declspec(property) (#4700) 2014-08-31 20:17:18 +02:00
PKEuS b8918906e6 Fixed false positive #5466 2014-08-31 19:46:30 +02:00
PKEuS 8f4662de92 No unused variable messages about std::unique_ptr|shared_ptr|auto_ptr (#4355) 2014-08-31 19:18:02 +02:00
PKEuS 78932094c8 Fixed crash on garbage code #6106 2014-08-31 12:12:03 +02:00
PKEuS 9733a751ec SymbolDatabase: Several small refactorizations 2014-08-31 11:27:32 +02:00
PKEuS 862b18e0e2 SymbolDatabase: New scope type eLambda 2014-08-31 10:21:27 +02:00
Daniel Marjamäki 97005d7d87 remove redundant declaration of isSameExpression. fixes gcc compiler warning. 2014-08-30 19:23:31 +02:00
Dmitry-Me eace67ee1c Use logical instead of bitwise operators to save cpu 2014-08-30 11:35:25 +02:00
PKEuS e9fdfc6cd0 Fix on checking side for #6099 2014-08-30 11:18:48 +02:00
Daniel Marjamäki 3ac5f16668 Makefile: generate new Makefile with dmake 2014-08-29 18:32:50 +02:00
PKEuS 06a92e8981 Moved several condition checks from checkOther to checkCondition (former checkAssignIf) 2014-08-29 17:06:46 +02:00
Daniel Marjamäki eeeb8aa0a7 ValueFlow: Fix crash for lambda function 2014-08-27 17:27:34 +02:00
Daniel Marjamäki 2dc3945017 astyle formatting 2014-08-27 17:27:14 +02:00
Daniel Marjamäki ae8a20b197 Fixed #6086 (False positive: valueFlow, conditional code returns) 2014-08-27 16:59:18 +02:00
amai2012 c242faf45e Merge pull request #408 from Dmitry-Me/continueEarlyToOmitUnneededActions2
Continue early to omit unneeded operations
2014-08-27 16:36:19 +02:00
Matthias Krüger cd33d784d5 run dmake 2014-08-27 09:45:50 +02:00
PKEuS eba8c6f6c5 Refactorization:
- Added missing separating comments between checks in checkother.cpp
- Moved checks related to strings into own file
2014-08-27 09:42:09 +02:00
Dmitry-Me 44ba0ca347 Continue early to omit unneeded operations 2014-08-27 11:32:14 +04:00
Daniel Marjamäki 23ec9fea8e Fixed #6024 (False positive (nullPointer) using in 1.66) 2014-08-26 18:48:11 +02:00
PKEuS 6a4319f050 Improved simplifications:
- Rearranged their order to solve problems with typedefs. If we simplify chained declarations before typedef parsing, we have less complex expressions to deal with (#4777).
- Fixed detection of variables hiding enums
2014-08-26 15:21:19 +02:00
PKEuS a8dc17c1d9 Fixed false positive #5566. 2014-08-26 11:29:26 +02:00
PKEuS 5e2ea8b6cd Fixed crash #6089 by using information stored in Variable instead of accessing Variable::nameToken 2014-08-26 11:08:21 +02:00
PKEuS c15ead7855 Merge pull request #406 from Dmitry-Me/removeCodeDuplicationCleanupVariableNames
Reduce code duplication, cleanup variable names
2014-08-26 10:42:22 +02:00
PKEuS 2326e78381 Fixed #6058: Don't detect class with unknown macro as variable.
Commented out crashing unit test tokenize33() in VS12
2014-08-26 10:40:00 +02:00
amai2012 e02741c82c #5780 Crash on template code below Tokenizer::setVarId(). Fix several crashes with same location. 2014-08-26 09:12:10 +02:00
Daniel Marjamäki cd75b2d83d AST: fix hang for code 'MACRO({.x=1,.y=2})' 2014-08-25 19:10:16 +02:00
Dmitry-Me d72b98bbaa Reduce code duplication, cleanup variable names 2014-08-25 11:49:17 +04:00
Dmitry-Me 67ea470275 Break loop early, cleanup declarations 2014-08-24 20:17:41 +02:00
Daniel Marjamäki 789b01aad2 ValueFlow: fixed one more hang in valueFlowForward 2014-08-24 08:50:01 +02:00
Daniel Marjamäki 1060b30e52 AST: better AST for placement new expression 'new (a) MyClass;' 2014-08-23 13:21:36 +02:00
PKEuS 0dc4b75565 Fixed crash on invalid code #6080 2014-08-23 12:36:42 +02:00
PKEuS 7f2be2f57c Fixed template bracket linkage in while loop simplification
Ran AStyle
2014-08-23 12:28:54 +02:00
amai2012 976966fe81 #5639 String literal compared with char buffer in a struct. 2014-08-23 09:41:40 +02:00
PKEuS f01d7543f6 #6077: Don't warn about memcpy/memmove on class containing floats. 2014-08-20 15:12:53 +02:00
PKEuS c678937538 Fixed more false positives of #6056:
- Implemented nextArgument() for usages before < and > are linked
- slightly optimized nextArgument()
2014-08-20 15:02:52 +02:00
PKEuS 8188578cf2 SymbolDatabase: Fixed handling of nested types for function arguments
Removed unnecessary loops between var->typeStartToken() and var->typeEndToken()
2014-08-19 11:55:00 +02:00
PKEuS 69b7f91034 Support :: in some more places 2014-08-19 11:36:32 +02:00
PKEuS 5d50e7e9ae Changed heuristics to detect variable constructor initialization syntax (#6071) 2014-08-19 11:06:52 +02:00
PKEuS 96c5983409 Merge pull request #404 from Dmitry-Me/continueEarlyToOmitUnneededActions
Continue early to omit unneeded actions
2014-08-19 09:45:54 +02:00
Daniel Marjamäki b6355b991f Fixed #6070 (false positive: Array 'array[8192]' accessed at index 8192, which is out of bounds) 2014-08-19 07:03:00 +02:00
Dmitry-Me 93b5b28c3d Continue early to omit unneeded actions 2014-08-19 07:58:45 +04:00
PKEuS eac2d58c9e Fixed fix for #6056 2014-08-18 20:40:43 +02:00
PKEuS 49bafa10a0 Merge pull request #402 from Dmitry-Me/emiminateDuplicateStatements
Remove duplicate return statements.
2014-08-18 18:39:46 +02:00
Daniel Marjamäki b2288e5ada Fixed #6022 (Defect: False positive due to bug in determining bounds of for loop 'for (i = 2; i < 1; ++i)') 2014-08-18 16:45:22 +02:00
Dmitry-Me 443e846b2e Remove duplicate return statements. 2014-08-18 16:02:35 +04:00
Dmitry-Me a386fbb665 Avoid mutually exclusive checks 2014-08-18 14:30:52 +04:00
Dmitry-Me 120e8c0674 Make loop termination more explicit. 2014-08-18 14:00:25 +04:00
PKEuS 5483c8ed5e Removed obsolete function from checkNullPointer 2014-08-18 11:42:50 +02:00
PKEuS e7754be316 Fixed #6056 - properly detect member functions in setVarId() 2014-08-18 11:07:56 +02:00
PKEuS a69860eb70 Fixed false positive #6066: va_list may be used after being copied. 2014-08-18 10:40:39 +02:00
PKEuS 5c54f8d0d8 Support namespaces and static member variables in setVarId (only one depth) (#6061) 2014-08-18 10:25:30 +02:00
PKEuS 0bf7b03f96 Refactorization: Support :: in some places in checkother.cpp 2014-08-18 10:25:30 +02:00
PKEuS df080ab5c3 Refactorization in valueflow.cpp: Removed redundant loop, rearranged code. 2014-08-18 10:25:30 +02:00
Daniel Marjamäki d44d6ad94a incorrect logic operator: fixed crashes 2014-08-18 05:37:07 +02:00
Alexander Mai 66d767b4b5 #6050 arithmetic on void** - fix false positive 2014-08-17 19:14:55 +02:00
Daniel Marjamäki a52c122229 Tokenizer::createLinks2: set no template-links in 'if (a < b || c > d)' 2014-08-17 19:03:06 +02:00
Daniel Marjamäki ebc0b6cd44 astIsFloat: Fix crash when there is no second operand for '.' 2014-08-17 14:28:31 +02:00
Daniel Marjamäki f7f44f24c7 Fixed #5132 (False negative: incorrectLogicOperator in simple if-clause) 2014-08-17 14:04:40 +02:00
Daniel Marjamäki 5cdbe0f42d ValueFlow: Improved value flow after for loop 2014-08-17 10:40:22 +02:00
Daniel Marjamäki 75ec97ad23 Tokenizer::simplifyKnownVariables: Fixed bad simplification in for loop header 2014-08-17 07:39:42 +02:00
Daniel Marjamäki 7ca742c454 Fixed #5062 (ValueFlow: Handle comma operator in abstract interpretation) 2014-08-17 06:42:16 +02:00
Daniel Marjamäki 65f10edcb6 Fixed #5866 (False negative: useless condition or null pointer dereference (null object after while loop, method)) 2014-08-16 18:32:25 +02:00
Daniel Marjamäki 76510e0006 null pointer: perform proper null pointer checking when no --enable=warning is given. 2014-08-16 12:48:20 +02:00
Dmitry-Me e91a63c834 Resolve CID 1037101. break after loop if tok is null because tok is dereferenced below. Ticket: #6055 2014-08-15 18:39:15 +02:00
Daniel Marjamäki 364c975701 Fixed #5557 (astIsFloat: better handling of '.') 2014-08-15 16:48:53 +02:00
Dmitry-Me 7e442cf75d Some safe coding. Check that pointer is not null. 2014-08-14 16:10:12 +02:00
Daniel Marjamäki 543589564d Merge pull request #394 from Dmitry-Me/resolve1132030
Resolve CID 1132030
2014-08-14 13:28:59 +02:00
Daniel Marjamäki 6db3eabadb Merge pull request #393 from Dmitry-Me/furtherResolve1222223
Further resolve CID 1222223
2014-08-14 09:54:13 +02:00
Daniel Marjamäki b8e356462a Dead pointer: Fixed FP for subfunction pointer argument 2014-08-14 06:47:19 +02:00
Daniel Marjamäki e83f08a825 Fixed #6044 (hang: darkplaces / cl_particles.c) 2014-08-14 06:13:42 +02:00
Daniel Marjamäki f0cb6ef33d Change fix for hang so there won't be FP 2014-08-13 05:36:17 +02:00
Daniel Marjamäki bdfe43d82c Fix hang in libdmtx package. found through daca2. 2014-08-13 04:03:17 +02:00
Dmitry-Me 406239dfc7 Fix potential buffer overrun 2014-08-12 17:44:20 +04:00
Dmitry-Me b022afae75 Resolve CID 1132030 2014-08-12 13:04:32 +04:00
Dmitry-Me 0991d42cb9 Further resolve CID 1222223 2014-08-12 11:14:28 +04:00
Dmitry-Me fd9009c494 Resolve CID 1037098 2014-08-12 10:02:54 +04:00
Daniel Marjamäki 970fda9e79 ValueFlow: Fixed nullpointer FP warning in checksizeof 2014-08-11 16:21:20 +02:00
PKEuS 5d302716e7 Refactorized Variable::isIntegralType() and Variable::isFloatType():
- Cached property
- Make use of it in several checks
- float* is flagged as floating point type
2014-08-09 11:45:13 +02:00
PKEuS 2d06786c3f Merge pull request #388 from Dmitry-Me/resolveIssue1037100
Resolve CID 1037100: possible dereference of _errorLogger nullpointer
2014-08-09 10:35:18 +02:00
PKEuS 728d0fb9dc Merge pull request #390 from Dmitry-Me/suppressGccShadowingWarning
Avoid GCC name shadowing warning.
2014-08-09 10:34:36 +02:00
PKEuS 865df4e207 Fixed false negative #4306: Detect loop access of empty STL container 2014-08-09 10:06:44 +02:00
PKEuS 5ddee75b5d Removed newline from divideBySizeofError message 2014-08-08 09:59:55 +02:00
PKEuS 5c238692e6 New check: Division by sizeof() as parameter to memset/memcpy/memmove/etc. as they expect a size in bytes (#5698)
Refactorizations in sizeof checking:
- Changed severity of sizeofwithsilentarraypointer to warning
- Made pointerSize message conclusive - there seems to be no reason for inconclusive
2014-08-08 09:49:09 +02:00
PKEuS c4635cf698 Improved check: portability message when calling memset on a class with floating point numbers (#5421) 2014-08-08 09:49:09 +02:00
PKEuS a1b7ab277b Changed handling of unhandled characters:
- Don't abort checking (reverts 42140b6488)
- Modified error message: New Id unhandledCharacter, removed redundant line information, improved message text
2014-08-08 09:49:09 +02:00
PKEuS 56ba4b6a92 Fixed crash if va_start is passed less arguments than expected 2014-08-06 20:53:13 +02:00
PKEuS 076c1bd06c Fixed crash in CheckVaarg::va_start_argument (#6032) 2014-08-06 19:35:09 +02:00
PKEuS b708022e97 Fixed cppcheck message 2014-08-06 14:31:09 +02:00
PKEuS 639f1fa85a Fixed another variable shadowing warning. 2014-08-06 14:27:03 +02:00
Matthias Krüger b5cf56790c dmake: update 2014-08-06 14:25:49 +02:00
PKEuS 5f7b4ad0ae Added several new va_arg related checks:
- Wrong parameter passed to va_start() (#3850)
- Reference passed to va_start() (#3849)
- Missing va_end() (#3295)
- Using va_list before it is opened (#3295)
- Subsequent calls to va_start/va_copy()
2014-08-06 14:20:46 +02:00
PKEuS e4b55cf843 Fixed a bug and two warnings introduced recently. 2014-08-06 13:35:39 +02:00
Dmitry-Me 3ec821df34 Avoid GCC name shadowing warning. 2014-08-06 15:35:04 +04:00
PKEuS c3577bc8dd Fixed crash, simplified code in testassert.cpp 2014-08-06 12:24:21 +02:00
PKEuS d3a567bf96 Fixed false positive #5824: Variables that might be used for va_start() must not be passed by reference. 2014-08-06 12:06:36 +02:00
PKEuS adcc8b1634 Implement support for __attribute__((used)) (#3408) 2014-08-06 11:13:58 +02:00
PKEuS 8da61ab71a Refactorized CheckAssert::assertWithSideEffects():
- Removed crap
- Error message on calling non-const member function in assert()
- Fixed false positive #5311 and TODO_ASSERT
2014-08-06 10:15:48 +02:00
Dmitry-Me 51fab1f9f1 Resolve CID 1037100 2014-08-06 11:20:04 +04:00
PKEuS fd5ff1bb8b Fixed false positive #6030: inheriting classes is not a variable declaration. 2014-08-06 09:04:03 +02:00
PKEuS e7605d6f77 Merge pull request #387 from Dmitry-Me/resolveIssue1037105
Resolve CID 1037105
2014-08-06 08:42:01 +02:00
PKEuS 83a80cebeb Fixed order of simplifications (#6029) 2014-08-06 08:39:23 +02:00
Dmitry-Me 644d83e91b Resolve CID 1037105 2014-08-06 10:05:32 +04:00
Daniel Marjamäki 8bbbb54f94 Refactoring valueFlowSubFunction 2014-08-06 06:33:06 +02:00
Moshe Kaplan 4894d3807d Improved invalidScanf error message 2014-08-06 06:08:28 +02:00
Daniel Marjamäki f2fdc4fb14 Merge pull request #385 from Dmitry-Me/resolveIssue1222223
Resolve CID 1222223.
2014-08-05 17:48:04 +02:00
PKEuS 8130fda4ae Implemented support for C++11 uniform initialization in several checks. 2014-08-05 16:11:42 +02:00
PKEuS f3e0df7501 Support C++11 style initialization with {}:
-> Support in setVarId and SymbolDatabase (#4344)
-> Fixed false positives in unused variable checking (#5491, #5494)

Side-effect: Support global variables initialized with brackets (C++03 style) in SymbolDatabase
2014-08-05 15:33:57 +02:00
PKEuS 4207b3cb66 Fixed error message. 2014-08-05 11:59:53 +02:00
PKEuS 804e055eee New check: initialization by itself in initializer list (#3982)
Refactorizations:
- Rearranged code in checkclass.cpp to increase readability
- Several fixes for testclass.cpp tests.
2014-08-05 11:50:08 +02:00
Daniel Marjamäki 9eb28cb8af ValueFlow: Improved analysis of assignments 2014-08-05 08:28:46 +02:00
Daniel Marjamäki a2f776b1b7 Dead pointer: Added checking for dead pointer usage when pointer alias local variable that has gone out of scope. 2014-08-05 06:24:23 +02:00
Daniel Marjamäki eac337b955 Fixed Cppcheck warning about 'null pointer dereference or redundant condition' 2014-08-04 15:15:41 +02:00
Daniel Marjamäki d35ce5f0db ValueFlow: Better handling of calculated function arguments in valueFlowSubFunction 2014-08-04 12:31:04 +02:00
Daniel Marjamäki 344016f7ab ValueFlow: Handle string values in valueFlowSubFunction 2014-08-04 12:13:15 +02:00
PKEuS ac59485e7e Refactorized CheckAutoVariables::assignFunctionArg():
- Splitted message into style message (assigning non-pointers) and warning message (assigning pointers)
- Support operator++/-- (#4793)
2014-08-04 11:45:24 +02:00
PKEuS 4a3d719386 Fixed recently introduced FP when C-Style casting nullpointers 2014-08-04 11:42:14 +02:00
PKEuS 4c80ca4e8e Improved cstyleCast check:
- Detect casting of literals
- Check initializer lists (#3630)
2014-08-04 11:21:25 +02:00
Daniel Marjamäki 47a2b35e98 BufferOverrun: Use ValueFlow string values more 2014-08-04 08:25:10 +02:00
Dmitry-Me 8cd6e490d9 Resolve CID 1222223. 2014-08-04 10:00:53 +04:00
Daniel Marjamäki ab958e7710 Fixed Cppcheck warning 2014-08-04 06:30:20 +02:00
Daniel Marjamäki 79fc549de0 ValueFlow: start adding valueflow handling of strings and pointer aliases 2014-08-03 20:11:22 +02:00
PKEuS 57c055fcc4 Fixed false negative #5985: default argument values should not affect variable usage checking. 2014-08-03 19:13:37 +02:00
PKEuS de66ed4071 Added missing message to --errorlist output, changed Id to avoid duplicate 2014-08-02 20:55:59 +02:00
PKEuS 6d5603af45 Increased version to 1.66.99/1.67 dev 2014-08-02 18:07:01 +02:00
Daniel Marjamäki 1c8c26a488 1.66: Set version 2014-08-02 11:58:30 +02:00
PKEuS e486e8cc62 Updated WiX installer and VS solution to VS12 and Qt5 2014-08-02 11:52:37 +02:00
PKEuS 6d3cb86d2a Merge pull request #382 from Dmitry-Me/bringDeclarationsCloserToWhereTheyAreNeeded
Bring variable declarations closer to where they're first used.
2014-08-02 11:12:34 +02:00
Daniel Marjamäki f2e3700142 Merge pull request #383 from moshekaplan/patch-1
Updated message for strncat usage
2014-08-02 11:10:16 +02:00
Daniel Marjamäki 7237b01979 Fixed Cppcheck warning 2014-08-02 10:07:23 +02:00
Daniel Marjamäki 4dc73e3a5b Use Token::simpleMatch for simple pattern 2014-08-01 17:47:02 +02:00
Daniel Marjamäki 3f5da22d2b Tokenizer: Added FIXME for keywords handling 2014-08-01 17:27:35 +02:00
Daniel Marjamäki a943a0739a Tokenizer: Don't remove struct member in Tokenizer::simplifyKeyword() 2014-08-01 17:19:08 +02:00
Daniel Marjamäki f908959196 ValueFlow: improved analysis in for loops to avoid fp 2014-08-01 16:12:57 +02:00
Daniel Marjamäki 544a5957e1 Token: Added utility function getStrSize as a complement to getStrLength 2014-08-01 13:12:18 +02:00
Daniel Marjamäki 404c13ef4b Fixed ValueFlow --debug output 2014-08-01 09:50:30 +02:00
Daniel Marjamäki 688b798b88 ValueFlow: Cleanup variable 2014-08-01 08:59:07 +02:00
Daniel Marjamäki 57c2e928d1 ValueFlow: Simple multivariable control flow analysis to avoid FP when 'control variable' is used 2014-08-01 07:35:15 +02:00
PKEuS 95afa51b24 Fixed crash #5991: Don't crash when lambda is incomplete
Fixed crash #6004: Support struct initializations in AST
2014-07-31 23:15:36 +02:00
Moshe Kaplan e881495eaf Updated message for strncat usage 2014-07-31 13:51:29 -04:00
Daniel Marjamäki 5de1e35350 CheckBufferOverrun: Fixed minsize checking of string literals. Check sizeof string instead of strlen. 2014-07-30 20:35:21 +02:00
Daniel Marjamäki 25846cf223 ValueFlow: Fix for if/else valueflow analysis 2014-07-30 18:12:33 +02:00
Daniel Marjamäki 473b1bdb2b Multicondition: Fixed FP when using dynamic_cast 2014-07-30 11:23:09 +02:00
Dmitry-Me ee180787eb Bring variable declarations closer to where they're first used. 2014-07-29 13:59:45 +04:00
Daniel Marjamäki 905a383ac2 Merge pull request #381 from Dmitry-Me/checkBooleanFlagFirst
Run cheaper check first, don't check the same condition twice.
2014-07-28 18:02:49 +02:00
Daniel Marjamäki 8a1c5d6fce Fixed #6011 (crash: libreoffice/binfilter svt_enhwmf.cxx) 2014-07-28 16:33:42 +02:00
Daniel Marjamäki fdfea717c6 Suspicious string comparison: Refactoring using AST. Fixed FP in Lac. 2014-07-28 14:27:35 +02:00
Dmitry-Me dc03b98e60 Run cheaper check first, don't check the same condition twice. 2014-07-28 14:58:19 +04:00
Robert Reif 90bc59e0fa Fixed #6009 (Detect type mismatch in printf-like function when type is returned) 2014-07-28 09:16:35 +02:00
Daniel Marjamäki 76020d2ad0 astIsFloat: expression 'floatvar ? 0x40 : 0' is not float 2014-07-26 09:09:58 +02:00
Dmitry-Me 431453f53e Reuse previously computed values, use more const. 2014-07-25 15:05:13 +04:00
Daniel Marjamäki 216ecd06e1 Fix Cppcheck warning. Make function Preprocessor::readpreprocessor static instead of const. 2014-07-25 12:43:55 +02:00
Dmitry-Me f104aa237f Bring declarations closer to where they're needed. 2014-07-24 18:34:13 +04:00
Dmitry-Me a4d597451b Resolve CID 1214637. 2014-07-24 16:54:20 +04:00
Dmitry-Me 615eb32fdc Use temp variables to avoid repeated actions in code. 2014-07-23 18:51:23 +04:00
Dmitry-Me 07c120f1af Cache option flags and check them first. 2014-07-23 17:06:27 +04:00
Daniel Marjamäki 2e60f30bfc Merge pull request #372 from Dmitry-Me/dontUseArrayAtWhenItWouldntThrow
Use [], not at() when the index is guaranteed to be valid.
2014-07-23 14:15:42 +02:00
Daniel Marjamäki c5e9da2984 xml dump: add more token attributes 2014-07-21 12:44:53 +02:00
Dmitry-Me cd13232062 Use [], not at() when the index is guaranteed to be valid. 2014-07-21 10:37:08 +04:00
Daniel Marjamäki 5ae6234729 Fixed #5978 (false positive: Array 'm_pool_vector[-1]' accessed at index 0, which is out of bounds.) 2014-07-20 11:44:25 +02:00
Daniel Marjamäki 1e5eab8f17 xml dump: Added function attribute in scope 2014-07-20 11:44:01 +02:00
Daniel Marjamäki 328cc7b8f5 Fixed #5996 (false positive: Clarify calculation precedence for '+' and '?'.) 2014-07-19 18:29:53 +02:00
Daniel Marjamäki af2b94e322 Fixed #5826 (Change error message for 'throw in destructor' check) 2014-07-19 03:29:50 +02:00
Daniel Marjamäki c252885bf8 Merge pull request #369 from Dmitry-Me/useBoolFlagToAvoidComparisonDuplication
Use boolean flag to avoid comparison duplication
2014-07-18 18:11:53 +02:00
Daniel Marjamäki 2cc31acabb Fixed #5922 (FP: passedByValue for std::string::value_type) 2014-07-18 15:51:59 +02:00
Dmitry-Me fae9d975cf Use boolean flag to avoid comparison duplication 2014-07-18 13:31:31 +04:00
Daniel Marjamäki 946c139043 Merge pull request #367 from Dmitry-Me/fixVariableCapitalization
Fix variable capitalization.
2014-07-18 11:15:17 +02:00
Alexander Mai 55e45add4a Fix compiler warnings 2014-07-17 20:04:56 +02:00
Dmitry-Me f995f67a11 Fix variable capitalization. 2014-07-17 12:38:09 +04:00
Daniel Marjamäki 425e7527bb Merge pull request #366 from Dmitry-Me/useTempVariableToOmitRecomputation
Use temp variable to omit recomputing the same value.
2014-07-17 10:27:47 +02:00
PKEuS 8c96cc59c9 Fixed false positive #5976: Properly handle shift from stream. 2014-07-17 10:03:58 +02:00
Daniel Marjamäki 15bb447fdc Fixed #5965 (False positive zerodiv - loop iterating over double variable) 2014-07-17 08:44:55 +02:00
Dmitry-Me c829dff2b9 Use temp variable to omit recomputing the same value. 2014-07-17 10:44:19 +04:00
Daniel Marjamäki b1e5b015df xml dump: output some more info in the dump 2014-07-16 15:27:13 +02:00
Daniel Marjamäki 51c2245a07 Merge pull request #364 from Dmitry-Me/tempVariablesAndBetterNames
Shorten code by using temp variables, cleanup variable names.
2014-07-16 15:22:11 +02:00
Dmitry-Me 13234a7366 Shorten code by using temp variables, cleanup variable names. 2014-07-14 12:20:00 +04:00
Dmitry-Me 2989f70898 Get rid of tokAt() and strAt() in trivial cases. 2014-07-14 11:44:58 +04:00
Daniel Marjamäki 954400a382 Add simple xml debug output. When both --xml and --debug is used there will be xml debug output. 2014-07-13 17:21:45 +02:00
orbitcowboy af6f21308f Tokenizer: Added missing comma in string array initialization (This fixes Coverity-ID: 1226263 Missing comma in a string array initialization). 2014-07-12 12:52:49 +02:00
orbitcowboy 6e5a05104b Fixed copy and paste error (Coverity-ID: 1226262 Copy-paste error). 2014-07-12 12:48:05 +02:00
Daniel Marjamäki 5bdd197b01 Fixed #5981 (FP: nullPointer on repeated switch) 2014-07-16 09:12:56 +02:00
Daniel Marjamäki d41ef3a6d0 TemplateSimplifier: Fixed crash caused by null pointer dereference. I don't have a testcase. But the code is suspicious, in the loop we check if tok3 is null and then in the loop head we call tok3->next(). 2014-07-15 21:28:52 +02:00
Daniel Marjamäki c531749d7a ValueFlow: Small cleanups 2014-07-15 10:36:13 +02:00
Daniel Marjamäki b6a9c53826 xml dump: fixed some bad xml output in the token list dump 2014-07-14 19:49:31 +02:00
Daniel Marjamäki 2f7b8fe4b2 xml dump: fixed some minor issues in symboldatabase dump 2014-07-14 19:25:30 +02:00
Daniel Marjamäki 84ec573d0a xml dump: Fixed segfault when dumping symboldatabase variables 2014-07-14 19:17:39 +02:00
Daniel Marjamäki 6732556eb8 xml dump: output a <variables> with all variables 2014-07-14 18:35:15 +02:00
Daniel Marjamäki 2e7a72856a xml dump: remove duplicate attribute 2014-07-14 18:13:27 +02:00
Daniel Marjamäki 8db5836e3f Fixed #5982 (Add xml dump) 2014-07-14 15:51:45 +02:00
Daniel Marjamäki bf5b4d9ece astyle formatting
[ci skip]
2014-07-14 14:38:40 +02:00
Dmitry-Me 9829e0b48a Clearer variable names, fix typo in comment. 2014-07-11 11:33:09 +04:00
Dmitry-Me ba3757dfd3 Bring variables decalaration to where they are really needed. 2014-07-10 11:23:14 +04:00
Daniel Marjamäki bc6a320f91 Merge pull request #359 from Dmitry-Me/useReferencesToAvoidDeepCopy
Use references instead of deep copying the strings
2014-07-10 08:31:09 +02:00
Daniel Marjamäki cb9d67b9ec Fixed #5901 (False positive: (error) Using 'memcpy' with vector of uint8_t items) 2014-07-09 15:00:06 +02:00
Dmitry-Me d0cbfeb186 Use references instead of deep copying the strings 2014-07-09 11:21:38 +04:00
Daniel Marjamäki 7b0616786c Merge pull request #358 from Dmitry-Me/reuseDataFromPreviousCodeAndOmitChecks2
Omit unnecessary checks
2014-07-09 06:45:52 +02:00
Alexander Mai df95cd09f0 Fix compiler warnings about type mismatch 2014-07-08 21:47:22 +02:00
Daniel Marjamäki 14def42c99 Fixed #5972 (FP: Buffer is accessed out of bounds) 2014-07-08 16:31:08 +02:00
Daniel Marjamäki 254b6438b9 CheckBufferOverrun::checkStringArgument: sizeof string is strlen+1 2014-07-08 16:04:09 +02:00
Dmitry-Me 7da6ce8704 Omit unnecessary checks 2014-07-08 12:28:57 +04:00
Daniel Marjamäki 4d0189c672 CheckBufferOverrun: Fixed crash. The crash occured in ThreadHandler in the deserialize() function. Probably because " was used in error message. 2014-07-08 07:08:51 +02:00
Daniel Marjamäki 6afe9a4fbe astyle formatting
[ci skip]
2014-07-08 06:44:57 +02:00
amai2012 9b38ae73c1 Attempt to fix 2 Coverity messages.
Replace a few unsigned int by std::size_t
2014-07-07 21:25:30 +02:00
Daniel Marjamäki 987ce5a408 Fixed #5968 (False positive: 'Possible null pointer dereference' when checking null in negated conjuction) 2014-07-07 17:48:58 +02:00
Daniel Marjamäki 26a3bdfe00 ValueFlow: Cleanup code by using SymbolDatabase provided scope info 2014-07-07 16:34:21 +02:00
Daniel Marjamäki 3169a2d215 astyle formatting
[ci skip]
2014-07-06 17:50:21 +02:00
amai2012 0ddd7752b5 Avoid crash reported in #5943 (using the example from duplicate ticket #5971)
Replace a few size_t/unsigned int by std::size_t
2014-07-06 14:48:24 +02:00
amai2012 f1bf38004b Fix MSVC compiler warnings 2014-07-06 13:08:22 +02:00
Daniel Marjamäki 0fd334911a Fixed #5257 (Check memcpy size for string literals) 2014-07-06 08:41:39 +02:00
amai2012 77095e2b05 Add some more functions to posix.cfg which allow to enable TestBufferOverrun::buffer_overrun_1_posix_functions
Fix some compiler warnings on MSVC
2014-07-05 22:47:10 +02:00
Daniel Marjamäki a3acc3241e Library: Added <minsize> element used for buffer overrun checking 2014-07-05 20:31:43 +02:00
Alexander Mai 88890a851c Fix compiler warning (and minor cleanup). 2014-07-05 12:10:23 +02:00
Dmitry-Me 4f21b31004 Use temp variables to simplify code. 2014-07-04 10:56:43 +04:00
Daniel Marjamäki 51396e52aa Merge pull request #353 from Dmitry-Me/breakLoopEarlyInsteadOfContinuingBitwiseAnd
Break the loop once the result can no longer change.
2014-07-03 06:54:00 +02:00
Daniel Marjamäki d40b77dce2 Removed special 'else if' handling. this is redundant since these are simplified. 2014-07-02 16:16:19 +02:00
PKEuS 719304a8fc Added internal check for || and | inside Token::Match patterns. 2014-07-02 15:51:18 +02:00
PKEuS b4f0869a71 Reduced Token::Match complexity, better support for complex patterns 2014-07-02 15:25:41 +02:00
PKEuS 817d32f791 Fixed and cleaned up Token::Match engine 2014-07-02 15:25:19 +02:00
Dmitry-Me b38e43ebae Negation not needed anymore. 2014-07-02 11:12:39 +04:00
Zachary D. Blair f6523e384b Fixed 4979 (Doesn't allow any ordering of int modifiers) 2014-07-01 23:59:04 -07:00
PKEuS 3d0ebe196b Several improvements to CheckUnusedVar::checkFunctionVariableUsage_iterateScopes():
- Use AST in some places
- Fixed misusage of Token::isStandardType (fixes false negative)
- Removed some redundant conditions
2014-07-02 00:18:40 +02:00
Daniel Marjamäki 5e9e90b1c1 Fixed Token::Match pattern. In x|y|.. patterns, all %cmd% should be placed before plain-text operands. 2014-07-01 15:55:29 +02:00
Dmitry-Me 454dd0a736 Break the loop once the result can no longer change. 2014-07-01 17:16:45 +04:00
Daniel Marjamäki b7d7633b97 ValueFlow: Improved analysis after switch 2014-06-30 17:56:42 +02:00
Daniel Marjamäki f1762f9ed6 Fixed #5939 (fp: Possible null pointer dereference, after check against NULL in for loop) 2014-06-30 07:26:48 +02:00
Daniel Marjamäki df799f97c5 valueFlowBefore: better analysis of conditional assignment 2014-06-30 00:02:49 +02:00
Daniel Marjamäki 4f43e4f9aa Fixed #5959 (ValueFlow: return value from subfunction) 2014-06-29 18:04:38 +02:00
Daniel Marjamäki 893996d182 Fixed #5937 (ValueFlow: wrong analysis of calculations with different variable operands) 2014-06-29 10:57:39 +02:00
Daniel Marjamäki 41baffdda1 Fixed #5850 (Wrong Message on self assignment) 2014-06-28 15:26:22 +02:00
Daniel Marjamäki ab08883332 Merge pull request #351 from simartin/ticket_5952
Ticket #5952: Simplify redundant parentheses in pointer variable declarations
2014-06-28 12:20:27 +02:00
Daniel Marjamäki 9eaadc81e2 Fixed #5861 (valueFlowSubFunction: fp for float value) 2014-06-28 12:04:20 +02:00
Daniel Marjamäki 46479ced7e Library: Handle FIlE_NOT_FOUND better 2014-06-28 10:22:35 +02:00
Daniel Marjamäki 6f2c8a8236 Fixed #5931 (arrayIndexOutOfBoundsCond id reported instead of arrayIndexOutOfBounds) 2014-06-28 10:09:53 +02:00
Simon Martin 7b942650c2 Ticket #5952: Simplify redundant parentheses in pointer variable declarations. 2014-06-28 09:36:51 +02:00
Daniel Marjamäki 6c8558c112 CheckBufferOverrun: Removed old for-loop handling. This is handled through ValueFlow from now on. 2014-06-27 06:46:42 +02:00
Alexander Mai b6a40fceb7 Fix some compiler warnings 2014-06-26 20:34:07 +02:00
Daniel Marjamäki 036b2f8ccf CheckBufferOverrun: Added bufferOverrun2 that is based on ValueFlow/SymbolDatabase/Ast from the start. Replaced some old checking. 2014-06-26 17:36:20 +02:00
Daniel Marjamäki 72992c7973 AST: fixed ast for '++i;' 2014-06-26 17:31:57 +02:00
PKEuS 7ea7ee0005 Store Token::_originalName on heap, since it is only used for a small amount of Tokens (reduce memory usage of TokenList by ~12% (x64)) 2014-06-26 11:51:02 +02:00
PKEuS ec1bd420a7 Refactorizations optimizing std::string usage:
1) Added global static const std::string emptyString; object:
-> Replaces some static variables in functions which might be not threadsafe
-> Avoids constructor call (std::string::string(""))
-> Even functions that return an empty string in some branches can return by reference now.
Added to config.h to ensure that it is available everywhere

2) Added overloads for TestFixture::assertEquals for the most common use cases:
-> Moves conversion from const char[] to std::string into a function, reducing code duplication in binary.
2014-06-26 11:51:02 +02:00
PKEuS feefa4c626 Speedup checking large amounts of arrays (#5615) by avoiding Token::Match calls in CheckBufferOverrun::checkScope(2).
-> Decreased entire checking time on a subset of the attached file by 66% (MSVC12, x64, non-matchcompiled)
2014-06-26 11:51:02 +02:00
PKEuS e13de2681e SymbolDatabase: 'const' can't be the name of a variable - fix use after free #5882 2014-06-26 09:19:57 +02:00
PKEuS e80104327a AST: Fixed detection of operator new/delete - don't hang when C code is checked as C++ (#5910) 2014-06-26 09:19:57 +02:00
PKEuS b20f87faf2 Optimized Tokenizer::simplifyPlatformTypes() once more: Another 3% improvement on Windows.
-> All Token::Match strings are uppercase, so check Token::isUpperCaseName() to avoid comparisons with very slow long Token::Match strings (idea from amai)
Removed duplicate Token::Match call in symboldatabase.cpp
2014-06-25 20:42:59 +02:00
PKEuS 360fd4a565 Speedup Tokenizer::simplifyMathFunctions() and Tokenizer::simplifyPlatformTypes()
-> Speedup on entire checking time (TortoiseSVN code) by 3% (MSVC12, x64, not matchcompiled). Probably only measurable when checking code with Windows platform.
2014-06-25 17:00:59 +02:00
Daniel Marjamäki 5af96c2dd8 Fixed #5947 (valueFlowForward: forward conditions not handled properly) 2014-06-25 16:00:56 +02:00
Daniel Marjamäki c77786a745 valueFlowAfterCondition: wrong analysis for floats 2014-06-25 06:17:44 +02:00
PKEuS ac4e727da7 Removed redundant code (replaced by libaries, should fix #5934). 2014-06-24 21:57:19 +02:00
PKEuS 3a89e5d65f Fixed cppcheck warnings introduced by previous commit 2014-06-24 19:51:47 +02:00
Daniel Marjamäki 54aede9086 Fixed #5941 (ValueFlow: Wrong value in subfunction under ?) 2014-06-24 19:30:46 +02:00
PKEuS 1b5d127373 Cache results for TokenList::isC() and TokenList::isCPP() to avoid redundant calls to Path::isCPP()/isC(), which perform slow string operations (conversion to lowercase, substring, comparisons)
-> Speedup of 2% on self-checking cppcheck-core (MSVC12, x64, not matchcompiled)
2014-06-24 17:42:39 +02:00
PKEuS 2d54bace1b Improved performance of CheckBufferOverrun::checkScope() (#5944):
-> Speedup by 40% (MSVC12, x64, not matchcompiled) on the file attached to the ticket
2014-06-23 19:06:59 +02:00
Daniel Marjamäki 1ae6531c4c Fixed #5923 (false positive: (error) Resource leak: fp (static file pointer)) 2014-06-23 16:05:28 +02:00
Daniel Marjamäki ae81b09b58 Refactoring: Move isScopeNoReturn implementation to library and reuse it both in ValueFlow and Tokenizer 2014-06-22 19:13:15 +02:00
Daniel Marjamäki f78cbda2db Refactoring: Removed CheckNullPointer::nullPointerByCheckAndDeRef and implemented needed analysis in ValueFlow instead. 2014-06-22 10:02:14 +02:00
Daniel Marjamäki ef81bc363a ValueFlow: analysis in condition. 2014-06-19 17:29:41 +02:00
Daniel Marjamäki dec251ac44 ValueFlow: Refactoring. Use utility function isVariableChanged. 2014-06-19 05:41:19 +02:00
Daniel Marjamäki 84581817f6 ValueFlow: Improved valueFlowForward. RHS in assignment. 2014-06-18 21:07:01 +02:00
PKEuS 188f9b4509 Fixed #error handling:
- Reporting them once is enough
- Don't report them if --force is used - since we silently drop these configurations when we check multiple configurations. Without the fix, -f combined with -D resulted in #error being shown erroneously.
- No redundant preprocessor instance to report them
2014-06-18 17:57:31 +02:00
PKEuS dcc646735d Made static local variable non-static (thread-safety, #5934) 2014-06-18 17:57:31 +02:00
Daniel Marjamäki 13761927ff ValueFlow: better analysis in valueFlowAfterCondition of 'if|while ( %var% )' etc 2014-06-18 06:57:48 +02:00
Daniel Marjamäki 9999ce9468 ValueFlow: extend aftercondition analysis below conditional code 2014-06-18 05:51:23 +02:00
Alexander Mai 2e3f26ba58 Patch from Dmitry-Me: reorder checks so that cheaper ones go first, reuse previously computed values, return early on edge condition 2014-06-16 21:36:31 +02:00
amai2012 c61d2b9f41 #5926 Dangerous iterator comparison using operator< on 'std::deque'.
std::deque features a random access iterator, so warning stlBoundaries
is a false positive
2014-06-16 20:50:47 +02:00
Daniel Marjamäki 847bb44bdd ValueFlow: Improved analysis after condition when ! operator is used 2014-06-16 16:39:41 +02:00
orbitcowboy be49185471 Fixed #5925: The first include in path.cpp is not path.h and astyle run. 2014-06-16 15:11:44 +02:00
orbitcowboy 76f3f67bcf Fixed fsanitize=undefined: left shift of negative value -10000 in lib/templatesimplifier.cpp. 2014-06-16 10:58:41 +02:00
Daniel Marjamäki 0e971f2979 Merge pull request #341 from simartin/ticket_5268
Ticket #5268: Properly detect function heads when in Tokenizer::simplifyEnum
2014-06-15 18:14:20 +02:00
Daniel Marjamäki a27ca11b85 Fixed #5916 (ValueFlow: Add a valueFlowAfterCondition() function) 2014-06-15 16:47:01 +02:00
Simon Martin efb12f0409 Ticket #5268: Properly detect function heads when in Tokenizer::simplifyEnum. 2014-06-15 15:52:58 +02:00
Robert Reif 1f09cb0c30 Fixed #5807 (non virtual dtor in virtual class) 2014-06-14 12:55:20 +02:00
Daniel Marjamäki 17f1841fba Merge pull request #339 from simartin/ticket_5868
Ticket #5868: Ignore variables called like a typedef when substituting typedefs
2014-06-14 12:38:02 +02:00
PKEuS 8b9daadd25 Replaced static variable isCPP in Token (was not threadsafe):
- Encapsulate parameters passed through AST compiler functions in a struct
-> Reduces maintenance overhead when changing them
-> Contains parameter indicating if the file is C or C++
- Added eKeyword Token type (at the moment, only true for C++ keyword "delete", but should be set for other keywords as well)
2014-06-14 10:28:12 +02:00
Simon Martin d588ed49b3 Ticket #5868: Ignore variables called like a typedef when substituing typedefs. 2014-06-14 00:50:14 +02:00
Daniel Marjamäki ad879320e5 ValueFlow: Fixed 'function call => calculation' value flow 2014-06-13 16:34:57 +02:00
orbitcowboy 5c2ed8450e Revert my previous fix 28763fa020 and suppress gcc false positive warnings. 2014-06-13 15:46:43 +02:00
orbitcowboy 28763fa020 Libary: Fixed gcc warning -Wmissing-field-initializers 2014-06-13 13:17:08 +02:00
Alexander Mai 0f7071a000 Fix clang and coverity warnings 2014-06-12 20:03:11 +02:00
Daniel Marjamäki 86ef5f8ae7 CheckIO: Handle library types 2014-06-12 07:01:44 +02:00
Daniel Marjamäki a4a6f3e1be Tokenizer: Removed Tokenizer::simplifyConditionOperator(). Using the AST and ValueFlow, it should be much easier to parse ?: than before. 2014-06-10 19:30:13 +02:00
Dmitry-Me 6e1568a6db Simplify code - bail out early, vreak loops early, reorder checks and declarations. 2014-06-09 13:35:30 +04:00
Daniel Marjamäki 42c3b3c89d Library: Change range operator in validation pattern to ':' 2014-06-08 18:12:11 +02:00
Simon Martin dc12a73987 Ticket #5907: Properly handle extern declarations in Tokenizer::simplifyVarDecl. 2014-06-08 14:59:58 +02:00
Daniel Marjamäki a41f6077e1 Tokenizer: Use 'podtype' info from library. Partial fix for #5623 2014-06-08 13:28:15 +02:00
Daniel Marjamäki 9e81fa04b2 Library: Added 'podtype' element. Partial fix for #5623 2014-06-08 12:09:00 +02:00
Alexander Mai e1513090e2 #5909 crash: clang: test/Preprocessor/ifdef-recover.c. Avoid segfault in Preprocessor::getcfgs() on invalid code. 2014-06-08 10:02:16 +02:00
Daniel Marjamäki 56e3e150c2 Merge pull request #334 from Dmitry-Me/ReorderChecksAndCleanupDeclarations
Cleanup code - reorder checks and make variable declaration scope narrower
2014-06-07 18:35:03 +02:00
Daniel Marjamäki 4c7b0806aa Library: handle validation expression '-1000-0'. Ticket #5847 2014-06-07 16:28:29 +02:00
Alexander Mai 4d5b463613 Fix clang compiler warning in mathlib.cpp and repair test case for #5895 2014-06-07 13:16:02 +02:00
Dmitry-Me 7692a306cd Cleanup code - reorder checks and make variable declaration scope narrower. 2014-06-06 18:58:20 +04:00
orbitcowboy 16352ca674 Reverted fix 6d0f490138, but keeping the testcase in the testsuite. 2014-06-06 14:44:22 +02:00
PKEuS f1a57cbfcc Refactorization in timer.cpp (#5902), Removed misleading comment in symboldatabase 2014-06-05 17:39:14 +02:00
orbitcowboy 6d0f490138 #5895 - Fixed potential signed integer overflow in Checkother:getvalue. Added regression test. 2014-06-05 16:41:10 +02:00
PKEuS f6c9320aee Fixed incorrect usage of startOfExecutableScope() (Checking time reduced by ~60% (nonlinear) for #5876) 2014-06-05 10:45:26 +02:00
PKEuS 0a0f1072c0 Attempt to fix travis and some more VS warnings 2014-06-04 19:18:27 +02:00
PKEuS 51f381edf3 Fixed VS warnings 2014-06-04 18:55:29 +02:00
PKEuS 2455b76abd Fixed lots of bugs in the AST:
- Support new and delete
- Properly handle "..."
- References and rValue references as function parameters
- Destructor definitions
2014-06-04 18:47:56 +02:00
PKEuS 39b64ea5fb Simplify rValue reference arguments without name (&& -> & &) 2014-06-04 18:45:56 +02:00
PKEuS 8db0790407 Tokenizer::tokenize() can now be called without AST being created 2014-06-04 18:45:28 +02:00
PKEuS d93d7401c6 Moved getSourceFilePath(), isC() and isCPP() from Tokenizer to TokenList
Conflicts:
	lib/tokenize.cpp
2014-06-04 18:36:25 +02:00
PKEuS 6aa88248ac Fixed timer name 2014-06-04 18:34:45 +02:00
orbitcowboy 8fe163285f MathLib: Added missing testcase for incdec. 2014-06-04 08:41:30 +02:00
orbitcowboy 60e80b6fb1 Fixed #5885 - fsanitize=undefined: signed integer overflow: 2147483647 + 1 cannot be represented in type 'int' in lib/tokenize.cpp. 2014-05-29 18:25:01 +02:00
orbitcowboy e9144d1a78 Fixed #5890 - crash: wesnoth desktop_util.cpp / unicode.hpp. 2014-05-29 02:58:18 +02:00
Robert Reif e5ae575ace Fixed #5867 (invalid debug warnung: Scope::checkVariable : varid0) 2014-06-02 06:18:32 +02:00
Alexander Mai ad1662a201 #5875 fix 'lib/checksizeof.cpp:142:26: runtime error: member call on null pointer of type 'Token'. Improve error handling in CheckSizeof::checkSizeofForPointerSize() 2014-06-01 22:18:17 +02:00
Daniel Marjamäki 42140b6488 Preprocessor: set error flag when unhandled characters are found so checking can bailout 2014-06-01 11:24:10 +02:00
Martin Ettl af369b4925 astyle run [ci skip] 2014-05-16 23:01:21 +02:00
amai2012 6f31ce334d #5875 Fix 'lib/mathlib.cpp:559:43: runtime error: division by zero'. Several fixes to MathLib::divide(): avoid division by zero, handle various representation of 0 value, use 'nan.' instead of '-nan.0' 2014-05-31 18:25:23 +02:00
Daniel Marjamäki 46bf23aa6d TokenList: added assertion that makes sure the Preprocessor doesn't let through extended ascii wrongly. 2014-05-31 18:02:19 +02:00
amai 98ea1397b3 #5875 clang ubsan errors: lib/checkassignif.cpp:58:34: runtime error: member call on null pointer of type 'Token' 2014-05-31 15:12:04 +02:00
Daniel Marjamäki 66ad3c97b9 Fixed #5857 (strPlusChar: Crash on invalid code 'int+;') 2014-05-31 10:34:00 +02:00
PKEuS 86dede14c0 Merge pull request #327 from simartin/only_fill_if_needed
Only fill total_size in CheckBufferOverrun::checkFunctionParameter when useful
2014-05-30 20:56:33 +02:00
Daniel Marjamäki 70b4c945de Fixed #5874 (False positive: 'opposite conditions in nested if' with arrays) 2014-05-30 19:19:24 +02:00
Simon Martin f7356dd8c7 Only fill total_size in CheckBufferOverrun::checkFunctionParameter when it's useful. 2014-05-29 23:51:13 +02:00
Simon Martin 139f87af18 Ticket #5615: Avoid calling the same function n times when once is enough. 2014-05-29 19:58:09 +02:00
Daniel Marjamäki bc2ba1706b cleanup redundant valueflow check. if there are no values the getValue will return NULL. 2014-05-28 21:03:16 +02:00
PKEuS c23afbd04a Merge pull request #325 from simartin/checkio_types_match_factorize
Factorize type name equality checks in CheckIO
2014-05-27 21:46:07 +02:00
Simon Martin d2223ce419 Factorize type name equality checks in CheckIO. 2014-05-27 19:20:19 +02:00
Simon Martin 966491d40b Added a test for out-of-bounds character array access. 2014-05-27 16:21:13 +02:00
Daniel Marjamäki ed78d3e148 Library: Better error reporting when loading fails 2014-05-26 17:00:41 +02:00
PKEuS 1cb14f687f Merge pull request #322 from simartin/del_useless_fwd_decl
Remove unnecessary declaration (one line before the actual definition...)
2014-05-25 23:54:20 +02:00
PKEuS 8f083af1e4 Attempt to fix travis build 2014-05-25 22:11:56 +02:00
Simon Martin c027c526a9 Remove unnecessary declaration (one line before the actual definition... 2014-05-25 22:04:51 +02:00
PKEuS a407b55945 Added support for lambdas to AST
Fixed bug that return statement left an operand on the stack
2014-05-25 21:55:39 +02:00
PKEuS 04f3caf8e8 Fixed debug message #5159 2014-05-25 14:16:03 +02:00
PKEuS 55c87248ba Fixed crash on complex cast. 2014-05-24 20:21:08 +02:00
PKEuS d42275c5f1 Fixed TODO in checkAssignBoolToFloat 2014-05-24 20:06:45 +02:00
Alexander Mai e6a394d514 CheckBool::checkAssignBoolToFloat() - don't crash on unknown variables 2014-05-24 19:15:43 +02:00
PKEuS 38aaa46804 Stabilized AST:
- Fixed broken simplification causing crashs when cast was followed by unary minus (real world examples from arch/parisc/math-emu/ (linux-kernel))
- Stabilized determination of unary and binary operators
2014-05-24 19:05:04 +02:00
Alexander Mai 2c8087e34f #4375 New check: add style warning about 'double d=false;' Add a new check to CheckBool. Also implement Variable::isFloatingType() 2014-05-24 18:35:49 +02:00
PKEuS effa38c322 Fixed #5863 (False positive: array index is used before limits check) 2014-05-24 17:50:01 +02:00
Daniel Marjamäki bb8973aac7 Updated Makefile 2014-05-24 12:54:16 +02:00
PKEuS a04036337d Fixed #5860: Don't show returnTempReference for calculations on unknown types 2014-05-24 12:50:04 +02:00
PKEuS adf38fcfd0 Further include cleanup 2014-05-24 12:50:04 +02:00
PKEuS 1fc1ff1993 Moved implementation of two functions to new file check.cpp -> Don't include <iostream> everywhere 2014-05-24 12:50:04 +02:00
PKEuS 8f79dc3ff8 Cleaned up includes and forward declarations in checkers:
- Removed definitely unnecessary forward declarations (e.g. "class Token"; token.h is already included by check.h, so a definition is unnecessary)
 - Removed unused includes
2014-05-24 12:50:03 +02:00
amai2012 00e28de3b7 Merge pull request #315 from simartin/ticket_5823
Ticket #5823: Properly count template parameters in TemplateSimplifier::useDefaultArgumentValues
2014-05-24 11:47:14 +02:00
PKEuS b78131cfcf Improved cast detection in AST:
-> Make use of it in checkother.cpp

Use tokenizer simplification instead of reimplementation for test suite
2014-05-24 11:29:32 +02:00
PKEuS b0b0562247 Removed obsolete piece of code from checkbufferoverrun.cpp 2014-05-24 11:29:32 +02:00
Simon Martin 2b809800b6 Ticket #5823: Properly count template parameters in TemplateSimplifier::useDefaultArgumentValues and handle casts in template parameters' default values. 2014-05-23 23:38:40 +02:00
Simon Martin fcff8d39d9 Ticket #5816: Properly handle template'd template parameters in enum initializers. 2014-05-23 21:25:42 +02:00
orbitcowboy d299cae5ef Fixed typo in comment, no functional changes [ci-skip] 2014-05-23 22:31:01 +02:00
orbitcowboy 6183f21070 Fixed CID 1037088 Dereference after null check in Tokenizer::simplifyLabelsCaseDefault. 2014-05-23 21:38:56 +02:00
orbitcowboy 7920afdc60 Fixed CID 1037101 Dereference after null check in ExecutionPath::checkScope. 2014-05-23 18:27:34 +02:00
orbitcowboy 85496cfadc Fixed CID 1192595: Dereference null return value in checkother. 2014-05-23 18:11:44 +02:00
PKEuS bc0682d1e9 Enhancements related to duplicate expression checking:
- Fixed astIsFloat() for complex expressions
- Enhanced support for commutative operators (#5260)
2014-05-22 21:46:48 +02:00
PKEuS f7a41057ad Use AST in CheckIO::checkCoutCerrMisusage() - fixes #3254. 2014-05-22 20:25:54 +02:00
PKEuS 9dd4ac68c0 Refactorization in CheckNullPointer:
- Use AST to detect dereferences
- Added more unit tests
- Removed handling of unknown constructs in CheckNullPointer::isPointerDeRef()

Added link to verbose message cstyleCast.
2014-05-22 19:48:00 +02:00
PKEuS f1c303d399 Fixed recently introduced verbose message for cstyleCast
[ci skip]
2014-05-22 15:46:28 +02:00
PKEuS 6635abbe55 Improved check: Complain about returning reference to literals or reference to calculation result (#4317) 2014-05-22 11:39:11 +02:00
orbitcowboy d19f676547 Fixed travis build warning (Check Internal). 2014-05-22 18:00:06 +02:00
orbitcowboy ee5cd91d51 MathLib: removed duplicated #include 2014-05-22 17:53:13 +02:00
orbitcowboy 031020ae4a #Fixed 5485: Wrong simplification of numbers like 1e+007 to 1e+007.0 2014-05-22 17:40:15 +02:00
PKEuS 3275881056 Improved checkBufferOverrun::classInfo (#4667) 2014-05-22 09:13:29 +02:00
PKEuS 35528ca708 Added verbose message for "C-style pointer casting" (#4140) 2014-05-22 08:57:45 +02:00
Alexander Mai cccddc20bf #5843 MathLib::toLongNumber()/MathLib::toULongNumber() now use min/max values for bigint/biguint type in case the number to converted cannot be converted properly 2014-05-21 21:36:17 +02:00
PKEuS 4cad064c3c Fixed false positive on C code introduced by last commit 2014-05-21 20:36:19 +02:00
PKEuS d19eabde42 New Check: Compare pointer with '\0' (#4070) 2014-05-21 19:12:07 +02:00
PKEuS cdfed32500 Merged checkSelfAssignment() into checkDuplicateExpression():
- Fixed false negatives on self assignments of more complex expressions like "a.b"
- New false negative on self assignment in initialization
- Support this->... pattern in isSameExpression()
- Fixed #5819: Check type of operands
2014-05-21 18:19:42 +02:00
PKEuS 7b1eca700b Fixed bug in setVarId: VarIds for member functions defined inline in class were not properly set 2014-05-21 17:30:58 +02:00
PKEuS d500f50670 Fixed problem in VS solution if spaces are in the solution path 2014-05-21 15:42:05 +02:00
PKEuS 48c3d02fc3 Fixed false positives and false negatives in 'oppositeInnerCondition' (among others: #5808) 2014-05-21 14:38:41 +02:00
PKEuS 01a0154daa Fixed false positive #5848 2014-05-21 13:45:36 +02:00
orbitcowboy e3009bdd0b Tokenizer:simplifyKeyword(): Improved matching when the static keyword is removed. 2014-05-13 16:47:55 +02:00
orbitcowboy 90c1016c74 Fixed #5842: remove C99 static keyword between [] in tokenizer. 2014-05-13 16:28:28 +02:00
Alexander Mai be9a566d48 Refactoring/small corrections to fix warnings from clang -fsanitize=undefined 'member call on null pointer' 2014-05-20 21:55:08 +02:00
orbitcowboy ac8d283afb Fixed CID 1214638: Dereference before null check (REVERSE_INULL). 2014-05-12 17:18:51 +02:00
Robert Reif e993e2927c Fixed #5831 (FP in 1.65: call of pure virtual function 'throw' in destructor) 2014-05-20 06:10:34 +02:00
PKEuS d3d3803ae4 Merge pull request #312 from matthiaskrgr/travis
travis: compile one pair of jobs with -DCHECK_INTERNAL and run --enable=internal,...
2014-05-19 22:36:45 +02:00
PKEuS d1c4777053 Fixed two bugs in AST compilation (#5830):
- Correctly parse operators .* and ->*
- Support empty branch in ternary expression (a?:c)
2014-05-19 21:54:59 +02:00
Matthias Krüger 879023b6b2 travis: compile one pair of jobs with -DCHECK_INTERNAL and run --enable=internal,...
suppress warnings in testtoken.cpp
fix warnings in valueflow
2014-05-19 21:44:00 +02:00
PKEuS 5c566e838c Fixed false positive "multiplySizeof" in TortoiseSVN 2014-05-19 20:57:13 +02:00
PKEuS 8cb1f09fc2 Silenced travis errors (avoid false positive) 2014-05-19 20:56:05 +02:00
PKEuS 09e03fa6ef Fixed some complaints of PVS Studio 2014-05-19 14:37:54 +02:00
Philipp Kloke ed7d0b321b Bugfixes for AST and AST testing:
- Validate AST in test suite: Check for operand1 being set if operand2 is non-zero
- Fixed buggy unit tests in AST
- Fixed detection unary operator* after return statement (MPC-HC false positive)
2014-05-19 11:17:37 +02:00
Mark de Wever d6db261213 Fixed #5827 (Invalid token match patterns) 2014-05-19 06:31:38 +02:00
PKEuS 5fbd58d98d Fixed messages of CheckInternal, fixed a false positive. 2014-05-18 20:39:52 +02:00
PKEuS 9cb544241d Internal checking is now enabled by the macro CHECK_INTERNAL 2014-05-18 19:50:06 +02:00
PKEuS e713ad45cb Refactorizations:
- Simplified pattern ".|->" to "."
- Use nextArgument() where appropriate
2014-05-18 17:07:21 +02:00
PKEuS b162560755 Refactorizations:
- Removed some duplicate nullpointer checks
- Simplified tok->link() on '<' usage.
2014-05-18 17:07:21 +02:00
PKEuS 780719665f Fixed crash when checking tinyxml introduced by previous commit 2014-05-18 13:40:49 +02:00
PKEuS 20753f4697 Refactorization: Use AST in CheckOther::checkRedundantCopy(), CheckOther::clarifyStatement() and CheckPostfixOperator::postfixOperator(). 2014-05-18 13:00:58 +02:00
PKEuS 683d0b7e82 Partially rewritten AST compilation:
- More straightforward approach for handling right-to-left associativity
 - More straightforward approach to handling unary operators
 - Improved handling of brackets

This fixes #5784, #5795, #5797, #5799, #5810 and a bunch of other problems
2014-05-18 12:10:39 +02:00
Alexander Mai 91e7116de1 Fix regression from first attempt fixing #5811 (9dce9bddcb) 2014-05-17 19:14:29 +02:00
Alexander Mai 9dce9bddcb #5811 false postive: (error) Null pointer dereference 2014-05-17 18:18:20 +02:00
Simon Martin 69d294c6c4 Ticket #5816: Skip typename in template arguments for enum initializers. 2014-05-17 08:50:12 +02:00
Simon Martin 92cc17110d Ticket #5814: Handle A::B as template parameter for enum initializers. 2014-05-15 21:52:57 +02:00
Simon Martin e61e1cb13d Ticket #5786: Properly handle cv-qualified member pointers as template parameter. 2014-05-14 22:27:31 +02:00
Daniel Marjamäki 7ecdb30308 Fixed #5771 (false positive: (warning) When using 'char' variables in bit operations, sign extension can generate unexpected results.) 2014-05-13 15:53:31 +02:00
Alexander Mai 146bf11aa7 #5793 - False positive: Deallocation of an auto-variable (at reference notation) 2014-05-12 19:53:49 +02:00
PKEuS a3bb8bf39c AST: Parse ternary and assignment operators as right-to-left and on the same precedence level 2014-05-11 17:50:58 +02:00
PKEuS 70dfb55f21 Simplified some Token::Match patterns 2014-05-11 17:50:58 +02:00
Alexander Mai 6fe2f8b01b #5782 Endless recursion in CheckClass::checkReturnPtrThis(). Break endless recursion by remembering the callstack (missing header file) 2014-05-11 12:27:43 +02:00
Alexander Mai b139ae3209 #5782 Endless recursion in CheckClass::checkReturnPtrThis(). Break endless recursion by remembering the callstack 2014-05-11 12:26:24 +02:00
Daniel Marjamäki 0dfbbd0f80 Fixed #5479 (Tokenizer: don't remove parentheses in code 'a<b<c>>(2)') 2014-05-11 08:22:28 +02:00
Daniel Marjamäki 827cfac91e Refactoring of CheckOther::checkModuloAlwaysTrueFalse using AST 2014-05-10 20:49:29 +02:00
Daniel Marjamäki 8cc1f664d8 Uninitialized member variable: Fixed false negative when struct is read 2014-05-10 20:20:55 +02:00
Daniel Marjamäki 4c344adcf1 Uninitialized struct member: fixed false negative when struct assignment is seen 2014-05-10 19:56:44 +02:00
PKEuS 04fbbdb5e8 Refactorized CheckBufferOverrun::arrayIndexThenCheck() and fixed false negative 2014-05-10 13:00:44 +02:00
PKEuS 59418e605f Increased version number to 1.65.99/1.66 dev. 2014-05-10 12:57:33 +02:00
Daniel Marjamäki c0131eea9e 1.65: Set version 2014-05-10 12:02:06 +02:00
Daniel Marjamäki f31ec37d52 Fixed 2 Cppcheck warnings. Function can be static|const 2014-05-10 11:49:14 +02:00
Daniel Marjamäki 4e2c0617d3 Merge pull request #303 from simartin/ticket_5297
Ticket #5297: simplifyCalculations should pass once more on simplified tokens
2014-05-10 10:18:29 +02:00
Simon Martin 1e4902cb65 Ticket #5297: simplifyCalculations should pass once more on tokens being simplified. 2014-05-10 09:37:56 +02:00
Daniel Marjamäki 2905593cf6 Merge pull request #302 from simartin/ticket_5774
Ticket #5774: Properly handle "typename..." in template parameter list.
2014-05-10 09:32:06 +02:00
Simon Martin 46d8d81176 Ticket #5774: Properly handle "typename..." in template parameter list. 2014-05-09 22:20:22 +02:00
PKEuS edd84c0906 Fixed #5773: Don't prepend "std::" to function definitions 2014-05-09 21:58:28 +02:00
PKEuS c0fc47643f Fixed false positive #5772: Use AST to check if modulo operation is preceded by an arithmetical operation. 2014-05-09 21:58:28 +02:00
Daniel Marjamäki 1541e27e4a Fixed #5533 (False positive: 'Assignment of function parameter has no effect outside the function.') 2014-05-09 18:43:29 +02:00
Daniel Marjamäki cb43bee10d Same expression: don't warn for same expressions when there is assignment 2014-05-09 06:16:27 +02:00
Simon Martin 512e22d1ba Ticket #5315: Memory leak analysis confused by ((variable).attribute) notation. 2014-05-08 20:58:24 +02:00
Daniel Marjamäki 25f40b8b97 Merge pull request #298 from simartin/clang_s-getFlag_warn
Silence clang -Wsign-conversion warning with Token::setFlag.
2014-05-08 15:54:25 +02:00
Daniel Marjamäki 331d7e2e42 Merge pull request #297 from simartin/ticket_5605_5759
Fix ticket #5605 (take 3)
2014-05-08 15:51:42 +02:00
Simon Martin 53d5df8cef Silence clang -Wsign-conversion warning with Token::setFlag. 2014-05-08 14:16:43 +02:00
Simon Martin 2a6acdf357 Ticket #5605: Don't consider '>' as a default template parameter value. Don't choke on template parameters with erroneous default values.
Ticket #5759: Properly handle pointers to class members in template parameter lists.
Ticket #5762: Handle template specialization tokens.
2014-05-08 13:54:56 +02:00
Daniel Marjamäki 9fc8bdcbac Fixed #5770 (AST: better handling of 'a.b[c.d]==0') 2014-05-08 06:48:53 +02:00
Daniel Marjamäki 4710c5c4f1 Merge pull request #296 from mpaladin/master
Fix redundantConditionError check description
2014-05-07 16:01:26 +02:00
Robert Reif 0bdecfd9cb Fixed #5767 (move bool Variable flag into flag variable) 2014-05-07 15:59:21 +02:00
Massimo Paladin 5e996bc63b Fix redundantConditionError check description 2014-05-07 14:54:50 +02:00
Daniel Marjamäki 5ad3ac2653 Fixed #5695 (FP: Mismatching assignment and comparison) 2014-05-06 19:35:47 +02:00
Daniel Marjamäki b354de6b23 Fixed #5750 (FP:Opposite conditions in nested 'if' blocks lead to a dead code block) 2014-05-06 16:15:12 +02:00
Robert Reif 2d2847ddbd Fixed #5764 (Store Token flags in a single variable) 2014-05-06 06:35:48 +02:00
Daniel Marjamäki 6e25280c90 Reverted fix for #5605 since it cause this crash: #5759 2014-05-05 21:11:47 +02:00
Daniel Marjamäki d17f926422 Merge pull request #294 from simartin/typo_520aaf71
Reinstate error message.
2014-05-04 20:49:01 +02:00
Robert Reif ae96491d6c Fixed #5756 (declspec(nothrow) not supported) 2014-05-04 20:47:20 +02:00
Daniel Marjamäki 7d583e639c AST: Fixed handling of '(((typeof(x))*)0)' 2014-05-04 18:36:04 +02:00
Simon Martin 8519a954a0 Reinstate error message. 2014-05-04 17:06:38 +02:00
Daniel Marjamäki 42b85088c5 Double free: Improved handling of noreturn functions. Partial revert of previous fix. 2014-05-04 13:11:21 +02:00
Daniel Marjamäki 636a15ac55 Doublefree: Fixed FP when exit() is called 2014-05-04 12:02:55 +02:00
Daniel Marjamäki 5edb6092a1 Merge pull request #293 from simartin/ticket_5709
Ticket #5709: Comma operator not properly tokenized.
2014-05-04 11:46:04 +02:00
Robert Reif 888fd44039 Fixed #5609 (Wrong warning: %zu requires 'size_t' - but type is 'std::size_t') 2014-05-04 07:55:23 +02:00
Simon Martin b03f36cd71 Ticket #5709: Comma operator not properly tokenized. 2014-05-03 21:35:04 +02:00
Daniel Marjamäki 1903d95015 Fixed #5661 (--suppress=missingInclude has no effect) 2014-05-03 19:31:15 +02:00
Daniel Marjamäki ed1d63ffc0 Fixed #5636 (FP: matrix out of bounds) 2014-05-03 18:12:06 +02:00
Daniel Marjamäki 2f3f42d7f1 astyle formatting
[ci skip]
2014-05-03 18:10:49 +02:00
Simon Martin ffe6a0be2b Ticket #5605: Don't consider '>' as a default template parameter value. Don't choke on template parameters with erroneous default values. 2014-05-03 16:26:14 +02:00
Daniel Marjamäki 5a23b739da ValueFlow: Improved bailout when variable is reassigned 2014-05-03 12:49:07 +02:00
Daniel Marjamäki 4b7aaba159 AST: assignment operators are executed from right to left 2014-05-03 12:08:42 +02:00
Alexander Mai d3e8bbdc51 #5618 False positive: (performance) Use const reference for 'temp' to avoid unnecessary data copying. - redundantCopyLocalConst/CheckOther::checkRedundantCopy() is prone to false positives. As a quick fix that check becomes inconclusive. 2014-05-02 20:09:38 +02:00
Robert Reif 7d762ca9f7 Made 'unhandled exception' inconclusive and style message. #5751 2014-05-02 06:57:23 +02:00
Daniel Marjamäki fadc27092e Fixed #5752 (FP (error) Possible null pointer dereference) 2014-05-01 15:15:26 +02:00
Robert Reif f6aaf6cc0d Unhandled exceptions: Dont warn when there are unhandled exceptions in main() function. #5751 2014-05-01 13:41:01 +02:00
Alexander Mai d2ebd718a9 #5691 False positive: autovarInvalidDeallocation - function name 'delete' in C code 2014-05-01 07:32:37 +02:00
PKEuS ab4f58a146 Partially reverted 1317063b21. enum class is not part of the common subset of supported C++11 functions of the compilers supported by cppcheck. (Fixes #5745) 2014-04-30 21:06:01 +02:00
PKEuS 71264fb672 Fixed assertion failure in VS debug mode 2014-04-30 21:06:01 +02:00
Alexander Mai a25cb53c19 #5751 - Warning unhandledExceptionSpecification is issued even if warnings are not enabled 2014-04-30 19:33:17 +02:00
orbitcowboy e48550d8d7 Merge branch 'master' of https://github.com/danmar/cppcheck 2014-04-23 01:24:01 +02:00
Alexander Mai 4815e3c4c5 Fix some segmentation faults seen while reducing #5743 (sorry, no test cases supplied) 2014-04-29 20:16:50 +02:00
Daniel Marjamäki b5e023a46c Fixed #5472 (sizeof not handled as operator with respect to null pointer dereference) 2014-04-29 20:09:11 +02:00
Daniel Marjamäki fc24d491cc Fixed #5560 (false positive: C-style pointer casting) 2014-04-29 06:21:30 +02:00
Daniel Marjamäki 648479d909 AST: Fixed tree for 'a.b[5]' 2014-04-29 06:09:26 +02:00
Daniel Marjamäki 36895674ce Refactoring. Simplified condition using Token::Match. 2014-04-29 04:45:45 +02:00
Robert Reif 4de9e29adc Fixed #5706 (operators with noexcept broken) 2014-04-29 04:37:13 +02:00
Daniel Marjamäki 1233d8e47f Fixed #5657 (false positive: (error) Possible null pointer dereference: p) 2014-04-28 15:54:54 +02:00
Daniel Marjamäki 3300d39854 Fixed #5721 (valueFlowBeforeCondition: stop when goto label is seen) 2014-04-28 06:21:48 +02:00
Alexander Mai ead3f28e06 Small enhancements for doxygen 2014-04-27 21:42:10 +02:00
Daniel Marjamäki 9c74d914d7 Fixed #5667 (Tokenizer: simplify 'void (X::*f)()' to 'void *f') 2014-04-27 19:49:21 +02:00
Daniel Marjamäki d279f3fb41 Fixed #5736 (AST: proper handling of 'a=(b).c;') 2014-04-27 18:03:50 +02:00
Daniel Marjamäki 9f2e37da37 AST: fixed 'a.b++' and '*c[5]--' 2014-04-27 16:02:24 +02:00
PKEuS ecec4b0b46 Fixed false positive #5187: arithOperationsOnVoidPointerError when referencing void* 2014-04-27 12:18:33 +02:00
PKEuS 866ab1ce14 Fixed false positive #5689: Care about usage of return values of memory functions 2014-04-27 12:18:33 +02:00
PKEuS ea23a0467b Fixed false positive #5732: autovarInvalidDeallocation on pointer to array 2014-04-27 12:18:33 +02:00
Daniel Marjamäki bde6698bcd Fixed #5731 (False positive with opposite conditions) 2014-04-27 10:21:20 +02:00
Daniel Marjamäki 7317785e32 astyle formatting
[ci skip]
2014-04-27 10:20:21 +02:00
Alexander Mai 17ec0af6a7 #5734 A FP literalWithCharPtrCompare was issued upon comparison with a char referenced within a string literal 2014-04-27 09:40:13 +02:00
Alexander Mai 520aaf71b8 Fix some doxygen comments and add shortcut for tok==NULL to Token::simpleMatch() 2014-04-27 09:32:02 +02:00
Alexander Mai 1317063b21 Fix some more (clang++) compiler warnings 2014-04-26 20:44:21 +02:00
Robert Reif ca9386859b Tokenizer: replace ') const| {' pattern to detect function start 2014-04-26 18:31:56 +02:00
Robert Reif cd6332d960 Tokenizer: replace ') const| {' pattern to detect function start 2014-04-26 18:30:09 +02:00
Alexander Mai b5c580a59e Fix some clang warnings - most related to semantic doxygen errors 2014-04-26 16:17:26 +02:00
Alexander Mai b74e997435 Fix false positive nullPointer messages within sqlite3 after goto by adding a suitable bailout inside valueFlowAfterAssign() 2014-04-26 14:41:28 +02:00
Daniel Marjamäki 11856b51aa AST: Fixed handling of 'a=b(c**)+1' 2014-04-26 13:32:08 +02:00
Daniel Marjamäki c34616a6ba AST: Fixed handling of 'a = b.c[++(d.e)];' 2014-04-26 13:16:34 +02:00
Frank Zingsheim ffa55bbaa0 Fixed #5725 (FP: multicondition Expression is always false because 'else if' in pngwrite.cxx (LibreOffice)) 2014-04-26 11:59:38 +02:00
Daniel Marjamäki 853d56030b Fixed #5559 (false positive: (error) Possible null pointer dereference: pSTRunner) 2014-04-26 11:27:58 +02:00
Reijo Tomperi ae23ab64b7 Change encoding to UTF-8 for two header files that were not using UTF-8. 2014-04-26 00:41:33 +03:00
Daniel Marjamäki 8602d13dc9 Fixed #5722 (AST: wrong handling of 'x = ((a[i])->getx)();' - the 'x' is an operand of the =) 2014-04-25 06:06:54 +02:00
Dmitry-Me a7c7b00407 Reuse variable value, return earlier. 2014-04-24 12:24:40 +04:00
Daniel Marjamäki 9406f3428a IncompleteStatement: Fixed false positive when '({..})' blocks are used 2014-04-24 06:32:29 +02:00
Alexander Mai 5c98e4d039 Merge branch 'master' of https://github.com/danmar/cppcheck 2014-04-23 20:50:48 +02:00
Alexander Mai 9412f9d216 #5717 Segmentation fault when providing multiple --include=/path/to/header arguments. 2014-04-23 20:50:16 +02:00
Daniel Marjamäki d144197d7e Fixed segfault 2014-04-23 19:49:16 +02:00
Daniel Marjamäki aea528c763 enum: don't simplify enum constant that is assigned 2014-04-23 17:10:17 +02:00
Daniel Marjamäki 272fcc18d8 Don't warn about redundant number statement in '({ do_something(); 0; })' 2014-04-23 16:23:19 +02:00
Dmitry-Me 9b74d43473 Rename local variable plus return a bit earlier on edge condition. 2014-04-23 11:18:09 +04:00
Frank Zingsheim 87354bf9d2 Fixed #5707 (false negative: unreachable code is not detected (code after return)) 2014-04-23 07:58:43 +02:00
Daniel Marjamäki 3c5cf299e3 Fixed #5708 (Improve oppositeInnerCondition) 2014-04-23 07:57:13 +02:00
orbitcowboy a6af8f5dcf #5748: Fixed FP (wrongmathcall) do not warn if an object calls a function foo.log(0). 2014-04-23 01:23:38 +02:00
Daniel Marjamäki fe80f858d1 ValueFlow: Improved analysis in the valueFlowAfterAssign 2014-04-22 16:10:20 +02:00
Alexander Mai 2c3807f089 #5703 - Segfault recursive loop - Patch by zingsheim 2014-04-21 22:13:02 +02:00
Alexander Mai 623e5db0b2 #5702 crash: clang: test/Parser/cxx0x-member-initializers.cpp (bailout withn an internal error) 2014-04-21 21:44:17 +02:00
Mark de Wever 6f3e3f5e2e Fixed #5701 (FP for std::unordered_map::operator[]; there is no const version) 2014-04-21 16:39:44 +02:00
Daniel Marjamäki 52e0e4453b Fixed #5646 (FP: pointer to array is not assigned a value.) 2014-04-21 16:14:49 +02:00
Daniel Marjamäki c98beafb6d Fixed #5675 (wrong AST generated for 'a>>=b') 2014-04-21 13:05:34 +02:00
Daniel Marjamäki a202956471 Uninitvar: Refactoring. Use AST instead of token matching to see if variable is used in RHS of assignment. 2014-04-21 12:01:02 +02:00