Commit Graph

6694 Commits

Author SHA1 Message Date
Daniel Marjamäki 5490fad8c7 Fixed #5840 (False positive (inconclusive): Possible nullpointer dereference - use before for-loop over nested list) 2014-12-14 14:10:42 +01:00
Thomas Jarosch 2f1ba89567 Improve readability of Library::load()
by caching often used node names.

Also constify existing name caches.
2014-12-12 22:18:22 +01:00
PKEuS ff5ede342b Fixed #6266: Support noexcept(false) 2014-12-09 23:53:50 +01:00
PKEuS 4d81945ac5 Fixed a couple of #6276 integer over/underflow issues 2014-12-09 23:28:22 +01:00
PKEuS 493ab541ab Fixed #6291 and #6293: Support :: in front of function name in checkUnusedFunctions
Simplified code in CheckUnusedFunctions
2014-12-09 22:04:51 +01:00
PKEuS e9bc3b7acf Fixed #6308: Properly associate Function with Scope for destructors in SymbolDatabase 2014-12-09 21:36:09 +01:00
Alexander Mai cef324435f Remove dead code in CheckMemoryLeakInFunction::call_func() (Coverity CID 1257017) 2014-12-09 20:34:30 +01:00
Dmitry-Me ff6604e289 Make expensive string manipulation depend on settings 2014-12-09 06:08:38 +01:00
Alexander Mai ec2c4aa2e3 #6301 Unused shared lock variable. Add exception for std::shared_lock() to CheckUnusedVar::checkFunctionVariableUsage_iterateScopes() 2014-12-07 15:32:09 +01:00
Daniel Marjamäki 64e6b5186d astyle formatting 2014-12-05 06:41:47 +01:00
Alexander Mai c2584aa635 #6303 crash in CheckBufferOverrun. Add check on loop variable in CheckBufferOverrun::checkScope(). 2014-12-04 20:49:58 +01:00
Matthias Krüger 7a6cd54059 Fix [lib/tokenize.cpp:6184]: (warning) Found simple pattern inside Token::Match() call: ") {" 2014-12-04 11:11:47 +01:00
Daniel Marjamäki e3892a95b5 Fixed #6290 (Tokenizer: Because 'and' is not simplified to '&&' there are false positives) 2014-12-03 16:32:05 +01:00
Dmitry-Me 7d259c073a Cache and reuse value 2014-12-02 16:19:52 +03:00
Daniel Marjamäki 0b9d80c95d Refactoring CheckUnusedFunctions so it uses new infrastructure for multifile analysis 2014-12-02 06:41:18 +01:00
Dmitry-Me cf3f8c2f38 Refactoring: Replace names with underscores with camelCase names 2014-12-01 16:22:56 +01:00
Dmitry-Me c0d2933ec7 Reorder checks to avoid redundant actions 2014-11-30 16:14:53 +03:00
Dmitry-Me 6482fefe3e Cache and reuse previously computed value 2014-11-30 13:00:27 +01:00
Dmitry-Me 5e37275b2a Code cleanup. Use 'isDelete' instead of token match 2014-11-28 17:50:23 +01:00
Dmitry-Me 828fdb6c47 Code cleanup. Omit redundant check. 2014-11-28 17:48:23 +01:00
Robert Reif 418c2e51a0 Fixed #3314 (cppcheck incorrectly reporting Syntax error.) 2014-11-28 17:44:36 +01:00
Robert Reif 0dad8b64e8 Fixed #6268 (False positive functionStatic (inconclusive) - nested namespaces) 2014-11-27 06:29:33 +01:00
Daniel Marjamäki 139414bd5c astyle formatting 2014-11-26 16:13:57 +01:00
Daniel Marjamäki 465555e39d Fixed memory leaks for non-solaris compilers. 2014-11-26 16:13:40 +01:00
amai2012 0913a51ccd Merge pull request #469 from lasergnu/SEGV
Fix SEGV on Solaris x86
2014-11-25 17:01:00 +01:00
Dmitry-Me f926958acb Fix false positive about return type when there's =delete in operator= declaration 2014-11-25 15:52:52 +01:00
Jay Sigbrandt f7eeb82ca4 Fix SEGV on Solaris x86
On Solaris x86, with both GCC 4.8 and 4.9, running cppcheck causes a segmentation fault when process terminates.

The backtrace (dbx) where
=>[1] _ZNSt14_List_iteratorIP5CheckEppEv(0x804798c, 0x8047994, 0xc0d61d6, 0x291a), at 0x8291b7c
  [2] std::list<Check*, std::allocator, <Check*>void>::remove(0x84ab328, 0x80479c8, 0x80479d4, 0x82d96fc), at 0x82da984
  [3] Check::~Check(0x84a9fc4, 0x83d232c, 0xfef411fb, 0x83d135c), at 0x82d9709
  [4] CheckExceptionSafety::~CheckExceptionSafety(0x84a9fc4, 0xfee82a40, 0xfee82a40, 0xfedcf000), at 0x8311e7d
  [5] __static_initialization_and_destruction_0(0x0, 0xffff, 0xfedd4c80, 0xfedcf000), at 0x81b01f8
  [6] _GLOBAL__sub_D__ZN20CheckExceptionSafety11destructorsEv(0x83d135c, 0xfedd4f18, 0x8047a50, 0x828a5f5, 0xfedcf000, 0x8047a68), at 0x81b023c
  [7] __do_global_dtors_aux(0xfedcf000, 0x8047a68, 0xfece28cd, 0x8047b08, 0x8047a48, 0xfedcf000), at 0x8185b90
  [8] _fini(0x8047b08, 0x8047a48, 0xfedcf000, 0xfedd4f00, 0x8047a80, 0xfecd4e72), at 0x828a5f5
  [9] _exithandle(0xfeffb7d8, 0x8185a1a, 0x0, 0x0, 0x0, 0x0), at 0xfece28cd
  [10] exit(0x1, 0x8047b70, 0x0, 0x8047ba3, 0x8047bba, 0x8047ce6), at 0xfecd4e72

The destructor order is somehow getting messed up on this platform.

This fix moves the code away from header file and ensures _instances remains valid during termination.
2014-11-25 14:03:46 +01:00
Daniel Marjamäki a002654c47 Reverted refactoring 828417c for now. It caused a major slowdown in the unused functions checking. 2014-11-24 06:37:08 +01:00
Dmitry-Me 298021af1f Remove redundant variable and manipulation thereof 2014-11-22 12:17:49 +01:00
Frank Zingsheim 9497732ac8 Fixed #6238 (false positive with double fopen) 2014-11-20 22:19:39 +01:00
Alexander Mai d4e59065df Fix some (clang) compiler warnings 2014-11-20 20:49:05 +01:00
Daniel Marjamäki 051d42ae6b astyle formatting 2014-11-20 14:20:09 +01:00
orbitcowboy 4a2a4474c9 Fixed #6281: MathLib: Long integer suffix i64 is not supported. 2014-11-20 10:23:09 +01:00
orbitcowboy f5d804f71a running astyle 2014-11-20 10:13:03 +01:00
Robert Reif d12f14844a Fixed #6279 (False Positive: Member variable 'Fred::i' is not initialized in the constructor) 2014-11-20 06:18:29 +01:00
Robert Reif b7c9187539 Fixed #6280 (MathLib: binary literals are integers) 2014-11-19 06:43:52 +01:00
PKEuS 4163f1e122 Fixed #6260 - C++11 style array initialization 2014-11-18 19:50:09 +01:00
PKEuS 428587f3d4 Fixed #6275: Simplification of = (NULL); to = 0; 2014-11-18 19:39:38 +01:00
Alexander Mai 85c02df56c Fix compiler warning. run astyle 2014-11-18 19:36:47 +01:00
PKEuS ad8749c0bd Fixed #6278: Remove casts to references to pointers in Tokenizer::simplifyCasts() 2014-11-18 19:23:59 +01:00
Dmitry-Me 34bd612ea9 Omit unneeded operations 2014-11-18 16:35:36 +03:00
Dmitry-Me e12d280e90 Code cleanup. Omit redundant actions. 2014-11-18 06:38:19 +01:00
Alexander Mai 8bcf833bb7 Cure null pointer access within Scope::findFunction introduced by recent cs 2014-11-17 23:10:00 +01:00
Robert Reif c5e15950df Fixed #6230 (SymbolDatabase: Wrong function() is set for token) 2014-11-17 16:04:44 +01:00
Robert Reif 7c4a137e14 Fixed #6274 (MathLib::isFloat doesn't recognize long double literal suffix L or l) 2014-11-17 06:53:32 +01:00
Alexander Mai 45ff012b2c Small doxygen fixes 2014-11-16 19:40:04 +01:00
Daniel Marjamäki 828417c934 CheckUnusedFunction: Refactorings to use same infrastructure for whole program analysis as CheckUninitVar and CheckBufferOverrun 2014-11-15 18:44:23 +01:00
Daniel Marjamäki de7e9223b8 Fixed #6272 (Improve check: multifile checking in checkbufferoverrun) 2014-11-15 10:43:49 +01:00
Dmitry-Me 353b885948 CheckOther::invalidPointerCast: Incorrect interpretation of settings 2014-11-14 20:22:17 +01:00
Dmitry-Me fefb0ca912 Reuse previously computed values 2014-11-14 13:24:56 +03:00
orbitcowboy b9a9f51fe0 MathLib: Added test for isDec() and removed not required state. 2014-11-14 04:29:35 +01:00
Alexander Mai 5300ba2074 Make single-argument constructors explicit 2014-11-13 21:39:14 +01:00
Alexander Mai 0f007fa24e Increase CPPCHECK_DEVMINOR to 68 2014-11-13 21:36:57 +01:00
Dmitry-Me cb9a6c1cb5 Don't show warning for same expressions alongside == in static_assert 2014-11-13 16:04:34 +01:00
Robert Reif 67385cfc4b Symboldatabase: improved look up of delegate constructors 2014-11-13 06:29:51 +01:00
Daniel Marjamäki 189dfd64f7 Revert "Fixed #6230 (SymbolDatabase: Wrong function() is set for token)"
This reverts commit 685fce6b91.
2014-11-11 07:29:16 +01:00
Daniel Marjamäki ea765c24f2 Fixed #3262 (Tokenizer: wrong 'return a=1,b=2,...;' simplification;) 2014-11-10 17:31:19 +01:00
Simon Martin cc6b51f2d9 Ticket #6059: Properly handle class... in parameter lists. 2014-11-07 23:08:54 +01:00
Daniel Marjamäki 685fce6b91 Fixed #6230 (SymbolDatabase: Wrong function() is set for token) 2014-11-07 11:10:20 +01:00
Daniel Marjamäki 8012ac9562 Fixed #5993 (FP: memleak (linux list)) 2014-11-07 07:44:12 +01:00
Frank Zingsheim 7e0fc3d481 Fixed #6252 (False positive "freed twice")
--HG--
extra : rebase_source : 24f801452fbefa3a59ab2cca62c3cf02aea513b6
2014-11-03 21:24:34 +01:00
PKEuS e5d63195cb Fixed #5983: Support storing pointers/references to member variables in CheckClass::checkConst() 2014-11-02 13:38:03 +01:00
Robert Reif df6855c216 SymbolDatabase: reintroduce test, move symboldatabase cleanup code to SymbolDatabase destructor 2014-11-02 10:36:52 +01:00
Frank Zingsheim 0e4c508d7b Fixed #4272 and #6237 (Crash from running out of memory with many templates) 2014-11-01 22:07:24 +01:00
Alexander Mai fe468ac142 cppcheck compilation fails with g++4.6.3. Patch from mavik1 2014-11-01 20:21:15 +01:00
Robert Reif 4eb33e7479 SymbolDatabase: Refactoring of findFunction 2014-11-01 14:36:17 +01:00
Daniel Marjamäki b766071272 Fixed #4970 (false positive: conditionally initialized variable used in if-clause (git/notes.c)) 2014-11-01 14:03:02 +01:00
PKEuS c7d315fba3 Refactorization: Changed simplifyMathFunctions() to a single pass simplifier 2014-10-31 23:08:11 +01:00
PKEuS f8371f65f0 Refactorization: Avoid string copying. 2014-10-31 22:36:44 +01:00
PKEuS 9b0b7a77b6 Removed unnecessary conditions and avoid string copying in Tokenizer::simplifyMathFunctions() 2014-10-31 13:59:39 +01:00
PKEuS 662283cab8 Refactorization: Avoid iterations over whole token list, limited several checks to function scopes. 2014-10-31 11:42:54 +01:00
PKEuS 5bc775e43e Refactorization: avoid string copying in Path::getPathFromFilename() 2014-10-30 23:48:23 +01:00
PKEuS d29117c4b2 Rearranged some code in simplifyTypedef 2014-10-30 23:48:23 +01:00
PKEuS b5ea677180 Some fixes for CheckOther::checkIgnoredReturnValue():
- Fixed name of the function
- Fixed false positive for code like "class strcmp { strcmp() {} };"
- Fixed FP #6233 on checking side (no AST generated for function call)
2014-10-30 23:24:13 +01:00
PKEuS b7996bd0b0 Handle overloads and custom implementations of functions checkReturnIgnoredReturnValue() to avoid false positives 2014-10-30 21:26:32 +01:00
Robert Reif f75aca1921 SymbolDatabase: change symboldatabase::findFunction to only check function arguments for function calls 2014-10-30 13:47:20 +01:00
PKEuS 6fdaf65cea Fixed createLinks2() when > is followed by ; (#6242) 2014-10-30 11:15:24 +01:00
Daniel Marjamäki 6088ba7951 Merge pull request #456 from simartin/ticket_6817_take2
Ticket #6187: Avoid infinite loop if eraseDeadCode does not remove anything (this time without memory corruption).
2014-10-23 09:43:02 +02:00
Daniel Marjamäki 4483c3e820 Fixed #6234 (FP : shift by too many bits is undefined on a QT container) 2014-10-23 06:52:19 +02:00
Simon Martin c6e2107d99 Ticket #6187: Avoid infinite loop if eraseDeadCode does not remove anything (this time without memory corruption). 2014-10-22 20:25:36 +02:00
Frank Zingsheim 71c5d4bd60 Ticket #6232 (cppOut of bounds array access)
--HG--
extra : rebase_source : 79ed3533a12a486ea3ed3f09f9bc55b1a4771161
2014-10-21 22:56:53 +02:00
Daniel Marjamäki dd6ade9831 Fixed #6231 (mingw compiler error: Path::getAbsoluteFilePath) 2014-10-21 18:46:09 +02:00
Daniel Marjamäki a3efa1e180 Fixed #4776 (FP: Assignment of function parameter has no effect outside the function, with goto) 2014-10-21 16:21:33 +02:00
Daniel Marjamäki e965d8de67 Merge pull request #455 from Dmitry-Me/refactorNumberIsX
Reuse code in isXNumber() to avoid duplication and unneeded computations
2014-10-21 15:30:19 +02:00
Dmitry-Me c3fa85b282 Reuse code in isXNumber() to avoid duplication and unneeded computations 2014-10-21 16:02:35 +04:00
Robert Reif 42f709c09d Fixed #6229 (Move Windows builtin types __intXX to library) 2014-10-21 06:11:19 +02:00
Daniel Marjamäki d8b50e73df Fixed #6002 (Defect: False positive due to pointer address not being associated with variable in for loop) 2014-10-20 15:54:02 +02:00
Robert Reif d5908f03b7 Fixed #6226 (false negative: printf format check for user defined array type) 2014-10-20 06:33:36 +02:00
Robert Reif e2f72b4cb1 Fixed #6215 (Move Windows platform types into library) 2014-10-19 07:34:40 +02:00
Daniel Marjamäki 0ed2b580b2 doc: updated wiki syntax for --doc output 2014-10-18 21:20:29 +02:00
Daniel Marjamäki de88c10e6b 1.67: set version 2014-10-18 11:35:00 +02:00
Daniel Marjamäki 0a1a34b9b7 Fixed Cppcheck warning, possible null pointer dereference of tok. 2014-10-18 10:59:48 +02:00
Daniel Marjamäki 0fd6586fcc Fixed #6219 (valueFlowForward: better multivariable analysis needed to avoid FP) 2014-10-17 06:50:33 +02:00
Frank Zingsheim 41a54fceba Fixed false positives about uninitialized member variables if variable has a default value (#5500) 2014-10-16 21:57:43 +02:00
Frank Zingsheim 3923618b8d Fixed #6222 (Missing varid for multiple braced initialized variables)
-> Fixed broken code in unit tests
2014-10-16 20:46:57 +02:00
PKEuS 079f495455 Added missing relational operators to pattern, as suggested in #6189 2014-10-16 20:37:21 +02:00
PKEuS a99fd364ef Restored functionality to detect std::string(0) calls as null pointer dereferences (#6189) 2014-10-16 19:12:02 +02:00
Daniel Marjamäki 7107286be6 Fixed #5891 (AST: wrong ast generated for 'x = (int)(double(123)*i);') 2014-10-16 15:57:05 +02:00
PKEuS eefaddf980 Fixed bug in Tokenizer::simplifyReference() (#6133) 2014-10-16 11:43:42 +02:00
PKEuS 6955e719cf Collected garbage code tests and moved them to testgarbage.cpp 2014-10-16 10:59:46 +02:00
Frank Zingsheim 9dd3bce98b Fixed #6214: non-static member initializer causes false positive 2014-10-16 09:11:09 +02:00
Samuel Degrande 96e8b83bf8 Fixed newline in verbose message 2014-10-16 09:08:39 +02:00
Daniel Marjamäki ecd17d84fb Reverted f088588c fix for #6187 that fixes infinite loop, the fix cause a use-after-free regression. 2014-10-16 06:32:06 +02:00
Frank Zingsheim eab0878b8a Support {} initialization in initializer list (#6216) 2014-10-15 21:33:21 +02:00
Daniel Marjamäki 228206f556 Fixed #6067 (ValueFlow: subfunction, condition with && or ||) 2014-10-15 16:34:03 +02:00
Daniel Marjamäki 17cab08cba Tokenizer::setVarId: Refactored fix to avoid varId for function name 2014-10-15 06:47:09 +02:00
Daniel Marjamäki 36297f1025 Tokenizer::varId: don't set varid for function name in code 'bool f(X x, int=3);' 2014-10-14 20:37:32 +02:00
Daniel Marjamäki 82972b7b0d SymbolDatabase: fix debug output 2014-10-14 19:39:08 +02:00
Daniel Marjamäki 24ecaf8b0a leakautovar: handling of unknown/non-pod types in c++ 2014-10-14 16:40:30 +02:00
Daniel Marjamäki 94c677905b ast: don't hang when invalid code with new is found 'new (var1,var2,var3);' 2014-10-13 19:12:20 +02:00
Daniel Marjamäki 77cffcde38 Fixed #6190 (SymbolDatabase: variable info not set properly when reinterpret_cast is used) 2014-10-12 16:06:50 +02:00
Frank Zingsheim 11867e3210 Fixed #6214 (non-static member initializer causes false positive (function call; initializer)) 2014-10-12 15:06:07 +02:00
Daniel Marjamäki aac9e66147 AST: fixed ast for 'new (char *)[10]' 2014-10-12 12:57:01 +02:00
Daniel Marjamäki f72a8d3f15 AST: fixed ast for 'a(new A(1)), b(new B(2))' 2014-10-12 12:13:01 +02:00
Daniel Marjamäki 649e2dfa97 AST: fixed ast for 'a = new (b) ::X;' 2014-10-12 11:12:25 +02:00
Daniel Marjamäki f96ea94048 AST: fixed ast for 'a(new (X), 5);' 2014-10-12 10:20:03 +02:00
Daniel Marjamäki c537c98751 AST: fixed ast for 'a(new (X));' 2014-10-12 09:24:43 +02:00
Daniel Marjamäki 30353d4b61 Tokenizer::setVarId: better handling of c++ casts 2014-10-11 18:35:06 +02:00
Daniel Marjamäki 31d8cac8c9 Fixed #6138 (ValueFlow: entry can't be 0 in loop code 'while (entry = get()) entry->value;') 2014-10-11 17:48:51 +02:00
Simon Martin 70561682eb Tokenizer::simplifyConstTernaryOp: Properly detect the end of the 'false' part of ternary operators when it contains '>'. 2014-10-11 17:01:55 +02:00
Daniel Marjamäki 8c8e85d2db Tokenizer::setVarId: A variable declaration can't start with the typedef keyword 2014-10-11 16:30:51 +02:00
Daniel Marjamäki 489fc6cce7 AST: more fixes of new statements in clang test suite. some of it is not handled very well. 2014-10-11 13:20:48 +02:00
Daniel Marjamäki 4783a67042 AST: fixes for more new statements from clang test suite 2014-10-11 11:27:13 +02:00
Daniel Marjamäki dd6ae3033f Tokenizer::simplifyRedundantParentheses: dont remove parentheses in 'void * operator new(SIZE_TYPE, int);' 2014-10-11 09:18:43 +02:00
Daniel Marjamäki e6708c1ae2 AST: fixed hang for 'new (int S::*[3][4][5])()' (clang test suite) 2014-10-11 08:32:49 +02:00
Daniel Marjamäki 5891bae59e AST: generilized handling of auto usage in new statement 2014-10-10 19:05:31 +02:00
Daniel Marjamäki b0b86f5607 Fixed internal error, use Token::simpleMatch for pattern 'const new' instead of Token::Match 2014-10-10 18:58:04 +02:00
Daniel Marjamäki 19a05b1f53 Tokenizer::setVarId: don't set varid for 'auto' keyword 2014-10-10 16:46:31 +02:00
Daniel Marjamäki d0d2a0faf8 simplifyCalculations: Fix simplification of '( %num% )' when parentheses must be kept 2014-10-10 13:19:25 +02:00
Daniel Marjamäki 66d4614a87 AST: don't hang when using auto in new statement 2014-10-10 12:47:01 +02:00
Daniel Marjamäki b5faf3a0cc AST: improved handling of new 2014-10-10 10:37:54 +02:00
Daniel Marjamäki cca003490b Fixed #6203 (AST: fix problem with '; static_cast<...') 2014-10-10 08:18:24 +02:00
amai2012 85500dcdbd Merge pull request #453 from simartin/ticket_5625
Ticket #5625: Simplify constant ternary operator in template parameters.
2014-10-06 09:01:08 +02:00
amai2012 cddb4af10b Merge pull request #450 from simartin/ticket_6187
Ticket #6187: Avoid infinite loop if eraseDeadCode does not remove anything
2014-10-06 08:59:56 +02:00
Simon Martin 9ddf857dc7 Ticket #5625: Simplify constant ternary operator in template parameters. 2014-10-04 20:49:57 +02:00
PKEuS b48bf1dbad Fixed GUI bug: file test.cpp is loaded from file if scratchpad is empty.
The underlying problem was in lib and is fixed by changing the behaviour of CppCheck::check(). Checking is performed on empty content without attempt to load from file.
2014-10-03 10:40:48 +02:00
PKEuS a02712cb66 Some small refactorizations:
- Removed redundant calls to std::string constructor
- Use default parameters in some places
2014-10-03 10:02:46 +02:00
PKEuS bb8c8d53cc Support do-loops in CheckStl::stlOutOfBounds() 2014-10-02 20:38:55 +02:00
PKEuS 621644b17a Added support for member variables in Check64BitPortability::pointerassignment() 2014-10-02 20:38:54 +02:00
PKEuS 542cb1cd8e Reduce RAM usage: Avoid keeping a copy of the preprocessed source files content during checking. 2014-10-02 19:44:17 +02:00
orbitcowboy 5a4526e997 Fixed typos in comments, no functional changes. 2014-10-02 04:39:41 +02:00
Dmitry-Me 23bfd21bbc Don't proceed to outer scope once match is found 2014-10-02 12:24:19 +04:00
PKEuS 7c7fcf36af Support :: prefix in front of allocation function. 2014-10-01 15:33:03 +02:00
PKEuS 14f15d65e7 Support more patterns when replacing stuff like 'or' (#6201) 2014-10-01 08:41:55 +02:00
Simon Martin f088588c88 Ticket #6187: Avoid infinite loop if eraseDeadCode does not remove anything (invalid goto into a dead loop's body). 2014-09-30 19:43:22 +02:00
orbitcowboy f36aaae732 Fixed a typo in a comment. No functional changes. 2014-09-30 14:54:59 +02:00
Daniel Marjamäki fbc6323a9b doc: changed --doc output to Markdown syntax 2014-09-30 14:56:12 +02:00
PKEuS 8788e58cbb Fixed false positive #5327: fclose as inner function call 2014-09-30 13:55:21 +02:00
PKEuS c0e2adf723 Detect "var += fclose(f)" as deallocation (fixes false positive #6016) 2014-09-30 13:19:53 +02:00
PKEuS ccb5384645 Fixed false positive memoryLeak #6013 2014-09-30 13:02:02 +02:00
PKEuS 936043d47d Fixed false positive 'unusedVar' with C++11 initialization (#6160) 2014-09-30 12:39:27 +02:00
PKEuS 374ea8f039 Fixed false positive ignoredReturnValue on unknown member function log() (#6197) 2014-09-29 19:55:32 +02:00
Martin Ettl a7c870bdc8 Fixed crash on garbage code in CheckOther::checkVariableScope(). The corresponding backtrace is hosted at https://github.com/orbitcowboy/cppcheck_crash_files/blob/master/crash223.cpp 2014-09-29 19:44:25 +02:00
Martin Ettl 2ca47601cd Running astyle 2014-09-28 22:05:05 +02:00
Martin Ettl b677d3d17f Fix crash on garbage code in tokenlist. The corresponding backtrace along with a testcase is hosted at: https://github.com/orbitcowboy/cppcheck_crash_files/blob/master/crash220.cpp 2014-09-28 22:04:25 +02:00
PKEuS 38af865560 Fixed false positive: Member variable not initialized in the constructor with array and (*this) (#5754) 2014-09-29 16:49:20 +02:00
PKEuS cbb8360b30 Added version attribute to .cfg files (#5928) 2014-09-29 16:26:17 +02:00
PKEuS 68b26f8faa Fixed subsequent false negatives in CheckBufferOverrun::checkInsecureCmdLineArgs() (#5835) 2014-09-29 15:38:33 +02:00
PKEuS 1df1b9c2bd Fixed #5836: Make showing $ in stringified tokens optional 2014-09-29 14:50:00 +02:00
PKEuS 448195f255 Added variable name to debug message about typeStartToken()
Fixed cppcheck message
2014-09-29 14:36:03 +02:00
PKEuS 0ae09c0029 SymbolDatabase: A token with a varId cannot be a function declaration 2014-09-29 13:05:51 +02:00
PKEuS 58fe668fc4 Fixed AST for operator:: after template (#6195) 2014-09-29 11:01:37 +02:00
PKEuS 55b14853d0 Fixed AST: Compile expression inside [] brackets of operator new. (#6193) 2014-09-29 10:26:15 +02:00
PKEuS 1495a411eb Fixed false positive ignoredReturnValue for variables initialized with constructor syntax (#6194) 2014-09-29 10:15:29 +02:00
PKEuS 03b1afc28c Loops over all varIds should start at 1. 2014-09-28 09:47:11 +02:00
Alexander Mai ccd80e3407 #6141 FP: Unknown type is assumed to have size 0. 2014-09-27 21:51:11 +02:00
PKEuS 210294443e New check: Check for unused return values (#653) 2014-09-27 21:31:04 +02:00
PKEuS e1218cf846 Support allocation of array of pointers with operator new in checkmemoryleak.cpp 2014-09-27 11:25:08 +02:00
PKEuS 812bc6bdaf CheckVaarg::va_list_usage(): Bailout when try{} block is encountered (#6186) 2014-09-27 11:03:58 +02:00
Alexander Mai 21c85118d6 #6189 assign with operator= a '\0' to a std::string is not an error 2014-09-26 20:40:44 +02:00
PKEuS de13ad7eca Improved simplifications of redundant loops:
- Execute simplifyWhile0 after simplifyKnownVariables (#394)
- Support declaration of variable in loop header in removeRedundantFor
2014-09-26 10:47:05 +02:00
Robert Reif 1729ea6f0f Fixed #6182 (Format specifier check confused by ternary operator) 2014-09-24 16:45:06 +02:00
PKEuS 0cc5b67bf6 Avoid copying std::list object in valueFlowAfterAssign 2014-09-24 13:22:22 +02:00
Robert Reif 194e4a71a4 Symbol database: handle anonymous namespace 2014-09-24 06:09:08 +02:00
PKEuS 1e8c7e102d Revert "run dmake"
This reverts commit 8ccf9eed09.
2014-09-23 21:04:31 +02:00
PKEuS 6dc5b1725e Restored files removed in 1cc872f5b2 2014-09-23 21:02:46 +02:00
Matthias Krüger 8ccf9eed09 run dmake 2014-09-23 16:20:19 +02:00
Lauri Nurmi 1cc872f5b2 Change "obsolete" in all filenames into "obsolescent", and also update all references to such files.
Neither the C standard, the C++ standard, or POSIX talks about "obsolete". All of them use the word "obsolescent", which is a different word with a different meaning.
2014-09-23 16:18:04 +02:00
Daniel Marjamäki ee93d30d94 ValueFlow: improved valueflow for loops that assign variable and then break 2014-09-23 16:06:02 +02:00
Dmitry-Me b17f2eea16 Cache search result to avoid dual search 2014-09-22 15:54:17 +04:00
Dmitry-Me ebf1764bcc Move variable declarations, remove unneeded assignments, remove comparison duplication 2014-09-19 11:29:31 +04:00
amai2012 77f341be97 Merge pull request #440 from Dmitry-Me/renameVariablesReduceActions
Cleanup variable names, reduce unneeded operations
2014-09-17 18:39:17 +02:00
Jonathan Thackray 2b3ef83f26 Fixed #5747 (When socket() returns -1 on error, this shouldn't be marked as a resource leak) 2014-09-17 18:37:41 +02:00
Dmitry-Me 57c379d300 Cleanup variable names, reduce unneeded operations 2014-09-17 15:52:03 +04:00
Dmitry-Me 32f7a789df Merge overlapping patterns, move declarations 2014-09-17 10:54:53 +04:00
amai2012 776e720d8f Merge pull request #438 from Dmitry-Me/moveDeclarationReorderCheck
Move declaration, run check earlier
2014-09-16 20:50:04 +02:00
Daniel Marjamäki f93cf9d1b7 Fixed #6170 (Tokenizer: sizeof on array in 2d-array is not handled properly) 2014-09-16 17:21:17 +02:00
Dmitry-Me 7c4b9bed9e Move declaration, run check earlier 2014-09-16 13:34:16 +04:00
Dmitry-Me 6f9730b1d8 Reorder checks, unwrap code 2014-09-16 10:17:06 +04:00
Dmitry-Me b479948f0f Refactoring: Merge overlapping Token::Match function calls 2014-09-16 06:22:16 +02:00
Daniel Marjamäki bbbe2c1b94 Fixed #6169 (False positive: passing uninitialized struct buffer member to strncpy) 2014-09-15 15:58:21 +02:00
PKEuS cafddcb109 Fixed wrong function log10 being recommended instead of log1p 2014-09-14 13:36:12 +02:00
Daniel Marjamäki 29a49d0641 removed some redundant null pointer checks before calling Token::Match 2014-09-14 11:35:04 +02:00
Simon Martin 53b58f0ed9 Refactoring. Use Token::Match instead of hardcoded patterns to increase readability. 2014-09-14 11:26:16 +02:00
Daniel Marjamäki d354cdc02c Fixed #6168 (False positive: sign conversion for inner calculation) 2014-09-14 10:29:58 +02:00
Daniel Marjamäki 865a252c89 astyle formatting
[ci skip]
2014-09-14 10:29:12 +02:00
Simon Martin 4b750997cb Ticket #6121: Report a syntax error for invalid enum initializers. 2014-09-13 20:46:53 +02:00
Simon Martin 01cf008792 Ticket #6134: Improve the mechanism differentiating template declarations from template definitions. 2014-09-13 16:44:05 +02:00
PKEuS 210d01c274 Merge pull request #430 from Dmitry-Me/mergeDuplicatePatterns
Merge partially duplicate patterns
2014-09-12 21:28:18 +02:00
Daniel Marjamäki 8cbd013d7f checkSignConversion: dont warn for + and - 2014-09-12 18:58:31 +02:00
Dmitry-Me 961a1b65ae Merge partially duplicate patterns 2014-09-12 19:10:41 +04:00
Daniel Marjamäki 0e55f12140 Fixed #6165 (Remove old checkUnsignedDivision checker that uses neither AST nor ValueFlow. The CheckType::checkSignConversion should be much more accurate) 2014-09-12 16:59:16 +02:00
Daniel Marjamäki d60cf16eb8 Sign conversion: Improved check. When its not explicit that 'int' variable is signed but it can have negative values, assume its signed 2014-09-12 16:18:42 +02:00
PKEuS 0b7281803e Merge pull request #428 from Dmitry-Me/detectArrowAccessesViaUninitPtrs
Detect -> accesses on uninitialized pointers
2014-09-12 09:19:59 +02:00
Dmitry-Me a2b30c7801 Detect -> accesses on uninitialized pointers 2014-09-12 10:19:00 +04:00
Daniel Marjamäki 7119550dde Too big shift: fix FP when cast is used 2014-09-12 06:45:45 +02:00
Daniel Marjamäki 0ab7abded1 AST: fixed cast for 'return (long long)c << 40;' 2014-09-12 06:43:52 +02:00
PKEuS e2136adf5b Merge pull request #427 from Dmitry-Me/reorderChecksMoveDeclaration
Reorder checks, move declaration closer to where it's needed
2014-09-11 21:46:13 +02:00
PKEuS 6f92557478 Use information about pure/leak-ignore from library to improve accuracy of several bailouts 2014-09-11 20:27:07 +02:00
PKEuS c1b0bfe4ee Simplified code 2014-09-11 20:27:01 +02:00
PKEuS fb0d145b34 Don't show inconclusive message redundantCopyLocalConst if --inconclusive is not set.
Ran AStyle
2014-09-11 19:45:52 +02:00
PKEuS 87e6a3501a Added checktype.cpp to VS solution; Fixed MSVC warning about signed/unsigned mismatch 2014-09-11 18:47:28 +02:00
Daniel Marjamäki 7847263451 Fixed #6158 (New check: dangerous sign conversion) 2014-09-11 18:10:19 +02:00
Dmitry-Me f58a25bebd Reorder checks, move declaration closer to where it's needed 2014-09-11 17:14:06 +04:00
Dmitry-Me e050fba414 Move declaration closer to where it is used 2014-09-11 11:26:35 +04:00
PKEuS 865fc9aa67 Fixed #6154: Don't suggest to reduce scope if inner scope is a lambda. 2014-09-10 20:56:34 +02:00
PKEuS 0a416910c4 Improved speed of testrunner: Avoid repeated loading of the same library 2014-09-10 20:29:44 +02:00
PKEuS 3fade4d28c Improved performance of library loading (~5%):
- Use std::string for comparison, convert to string only once
- Avoid calling tinyxml functions multiple times
2014-09-10 20:29:44 +02:00
PKEuS c3ac91eb42 Fixed ID of message about purged configurations. 2014-09-10 20:19:21 +02:00
Daniel Marjamäki a46f5c00a8 Minor tweaks for new CheckOther::checkIntegerOverflow checker 2014-09-10 17:26:20 +02:00
Daniel Marjamäki 974c8688c3 Fixed #1751 (Undefined Behavior: Signed integer overflow) 2014-09-10 17:02:18 +02:00
Daniel Marjamäki a36b0e55be CheckOther::checkTooBigBitwiseShift: improving error messages 2014-09-09 17:06:45 +02:00
Dmitry-Me 0a1b8c22d6 Simplify null pointer handling 2014-09-09 13:11:41 +04:00
Daniel Marjamäki f111a89639 Fixed #1757 (Undefined Behavior: Shift too many bits) 2014-09-09 07:24:59 +02:00
Dmitry-Me f7824bfd00 CheckNullPointer::isPointerDeRef: Improve handling of static member variables and functions 2014-09-09 05:36:09 +02:00
Matthias Krüger 323fd1b3dc tokenize.cpp: fix internal warning: Found simple pattern inside Token::Match() call: ") :" 2014-09-08 22:00:57 +02:00
Martin Ettl 0ced0c33e5 Fixed #6149: (gcc) warning: comparing floating point with == or != is unsafe. Using Tokenizer::isOneNumber function to compare a floating point number being 1.0. 2014-09-08 20:02:04 +02:00
Frank Zingsheim 8c5013adda Fixed #6073 2014-09-07 21:53:32 +02:00
Daniel Marjamäki db929ffd19 Fixed CID 1037074. Useless null pointer check. Created ticket #6144. 2014-09-07 13:50:55 +02:00
PKEuS 301b668eb5 Fixed internal warning of cppcheck 2014-09-07 11:47:40 +02:00
PKEuS ff4fc6a234 New check: Recommend expm1, log1p, erfc (#5392) 2014-09-07 11:38:49 +02:00
Daniel Marjamäki 7142edf03e Improved fix for Cppcheck warning. Remove useless conditions instead of adding a new one. 2014-09-07 09:56:07 +02:00
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