Commit Graph

4270 Commits

Author SHA1 Message Date
Daniel Marjamäki 295ba9cc4f Fixed #2709 (Negative times in --showtime summary) 2012-09-15 19:49:48 +02:00
Daniel Marjamäki 2f7032a0e6 Cppcheck: Removed redundant code. 2012-09-15 16:00:46 +02:00
Daniel Marjamäki 7ec825cd5d Cppcheck: Fixed Cppcheck warning about variable scope 2012-09-15 15:54:52 +02:00
Daniel Marjamäki bd734a9610 Fixed #3684 (Preprocessor: #include handling is searching directories in the wrong order) 2012-09-15 12:53:11 +02:00
Daniel Marjamäki f1ebd99dc2 Fixed #3507 (false positive: comma-separated statements before return in methods) 2012-09-15 11:55:08 +02:00
Daniel Marjamäki 84c0368bfd Fixed #3586 (false positive: uninitvar in argument in namespaced function) 2012-09-15 10:48:17 +02:00
Kamil Dudka b4d78e3d05 Fixed #3651 (Preprocessor: Wrong handling of #elif) 2012-09-15 09:34:41 +02:00
Daniel Marjamäki 329f672334 Preprocessor: Added TODO in code. How can userDefines be empty? It is an inner condition and the outer condition checks that it's not empty. 2012-09-15 08:13:52 +02:00
Daniel Marjamäki a9c1a052b9 CheckAssignIf: Improved checking for bitwise or 2012-09-14 19:13:44 +02:00
Daniel Marjamäki 9f2e1ab98d Fixed #4048 (Tokenizer::simplifyVarDecl: Improve handling of 'a::b const * p = 0;') 2012-09-14 16:46:45 +02:00
PKEuS 929f16d892 Fixed hang on garbage code (#4193) 2012-09-14 15:32:35 +02:00
Daniel Marjamäki 19fdbf0fd0 Fixed #4185 (Incorrect 'Found duplicate if expressions' for strings with high bit set) 2012-09-13 16:44:10 +02:00
Daniel Marjamäki a5d32c2665 astyle formatting 2012-09-13 16:43:07 +02:00
PKEuS e136b59f21 Removed redundant "simplifyTemplates" prefix (information already in class name) from function names in TemplateSimplifier. 2012-09-12 20:46:56 +02:00
PKEuS d28ceff449 Simplified code in templatesimplifier.cpp 2012-09-12 20:41:10 +02:00
Daniel Marjamäki 6ebfbf42e1 Fixed #4191 (wrong syntax error if 'error' substring of stringification) 2012-09-12 16:10:45 +02:00
PKEuS 2db1dbe2ce Changed some function prototypes according to cppcheck messages about functions that can be static. 2012-09-11 19:19:11 +02:00
PKEuS 22a8e3f4e6 Replaced Tokenizer::getFunctionTokenByName() by SymbolDatabase::findFunctionByName(), which handles scopes slightly better. 2012-09-11 18:03:47 +02:00
Daniel Marjamäki 64faa780fe Fixed #4087 (div by zero check is invalid for floats) 2012-09-11 16:50:42 +02:00
PKEuS 1863306198 Fixed false negative in checkunusedvar.cpp and reduced code dupliaction. 2012-09-11 14:24:12 +02:00
PKEuS 623ffe23f0 Fixed #4145 2012-09-11 14:14:35 +02:00
PKEuS 50f9dd52ab Used enum instead of string in implementation for '--language='. 2012-09-11 08:53:27 +02:00
PKEuS 77b5175ec3 Support 0B... syntax for binary numbers. 2012-09-11 08:39:01 +02:00
PKEuS 95f4bb3e97 Implemented support for binary numbers (#4113) 2012-09-10 21:13:32 +02:00
PKEuS 5940d77a62 Disabled C++ specific checks and simplifications when checking a C or non-C++ file. 2012-09-10 19:02:32 +02:00
PKEuS 87131f6105 Added new cmdline option --language= (alias of GCC-like -x) to enforce a specific language. Valid values: c, c++, java, c#. (#3994) 2012-09-10 18:51:32 +02:00
PKEuS 88f9e9991d Fixed compiler warning (#4136) 2012-09-10 17:43:19 +02:00
PKEuS ce9f6bdb56 Fixed segfault #4182 2012-09-10 17:33:52 +02:00
Daniel Marjamäki 54f1771938 Fixed #4082 (Maybe false positive: memleak) 2012-09-10 17:27:41 +02:00
PKEuS 3449684137 Fixed usage of _settigns->isEnabled("style") in CheckIO. Added forgotten test cases. 2012-09-10 16:23:00 +02:00
PKEuS e9f13e1547 Fixed false positive #4163 2012-09-10 16:14:24 +02:00
PKEuS 1e5d082251 Moved remaining part of c_str() checking to checkstl.cpp. Fixed false positive #4157. 2012-09-10 15:20:38 +02:00
PKEuS 4e59e55229 Refactorization/Partial rewrite of CheckClass::copyconstructors():
- Reformatted check code and some test cases
- Fixed false positives #4148 (non-copyable/unknown base classes) and #4178 (copy ctor implementation not seen)
- Proper usage of STL containers
- Better support for initializer list
- Rephrased error messages
2012-09-10 13:31:30 +02:00
Daniel Marjamäki d3bdd84d8b Fixed #4175 (segmentation fault of cppcheck) 2012-09-09 18:56:26 +02:00
Daniel Marjamäki cf8ac78069 Fixed test assertion failure caused by me 2012-09-09 18:33:41 +02:00
Daniel Marjamäki 7acb04b44c Tokenizer: improved simplification of numeric calculations 2012-09-09 16:22:39 +02:00
PKEuS d44f10fc01 Fixed createLinks2() on this code: nvwa<(x > y)> 2012-09-09 15:31:23 +02:00
PKEuS a748678636 Removed redundant nullpointer checks in token.cpp 2012-09-09 14:34:07 +02:00
Daniel Marjamäki 511c5a62e7 Fixed #4141 (Crash when parsing divide by zero.) 2012-09-09 12:38:15 +02:00
Daniel Marjamäki 107b3b4401 Fixed #4171 (don't choke when parentheses are missing from macros) 2012-09-09 09:48:07 +02:00
Daniel Marjamäki 0c55d5cfa7 Fixed #4002 (syntax error for 'X( typedef, Y)') 2012-09-09 09:14:46 +02:00
Daniel Marjamäki 69a0062177 Tokenizer: don't crash for 'int'. Ralated with tickets #2978 and #3304 2012-09-08 20:59:25 +02:00
Daniel Marjamäki 853c6522dc Tokenizer::simplifyEnum: Readded refactorings. Tickets 3949,3950,4025,4053 has been solved as far as I see. 2012-09-08 12:42:24 +02:00
PKEuS 78d49ea4b8 Fixed #3732 - properly simplify struct declarations:
- Don't replace "{ {" if they are part of an initialization
- Properly split struct definition, variable declaration and variable initialization.

Used std::stack instead of std::list
2012-09-08 10:51:31 +02:00
Daniel Marjamäki a39b58046f Tokenizer: Improved simplification of 'a?(1):b' 2012-09-08 10:45:00 +02:00
Daniel Marjamäki 2722f53edd Fixed #4142 (false positive (error) Uninitialized variable: b) 2012-09-08 10:15:37 +02:00
Daniel Marjamäki 2ce5cb3075 Tokenizer: Simplified parentheses better in such pattern: 'git merge --squash 4142 operator git merge --squash 4142 (%var%|)) ( %num%|%bool% ) %op%|;|,|)' 2012-09-08 07:01:35 +02:00
Daniel Marjamäki 6b56b4a9d3 Show that inconclusive message is inconclusive 2012-09-07 16:11:15 +02:00
PKEuS e87ebcc602 Added support for std::unique and std::remove_if to CheckStl::uselessCalls(). 2012-09-07 14:23:32 +02:00
PKEuS a4b5824dec New internal check: checkRedundantNextPrevious().
Fixed findings by new internal check
2012-09-07 12:36:40 +02:00
PKEuS e4a693eaab Refactorizations:
- Fixed several findings of CheckInternal.
- Removed some debug code from CheckOther::checkRedundantAssignment().
2012-09-07 11:59:20 +02:00
PKEuS 489df29346 Moved Tokenizer::typeConstToConstType() to Tokenizer::simplifyConst() 2012-09-07 11:41:41 +02:00
Ettl Martin 9a375744a4 fixed a wrong spelled word in comments 2012-09-07 11:34:58 +02:00
PKEuS c2d4afc525 Support default arguments in symboldatabase for arguments without name (#4055) 2012-09-06 20:50:46 +02:00
PKEuS 0c812c5ac3 Throw an InternalError when trying to divide (or modulo) by zero in MathLib. 2012-09-06 20:15:32 +02:00
PKEuS 20f989b6c4 Skip code in brackets in default argument declaration (fixes #4057) 2012-09-06 20:02:53 +02:00
PKEuS 31e7e41098 Fixed and refactorized broken CheckNullPointer::CanFunctionAssignPointer():
- return true if parameter is passed by reference (fixes #4111)
- Use symboldatabase
- Improved handling of inconclusive
2012-09-06 18:33:15 +02:00
Edoardo Prezioso 097d0816d0 Fixed #4150 (new ineffective statement check warning wrong). 2012-09-06 17:48:30 +02:00
PKEuS e2bc381550 Don't shift by a negative value in TemplateSimplifier::simplifyNumericCalculations() 2012-09-06 17:02:20 +02:00
PKEuS a8cdd15738 Fixed false positive #4077. 2012-09-06 16:30:10 +02:00
Daniel Marjamäki 1c7027140a Tokenizer: Improved simplifyRedundantParanthesis 2012-09-06 16:16:29 +02:00
PKEuS 6edec7bdce Fixed false positive #4123. 2012-09-06 16:10:51 +02:00
Arpit Chaudhary 67e40a85e5 Improved check for shifting by negative values and removed false positives 2012-09-05 16:09:40 +02:00
PKEuS 536492d5f0 Applied two suggestions of XhmikosR:
- Added UTF8 signature to VS10 solution
- Prefer prefix operator++ (cppcheck catch)
2012-09-05 15:34:37 +02:00
PKEuS f969530e1f Revert "Fixed #4087" which was committed by accident.
This reverts commit 0bbef8d803.
2012-09-05 13:57:57 +02:00
Nilesh Kumar c7633fc73c Fixed #3645 2012-09-05 13:48:00 +02:00
gaurav kaushik 9ad7dfd5fd Fixed #211 and #214 2012-09-05 12:58:09 +02:00
PKEuS e5b1a6ceb1 Merge branch 'master' of github.com:danmar/cppcheck 2012-09-05 12:18:11 +02:00
Zachary Blair 8546bcc94e Fixed #2029 (new check: free invalid address) 2012-09-04 23:31:23 -07:00
PKEuS 0bbef8d803 Fixed #4087 2012-09-04 21:50:50 +02:00
Daniel Marjamäki 2197b84d78 astyle formatting 2012-09-04 16:29:23 +02:00
PKEuS 8c70778b70 Refactorization: Fixed several messages when self-checking cppcheck 2012-09-04 15:29:51 +02:00
PKEuS 8924e8af43 Fixed #4143: Give correct line numbers in checkunusedvar.cpp 2012-09-04 14:53:24 +02:00
anuraggarg011 913670d254 Fixed #3304 (simple cases) 2012-09-04 13:41:14 +02:00
kbajaj91 be716e81d3 Fixed #4138 - False positive about variable assigned a value that is never
used in loops
2012-09-04 13:06:04 +02:00
Edoardo Prezioso f8591f9004 CheckOther::clarifyStatement: improved message to show what's the 'bad' and the 'good' expression. 2012-09-04 02:07:55 +02:00
Edoardo Prezioso 6fd60eebb0 Tokenizer: added a workaround for #3690 (Support MSVC's 'for each'). 2012-09-03 20:23:53 +02:00
Edoardo Prezioso 6100776847 Tokenizer: remove unneeded initialization of strings explicitely with "". 2012-09-03 20:22:27 +02:00
anuraggarg011 bf11248a09 Fixed #1620 (tokenizer: simplify well known math functions) 2012-09-03 18:51:15 +02:00
anuraggarg011 b156c727b0 Fixed #3939: Support ****foo++; 2012-09-03 17:10:27 +02:00
Ankita Gupta c3a65dca40 Fixed #3793 (improve check: calculation in sizeof) 2012-09-03 15:56:10 +02:00
Edoardo Prezioso 804fbe3f8f Tokenizer::simplifyEmptyNamespaces: remove useless condition.
Token::deleteThis handles the !tok->next situation well.
2012-09-03 14:22:31 +02:00
PKEuS 27cafd495a Don't bailout for noreturn functions in checkRedundantAssignments outside switch. 2012-09-03 12:03:30 +02:00
PKEuS d98ee357d4 Fixed crash #4135 when using Q_DECLARE_METATYPE 2012-09-03 11:30:36 +02:00
PKEuS 2be2738c6e Moved duplicate code into function in CheckOther::checkRedundantAssignment() 2012-09-03 10:46:51 +02:00
Kartik Bajaj ea0cbbcf78 Fixed #1481 2012-09-02 18:50:17 +02:00
PKEuS 81ff721113 Fixed variable shadow warning 2012-09-02 17:00:16 +02:00
PKEuS 7bd732efe4 Invented a fix that compiles on GCC and doesn't crash. 2012-09-02 16:53:38 +02:00
PKEuS 794a491515 Fixed two other compilation errors on GCC. 2012-09-02 16:42:38 +02:00
PKEuS 8a474add19 Fixed compilation error - added missing function in symboldatabase. 2012-09-02 14:30:00 +02:00
deepak gupta 24659dee92 Fixed #4087 2012-09-02 14:26:39 +02:00
PKEuS 2d64b69cf4 New check: Detect redundant assignment to a variable and redundant copying to a buffer
This check partially replaces the check for redundant assignments in switch
2012-09-02 13:09:32 +02:00
Deepak Gupta 4202866100 Fixed #4096 (Improve check: Buffer overrun in for loop, postfix increment in array access) 2012-09-01 19:17:28 +02:00
pranav1509 6f6baa67e4 Added more patterns to redundant condition check. 2012-09-01 13:39:32 +02:00
PKEuS c20adf91bf Moved simplification of wide character string literals (L"foo") to tokenize(). Token::isLong flag used to indicate that string is a wchar_t literal. 2012-09-01 13:12:47 +02:00
PKEuS dcf997007b Incremented version numbers to 1.57 dev 2012-09-01 13:04:09 +02:00
Daniel Marjamäki b8db27fcd1 1.56: Set versions 2012-09-01 10:54:15 +02:00
Daniel Marjamäki d7e521845b SymbolDatabase: Made function static after self-check suggestion 2012-09-01 10:46:09 +02:00
Daniel Marjamäki 769cd4503d Preprocessor: Made function static after self-check suggestion 2012-09-01 10:32:27 +02:00
Daniel Marjamäki 15bc552b37 Tokenizer: Fixed possible NULL pointer dereference 2012-09-01 10:11:18 +02:00
Daniel Marjamäki a8d419820b Tokenizer: removed unused variable 2012-09-01 09:57:48 +02:00
Ankita-gupta ff7373f46f Fixed bug in Token::Match (#3720) 2012-08-30 13:33:19 +02:00
Edoardo Prezioso 0d26a79f2c Tokenizer::simplifyEmptyNamespaces: new function.
It removes from the token list, if found, the following tokens: 'namespace %var% { }'. It won't involve C code.
2012-08-28 22:40:25 +02:00
PKEuS bbce79d7b3 Small refactorization: Handle std::map more efficient in setVarIdStructMembers() 2012-08-28 12:57:11 +02:00
PKEuS ea85dd305a Fixed #4086: Set varId in initialization list. 2012-08-28 12:44:40 +02:00
Daniel Marjamäki 9fe9944adb Fixed #4034 (false positive:(error) Dereferencing 'cfileP' after it is deallocated / released) 2012-08-28 06:38:38 +02:00
Daniel Marjamäki a7e67ac379 CheckObsoleteFunctions: asctime and ctime are not posix functions 2012-08-27 18:49:48 +02:00
Daniel Marjamäki 03f6a19dbd astyle formatting 2012-08-27 15:52:03 +02:00
Daniel Marjamäki 0d82b08080 Fixed #4040 (false positive: (error) Uninitialized variable: iter) 2012-08-27 15:48:21 +02:00
PKEuS 671f1b83d9 Fixed false positive: Return value of std::remove() ignored when std::remove(char*) is called (#4093) 2012-08-27 14:28:16 +02:00
Daniel Marjamäki 263e13e924 astyle formatting 2012-08-27 06:33:56 +02:00
PKEuS 4bab7f0ee2 Removed unused and obsolete functions Tokenizer::getParameterName() and Tokenizer::getNameForFunctionParams() 2012-08-26 16:53:40 +02:00
PKEuS 046712aaec Removed --doc formating hack that removes more than three newlines and added format testing of Check::classInfo instead.
- Fixed test failures shown by new test.
Use const_iterator instead of iterator in testcppcheck.cpp when possible
2012-08-26 16:22:46 +02:00
PKEuS 4b1075b34b Fixed #3729: Don't suggest recursive call to optimize away c_str() 2012-08-26 10:56:46 +02:00
PKEuS 839f7a32a4 It is ok to pass a nullpointer as first argument to mbstowcs and wcstombs, which then just return how long the buffer has to be to store the result. 2012-08-26 10:41:48 +02:00
PKEuS 6893948c72 Bugfix: Reset property info when Token::link() is set (< can be a bracket or a comparison operator). Fixes #4075. 2012-08-26 10:23:16 +02:00
PKEuS 8301b5d4d6 Bugfix for bugfix of Token::varId - Change Token::type also if varId is set to 0 2012-08-26 10:04:22 +02:00
PKEuS 662b0d2dbe Simplify 0[foo] to *(foo) (fixes #4083) 2012-08-26 10:03:05 +02:00
PKEuS 9fa7e15fb4 Fixed setVarId for nested templates (#3976, #3769) and support C++11 right angle brackets in TemplateSimplifier::templateParameters() 2012-08-26 09:49:38 +02:00
Reijo Tomperi 7ddd564ad6 Change file encoding to UFT-8 like it is for other files. 2012-08-26 00:12:38 +03:00
Daniel Marjamäki f127728582 Enable --std=c11 and --std=c++11 by default 2012-08-25 21:57:45 +02:00
Daniel Marjamäki 41797d409d Fixed #4036 (cppcheck hangs with 100% cpu load) 2012-08-25 13:24:17 +02:00
Daniel Marjamäki 7975ffba21 Fixed #3980 (Variable not assigned a value) 2012-08-25 13:07:33 +02:00
PKEuS bb068d2f78 Fixed false positive #4039: Handle operator precedence in CheckStl::size() 2012-08-25 12:36:13 +02:00
Daniel Marjamäki 985ac662ee Fixed #4035 (False positive: Memory leak: pTempFile) 2012-08-25 12:00:25 +02:00
Daniel Marjamäki 5051837c1a Reverted last commit. I pushed it by mistake. 2012-08-25 11:00:51 +02:00
Daniel Marjamäki 5e1ccfaf90 Fixed #4035 (False positive: Memory leak: pTempFile) 2012-08-25 10:55:20 +02:00
PKEuS 808c3468c9 New check: detect suspicious comparison of string literal with char* variable
Bugfix: Update Token type when varId is set
2012-08-24 14:25:17 +02:00
PKEuS 76fbcce13f Restored (intentional) content of screwed up commits 1bcdf4ce3d and 674f7980d519712ff16d8f874dfe55a84deb4b5b:
- New check (Inconclusive): Array filled incompletely with memset/memcpy/memmove
-- This check only warns if the number of elements is given as size in bytes to memset, memcpy or memmove and if the size of an element is larger than 1 Byte. It does not warn for random numbers

- New check: Detect ineffective statements like '*foo++;' (Should be: '(*foo)++;')

Sorry for the inconveniences.
2012-08-24 11:28:50 +02:00
Edoardo Prezioso 0f1accc2da Revert latest two commits as they break the compilation and the style. PKEuS??? 2012-08-24 00:10:19 +02:00
PKEuS 1bcdf4ce3d New check: Detect ineffective statements like '*foo++;' (Should be: '(*foo)++;') 2012-08-23 12:28:40 -07:00
PKEuS 674f7980d5 New check (Inconclusive): Array filled incompletely with memset/memcpy/memmove.
This check only warns if the number of elements is given as size in bytes to memset, memcpy or memmove and if the size of an element is larger than 1 Byte. It does not warn for random numbers
2012-08-23 11:27:00 -07:00
Daniel Marjamäki d24badbfda Fixed #4068 (Endless loop inside MathLib::add()) 2012-08-22 20:50:39 +02:00
Daniel Marjamäki f133c9e8ec Fixed #4020 (false positive: (style) Variable 'dst' is assigned a value that is never used) 2012-08-22 19:47:46 +02:00
PKEuS 4fb464982c Fixed crash reported in #4076 2012-08-22 10:17:23 -07:00
PKEuS f238f3fad5 Support sizeof in preprocessor directives
Applied "patch" provided by michaeln123 in #4071
2012-08-22 17:28:06 +02:00
PKEuS 43e01a2b1a Ran AStyle, removed redundant tokAt(0) 2012-08-22 16:51:44 +02:00
SAndeep 0600b0be8f sprintf changes 2012-08-22 16:46:14 +02:00
Arpit Chaudhary 7c8da17c44 Added check for detecting if a variable or number is shifted by negative right operand. Statements like:
int i = -1;
 a << i;

 would result in an error message stating undefined behavior.
2012-08-22 15:44:20 +02:00
Kumar Ashwani afe030ce9b Fixed #2628: Detect redudant usage of operator++/-- in switch. 2012-08-22 14:40:57 +02:00
PKEuS e05a597066 Fixed false negatives in checkautovariables.cpp:
- Detect returning temporary instances (#4076)
- Added support for returning user defined types
2012-08-22 04:08:32 -07:00
PKEuS 00f6c635b8 Detect functions returning a template type in SymbolDatabase
Fixed comment
2012-08-22 03:37:50 -07:00
Edoardo Prezioso 2b5cd2effc Fixed G++ [-Wparentheses] warning. This also fixed #4073 (Crash on self assignment). 2012-08-21 20:15:04 +02:00
Daniel Marjamäki 41b624230f Fixed #3942 (false positive: (error) Memory leak: keyword) 2012-08-21 17:02:11 +02:00
PKEuS b4b5c80db9 Improved check: Added message when checking sign of a pointer. 2012-08-21 03:28:02 -07:00
PKEuS a5bca705a5 New check: Ensure that the return value of std::remove() is used. 2012-08-21 02:30:27 -07:00
PKEuS b641a10e35 Fixed false negative: memset(foo, 0, sizeof(&foo)); is as suspicious as memset(foo, 0, sizeof(foo)); 2012-08-20 10:08:18 -07:00
Daniel Marjamäki 9ffc7f4c2d Fixed #3964 (False positive: Expressions in array declarations are not simplified 'char mac[17+1];') 2012-08-20 18:10:32 +02:00
PKEuS a243983242 Refactorized type handling in CheckIO and CheckOther:
- Added several types (std::) to isComplexType
- Types in namespace std:: are considered to have no side-effects (solved one TODO)
- Scope of a pointer can be limited without side effects
2012-08-20 08:57:28 -07:00
PKEuS 4550cd2cd6 Refactorizations:
- Removed unnecessary 'if'
- Use symboldatabase instead of tokenizer to detect references and pointers
2012-08-20 08:27:43 -07:00
PKEuS c537a86363 Fixed false negative in unused variable checking when class without side effects inherits from another one. 2012-08-20 07:55:39 -07:00
PKEuS c7e2490f2b Refactorized iterator check:
- Handles reassignment (fix for #4062)
- Better support of execution paths
- Use symboldatabase for better performance
2012-08-20 04:57:24 -07:00
Daniel Marjamäki 7786e12ba2 Fixed #3922 (false positive: (error) null pointer dereference) 2012-08-18 22:11:48 +02:00
Daniel Marjamäki 6a5cc4727d Fixed #4019 (false positive: (style) Variable 'dest' is assigned a value that is never used) 2012-08-17 16:37:25 +02:00
Daniel Marjamäki 1601baa974 Fixed #4016 (false positive: incorrectLogicOperator) 2012-08-14 16:17:18 +02:00
Daniel Marjamäki e534ee0426 Fixed #3706 (cppcheck 1.53 hangs when processing a certain template with specializations) 2012-08-13 16:17:33 +02:00
Daniel Marjamäki 8afdde0b5e Fixed #3931 (FP: Buffer access out-of-bounds) 2012-08-12 17:06:54 +02:00
Edoardo Prezioso 358fb9a284 Fixed the GCC Wshadow warnings introduced recently. 2012-08-12 17:04:37 +02:00
Daniel Marjamäki 4368f66a00 Fixed #4018 (false positive: Dereferencing 'foo' after it is deallocated / released) 2012-08-12 16:18:07 +02:00
PKEuS 2ac2674f67 Fixed #4000, added support for function prototypes to TemplateSimplifier::templateParameters() 2012-08-12 05:19:56 -07:00
PKEuS a15e307df0 Replaced two more indentation counters 2012-08-12 04:12:17 -07:00
PKEuS c8773b891d Refactorization: Make use of Token::scope() replacing certain indentation counters 2012-08-12 03:13:07 -07:00
PKEuS 35d94c26d5 Changed creation of SymbolDatabase. Database always created after Tokenizer::tokenize() and Tokenizer::simplifyTokenList() instead of on-demand creation by Tokenizer::getSymbolDatabase.
-> With Token::scope() it is possible to access the symboldatabase without having to call getSymbolDatabase(). The change increases safety because it is guaranteed that the database is available in all checks, even if the specific check doesn't call getSymbolDatabase
- Tokenizer::_symbolDatabase does no longer have to be mutable -> Increased const correctness

The change above required two additional changes:
- A bug causing a debug message was fixed in the symboldatabase that became visible in the test suite by the change above.
- Simplify expressions like "struct struct Foo" which might be result of typedef instanciation.
2012-08-12 03:01:24 -07:00
PKEuS 4f68923add Fixed inverted id and msg of debug messages from symboldatabase 2012-08-12 02:11:54 -07:00
PKEuS 2ab33ef21b Added Pointer to enclosing scope to class Token (Only available when symboldatabase is created). 2012-08-11 11:47:11 -07:00
PKEuS 45bad7d1b2 Refactorized tokenizer:
- Don't run setVarId() twice, keep old varId's while/after simplifyTokenList
-> Modified two test cases in testmemleak.cpp. I consider this to be safe. Feel free to investigate this.
- Fixed two nullpointer issues shown by cppcheck

Ran Astyle on teststl.cpp
2012-08-10 09:31:22 -07:00
Edoardo Prezioso 1d8240356b Really fixed #4024. Now the simplification won't be done on non-executive scopes. 2012-08-10 17:43:09 +02:00
PKEuS 70de691551 Fixed false positive #4032 2012-08-10 06:26:07 -07:00
Daniel Marjamäki 0254344df5 Tokenizer::simplifyEnum: Reverted refactorings/optimisations as there were regressions (#3949, #3950, #4025) 2012-08-10 14:06:24 +02:00
Daniel Marjamäki ca4ed5e0c3 ErrorLogger: Throw InternalError if given severity is not handled 2012-08-10 12:43:53 +02:00
PKEuS 355c1322d6 Small refactorizations in checkunusedvar.cpp:
- Token::Match handles nullpointers
- In chained assignments variables are only written (not read) when assigned
- Fixed crash #4033
2012-08-10 03:36:08 -07:00
Daniel Marjamäki 6ff1760c72 TemplateSimplifier: Improved handling of unknown inner template instantiation inside template instantiation (#3818) 2012-08-09 17:19:36 +02:00
Daniel Marjamäki 4ec12209dc TemplateSimplifier: Fixed wrong match when inner template parameters are wrongly counted (#3818) 2012-08-08 06:43:41 +02:00
Edoardo Prezioso d68d035e22 Tokenizer::simplifyFlowControl: separated the 'throw' case because it's not a reserved keyword in C, hence the function shouldn't simplify in C source files. 2012-08-07 19:38:51 +02:00
Daniel Marjamäki 735c0f5f6b Fixed #3963 (segmentation fault of cppcheck (invalid typedef code)) 2012-08-07 16:39:41 +02:00
Edoardo Prezioso 9e916eec66 Fixed #4024 (Tokenizer::simplifyFlowControl removes pieces of code inside a class if 'exit' is a member function). 2012-08-07 10:59:27 +02:00
Daniel Marjamäki 5ee7758a83 Fixed #4015 (segmentation fault of cppcheck (enum)) 2012-08-06 16:21:21 +02:00
Daniel Marjamäki 445fd4e6aa Fixed #4010 (error (cppcheckError): Internal error. Token::Match called with varid 0) 2012-08-05 17:11:39 +02:00
Daniel Marjamäki 25fd841b5d Tokenizer: removed redundant include 2012-08-05 16:06:20 +02:00
PKEuS 31129aad40 Refactorizations in checknullpointer.cpp:
- Removed CheckNullPointer::nullPointerAfterLoop(), improved CheckNullPointer::nullPointerByCheckAndDeRef() to cover tests
- Enhanced CheckNullPointer::nullPointerByDeRefAndChec() to check also 'else if' and 'while'
2012-08-05 02:07:38 -07:00
PKEuS 25ecd3ed71 Message refactorization: checknullpointer.cpp
Removed a duplicate test in checknullpointer.cpp
2012-08-05 01:38:48 -07:00
PKEuS 5e862351e9 Improvements in token.cpp:
- Shortened stringify output - 4 or more subsequent empty lines are abbreviated
- Fixed detection of comparision operators
- Make use of _type: Replaced three asserts by one
2012-08-02 11:36:54 -07:00
PKEuS 1b40668e04 Refactorizations:
- Made several functions (Check*::myName and others) because they don't touch depend on a specific instance. (cppcheck findings)
- Removed description of a check in CheckConst that has moved to CheckIO
2012-08-02 09:50:48 -07:00
PKEuS 452f95cea0 More robust template detection in clarifyCondition check based on Token::link. (#3818)
Create links between < and > only on non-C code.
AStyle fix
2012-08-02 04:03:01 -07:00
PKEuS 3b5dabdb14 Clarified errormessage of checkBoost 2012-08-02 02:40:08 -07:00
PKEuS c8e40773f1 Fixed cppcheck messagesa about functions that can be const/static:
- Made Tokenizer::getErrorMessages static - Avoids creation of unnecessary instance of Tokenizer
- Changed Tokenizer::removeExceptionSpecifications to common style for simplification functions. In contrast to the comment, this function doesn't call itself recursivly - fixed comment.
- Made Tokenizer::IsScopeNoReturn static.
2012-08-01 12:04:47 -07:00
PKEuS 88e4794d6e Refactorized CheckClass::checkConst:
- Added checking for functions that can be even declared static (#1971. Removed fix for #1563)
- Consistent usage of Function::TokenDef to avoid problems with scope identifiers
- Rewrote parsing of function body making it more generic
- Removed three redundant tests
2012-08-01 10:24:38 -07:00
Ettl Martin 98d608231d spelling fixes 2012-07-31 23:35:56 +02:00
Ville Skyttä dce16a970d spelling fixes 2012-07-31 21:28:42 +02:00
PKEuS cc1faad34a Removed bailouts in CheckClass::privateFunctions and CheckUnusedFunctions when checking code with templates (unnecessary after 2c10e9a6ca) 2012-07-29 08:05:54 -07:00
Daniel Marjamäki 2c10e9a6ca TemplateSimplifier: Removed unused function 2012-07-29 16:14:26 +02:00
Daniel Marjamäki 435340b463 Fixed #3814 (false positive: missing constructor) 2012-07-29 16:01:05 +02:00
PKEuS 4e2a86260f Really fixed #3941. 2012-07-29 06:50:05 -07:00
PKEuS 26a2379f9f Fixed false positive #3941. 2012-07-29 06:39:43 -07:00
PKEuS 1ec3c9f634 Fixed hang in libreoffice code (simplification of K&R style function declaration tried to simplify a function with parameters without name whose implementation contained "; {".
Test cases of this simplification only need basic simplifications done in Tokenizer::tokenize
2012-07-29 06:11:48 -07:00
PKEuS 6aa7f984cb Fixed false positives on FILE* arrays. (#3965) 2012-07-29 04:04:12 -07:00
PKEuS 2f95b97c66 Message refactorization: checkobsoletefunctions.h and checknonreentrantfunctions.h 2012-07-29 02:30:03 -07:00
Daniel Marjamäki 79c84029fb Preprocessor: Reduce simplifyVarMap usage to make Cppcheck a bit faster 2012-07-27 12:30:43 +02:00
Daniel Marjamäki 0ead18122d Fixed #3695 (False positive: memory leak (ptr?free(ptr):0)) 2012-07-27 12:25:20 +02:00
PKEuS 643f3890b4 Fixed #4003: tmpnam may be called with a nullpointer 2012-07-27 01:36:22 -07:00
Daniel Marjamäki 1a6f7ea9a0 Fixed #3998 (Tokenizer::simplifyEnum: wrong handling of expressions => crash) 2012-07-26 11:12:28 +02:00
PKEuS c11e8cdbfa Fixed false positive "Variable is not assigned a value" on class types 2012-07-25 00:34:27 -07:00
Daniel Marjamäki f82e5396c8 Fixed #3999 (Error incorrectly written in XML format) 2012-07-25 06:43:54 +02:00
PKEuS f5e5d59562 Refactorizations:
- Removed redundant newlines at the end of test cases
- Make use of STL algorithms instead of own implementations of std::replace and std::remove+string::erase
- Removed unused variable (found by cppcheck)
- Prefer postfix increment (found by cppcheck)
2012-07-24 12:21:05 -07:00
PKEuS bb940e4722 Implemented unused variable checking for standard types (#2851) 2012-07-24 11:47:29 -07:00
Daniel Marjamäki e6f761126c Fixed #2802 (False positive: ::free() is not recognised as free() to release buffers) 2012-07-24 09:28:08 +02:00
PKEuS 5c0cab238f Fixed useInitializationList false positives (#3988) 2012-07-23 08:16:47 -07:00
PKEuS ae6201d289 Fixed false positive "Parameter 'x' is passed as a value" for types like std::vector<T>::size_type (#3986) 2012-07-23 01:41:20 -07:00
Daniel Marjamäki a733c9b603 Fixed #3914 (false positive null pointer dereference, assignment in conditional) 2012-07-23 10:05:55 +02:00
Zhao Qifa 188d2e143d add a performance checker for const assignment 2012-07-22 09:17:00 +02:00
Ville Skyttä 7ab2f6a9fa Spelling fixes. 2012-07-21 18:11:20 +02:00
Daniel Marjamäki 9352e124fe Auto variables: Speedup my fix. Use the symbol database instead of Token::findmatch. 2012-07-19 16:42:56 +02:00
Daniel Marjamäki dc6c3228d7 Fixed #3834 (Preprocessor: -U doesn't work) 2012-07-18 20:57:00 +02:00
Daniel Marjamäki 17c27f51ff Fixed #3791 (False positive: returnTempReference) 2012-07-18 07:22:29 +02:00
Daniel Marjamäki a768b0e8b2 Fixed #3954 (Pointer reference memory leak false positive) 2012-07-17 16:28:34 +02:00
Daniel Marjamäki d34924ba6d Uninitialized variables: Fixed false positive when there is assignment in condition 2012-07-17 07:03:40 +02:00
Daniel Marjamäki ddfc968028 Fixed #3891 (False positive 'Double deallocation:' due to ((void*)1)) 2012-07-16 17:07:51 +02:00
Daniel Marjamäki a96ec0ad46 Fixed #3804 (False positive: Member not initialized (simplifyTokenList removes const on pointers)) 2012-07-16 07:28:59 +02:00
PKEuS e9182f1fcc Implemented support for 'using namespace std;': Add std:: prefix to names that are known to be in std namespace. Simplify namespace (std::)tr1:: if C++11 flag is set. 2012-07-15 02:05:19 -07:00
PKEuS 1e704edbd5 Message refactorization: checkio.h/cpp 2012-07-13 10:36:58 -07:00
PKEuS 41fecb2e6d Fixed evaluation of redundant conditions (#3972) 2012-07-13 06:01:19 -07:00
PKEuS 247d820027 Fixed #3972: Don't issue auto variable error when the address is assigned to a reference to a non-pointer. 2012-07-13 05:21:45 -07:00
PKEuS 4ed15d87b6 Properly fixed test failure and line numbers in uselessCallsEmpty error 2012-07-13 05:15:58 -07:00
Daniel Marjamäki 5645269bbf Preprocessor: Made proper fix for #3690 2012-07-13 11:36:02 +02:00
Daniel Marjamäki e4ad193b40 Fixed #3690 (CppCheck is stuck on evaluating false preprocessor expression( = 0)) 2012-07-13 11:28:45 +02:00
Daniel Marjamäki 6018bb4636 Fixed #3442 (unmatchedSuppression can't be suppressed) 2012-07-13 08:29:49 +02:00
PKEuS 5a91d6a0f5 Check for useless calls of .empty() (#3816)
Messages from CheckStl::uselessCalls() only shown when correct severity is enabled.
2012-07-12 03:23:52 -07:00
PKEuS 3523f89917 Added 'char' back where I removed it by mistake. 2012-07-12 01:01:52 -07:00
Daniel Marjamäki 8dd5270be3 Preprocessor: skip preprocessor directives in the Preprocessor::validateCfg function 2012-07-11 21:20:31 +02:00
PKEuS 2bd1f1d8dc Improved check: Sign checking in printf format string (#3511)
Removed some redundant code (already covered by token list simplifications and symboldatabase)
2012-07-11 10:46:35 -07:00
Daniel Marjamäki 4f4be79f20 Preprocessor: Fixed bugs in my #3643 fix 2012-07-11 18:29:33 +02:00
PKEuS e8f4dce25f Added check to CheckInternal: detect invalid patterns like "%typ%"
Replaced some Token::Match by Token::simpleMatch (suggestions of internal checks)
2012-07-11 08:45:16 -07:00
Daniel Marjamäki 17cf24ed34 Fixed #3643 (Preprocessor: Invalid configuration (macro is used in code)) 2012-07-10 20:29:04 +02:00
PKEuS 68e19b33ff Fixed parsing of C++11 initializatation in initializer list (#3957) 2012-07-10 06:15:11 -07:00
PKEuS 37d9d6fd7e Improved parsing of C++11 initializer list (#3956) in CheckClass::initializeVarList. 2012-07-10 05:47:51 -07:00
PKEuS 402a0058e2 Renamed target name in VS10 solution for cppcheck lib to cppcheck-core. This fixes the failure when _re_building cppcheck.
Name changes:
cppcheck.dll -> cppcheck-core.dll
cppcheck.lib -> cppcheck-core.lib
cppcheck.pdb -> cppcheck-core.pdb
2012-07-09 10:21:19 -07:00
PKEuS b5589e41f9 Cleanup of VS10 solutions (As suggested by XhmikosR). Fixed problems:
- UNICODE set correctly
- Fixed path to pcre.lib; use external library directories
- Removed several unnecessary and redundant flags from projects

Thank you for your help, XhmikosR!
2012-07-09 08:09:54 -07:00
Edoardo Prezioso fae40c4782 Change every C version of 'size_t' to C++ 'std::size_t'. 2012-07-09 13:30:18 +02:00
PKEuS 639f15645a Message refactorization: checkbufferoverrun.cpp (2), checkclass.cpp, checkexceptionsafety.h 2012-07-09 02:11:05 -07:00
Daniel Marjamäki 42e68550fc fixed doxygen errors 2012-07-08 19:32:33 +02:00
PKEuS ed7e950671 Message refactorization: checkbufferoverrun.cpp 2012-07-08 06:51:24 -07:00
Daniel Marjamäki 848fd59cbd Fixed #3913 (boundcheck, false positive continue in loop) 2012-07-08 14:34:47 +02:00
Daniel Marjamäki bf98e952c1 Fixed #3927 (false positive: (error) Uninitialized variable: new) 2012-07-08 13:59:00 +02:00
PKEuS f5f63dc4a6 Message refactorization: check64bit.cpp
Added two articles in checkautovariables.cpp as suggested by kimmov
2012-07-08 02:38:58 -07:00
PKEuS 0f1cb4c98c Message refactorization: checkassignif.cpp, checkautovariables.cpp 2012-07-07 11:31:18 -07:00
Daniel Marjamäki 49198f52c4 Fixed #3934 (False positive for logical conjunction with enum and define) 2012-07-07 15:34:26 +02:00
PKEuS d3c44c20ff Refactorized checking of scanf field width specifiers (#3946):
- Removed duplicate check
- Changed severity to portability, when a crash only happens with certain libc versions
- Fixed handling of * in format string (#3877)
- Added support for [...] pattern
- Removed garbage from tests
2012-07-07 04:34:37 -07:00
PKEuS dec4844c10 Define _WIN64 in VS10 solution when compiling for x64 2012-07-07 02:41:41 -07:00
PKEuS 2c9545f603 Fixed #3797: _ is a valid character in suppression IDs 2012-07-06 09:16:43 -07:00
PKEuS 5caab6ba10 Fixed crash on garbage code (#3870) 2012-07-06 09:03:33 -07:00
Daniel Marjamäki 543ccdd4c0 Removed simplifyEnum timer that I didn't intend to include in the previous commit. 2012-07-06 15:48:51 +02:00
Daniel Marjamäki 6ad5fc8456 Refactoring Tokenizer::simplifyEnum. The enum handling is now somewhat faster since all enum values of a enum are simplified at the same time. 2012-07-06 15:43:50 +02:00
Edoardo Prezioso 3c4ce7b43a Fixed (for real) the preprocessor.cpp(1166) warning in #2123. 2012-07-06 13:17:08 +02:00
Daniel Marjamäki f9da83f4b5 Fixed #3926 (false postive: (error) Uninitialized variable: exitpattern) 2012-07-03 18:52:23 +02:00
Robert Morin 25c1cc4c8e Improve check: warn when comparing boolean value with < <= > >=. Ticket: #2617 2012-07-03 06:39:13 +02:00
Thomas Sondergaard f72ddbb2e9 Fixed #3912 (Analysis failed) 2012-07-03 06:34:14 +02:00
PKEuS 2de6ea4627 Incremented version to "1.56 dev" 2012-07-02 11:10:07 -07:00
Edoardo Prezioso fa24fff3dc Fixed the warning with GCC 4.7.1:
cast from type ‘const void*’ to type ‘const char**’ casts away qualifiers.
2012-07-02 19:37:30 +02:00
Daniel Marjamäki 2536746d02 1.55: Set version 2012-06-30 18:08:27 +02:00
Daniel Marjamäki 9716c059f5 updated --doc output 2012-06-30 17:44:05 +02:00
Daniel Marjamäki 7312885c87 updated --doc output from CheckLeakAutoVar 2012-06-30 16:30:56 +02:00
Daniel Marjamäki 325414e354 CheckLeakAutoVar: Updated error messages 2012-06-30 16:23:10 +02:00
Daniel Marjamäki bb9f114d84 Fixed #3924 (False positive: Uninitialized variable (const pointer)) 2012-06-30 12:12:36 +02:00
Daniel Marjamäki cb7757f650 CheckUnusedVar: dont report false positives for extern variables 2012-06-28 17:22:56 +02:00
Daniel Marjamäki 2e3a08a8c1 Fixed #3916 (false positive: uninitialized variable when using assignment and , in rhs) 2012-06-27 20:44:19 +02:00
Daniel Marjamäki 9da3373876 Fixed #3919 (False positive: uninitialized variable (extern)) 2012-06-26 18:28:41 +02:00
Edoardo Prezioso 1ad56a25c6 Fixed the preprocessor.cpp(1166) warning in #2123. 2012-06-26 12:28:52 +02:00
Daniel Marjamäki 0042ee7bc8 Fixed #3660 (False positive memleak (allocation function uses non-local variable)) 2012-06-25 20:00:50 +02:00
PKEuS f5c42660de Fixed #3909: Handle constructor syntax initialization. 2012-06-24 09:57:17 -07:00
Daniel Marjamäki 25b24d149f Fixed #3910 (False positive: Variable is not assigned a value (pointerArray alias)) 2012-06-24 16:54:37 +02:00
Daniel Marjamäki be464b43b3 Memory leaks: updated configuration handling. it's still not auto-tested. 2012-06-24 15:38:37 +02:00
Daniel Marjamäki 8af044255d Tokenizer: Added new function isFunctionParameterPassedByValue that check if a parameter is passed by value 2012-06-24 13:40:09 +02:00
Daniel Marjamäki 72d24ab4b4 Fixed #3904 (false positive memory leak with linked list) 2012-06-23 20:15:58 +02:00
Daniel Marjamäki 162a430354 Fixed #3868 (false positive: (style) Same expression on both sides of '|'.) 2012-06-23 19:54:15 +02:00
Daniel Marjamäki b6f4dbd067 Uninitialized variables: Fixed TODO assertion (related with ticket #3106) 2012-06-23 16:06:20 +02:00
Daniel Marjamäki 7f5950967e Reviewed handling of >> in return statements in C files in UninitVar checking 2012-06-23 15:47:48 +02:00
Daniel Marjamäki f0f69ed818 Reviewed handling of << and >> in C files in CheckUninitVar 2012-06-23 12:41:00 +02:00
Daniel Marjamäki e2964c0c9e Uninitialized variables: Fixed false negative when ? operator is used in rhs 2012-06-23 12:19:03 +02:00
Daniel Marjamäki a15dac9285 simple spell checking 'itis' => 'it is' 2012-06-23 10:08:18 +02:00
Daniel Marjamäki 5de82c1c42 Updated arrayIndexOutOfBounds error message. Thank you Kimmo for the suggestion. 2012-06-23 09:51:32 +02:00
Daniel Marjamäki 4e98cb3ed9 Fixed #3907 (improve check: detect buffer overrun when using && or || in for loop) 2012-06-23 09:23:14 +02:00
Daniel Marjamäki ac524c56ad Reviewed handling of unknown types in ExecutionPathBufferOverrun 2012-06-23 08:15:59 +02:00
Robert Reif dc4982115a Improved checking of scanf format strings 2012-06-23 07:52:52 +02:00
Daniel Marjamäki 3db58bb57f Reviewed C handling in CheckOther::clarifyCondition, never treat x<..> as a template in C files. 2012-06-23 07:29:49 +02:00
Daniel Marjamäki d2dbaca24b Reviewed handling of unknown types in C files in UninitVar 2012-06-22 19:57:07 +02:00
Daniel Marjamäki abaa044e03 Reviewed handling of unknown types in CheckUninitVar 2012-06-22 16:39:39 +02:00
Daniel Marjamäki 354406441a Fixed #3906 (false positive uninitvar for vector pointer) 2012-06-22 16:26:43 +02:00
Daniel Marjamäki 951da02f89 Reviewed handling of unknown types in C files in checkunusedvar 2012-06-22 15:59:41 +02:00
Daniel Marjamäki 8aba801360 Fixed #3800 (False negative: Self-assignement of variable declared as 'extern') 2012-06-22 11:23:50 +02:00
Daniel Marjamäki d6e2e867ea refactoring CheckAutoVariables 2012-06-22 11:21:51 +02:00
Daniel Marjamäki 935351c601 Fixed #3895 (Improve check: double deallocation not detected (if-else)) 2012-06-22 09:10:30 +02:00
Daniel Marjamäki 195174b69f astyle formatting 2012-06-21 19:05:14 +02:00
Daniel Marjamäki edea4ef131 Refactoring: Renamed CheckNullPointer::isPointer to Token::isUpperCaseName 2012-06-21 19:00:53 +02:00
Daniel Marjamäki 956a37a382 Fixed compiler errors 2012-06-20 17:39:31 +02:00
Daniel Marjamäki 3d0e090a13 Fixed #3899 (false positive: (error) Returning/using deallocated pointer fp) 2012-06-20 17:09:41 +02:00
Daniel Marjamäki 180bb00ac6 Merge pull request #74 from kimmov/errorlogger
Refactoring information messages.
2012-06-19 11:19:59 -07:00
Daniel Marjamäki 974225626d Fixed #3901 (false positive: (error) Uninitialized variable: temp) 2012-06-19 20:07:39 +02:00
Daniel Marjamäki ce5c38f52c Fixed #3890 (False positive Uninitialized variable on returning default value on a class member) 2012-06-19 20:04:10 +02:00
Kimmo Varis 68c52ddd69 Refactoring information messages.
Currently the information severity messages are outputted as error
messages with Severity::Information. This causes constant confusion
as people think it as mildest error severity (and rightfully so).
When it was meant to be for printing messages about the checking
procedure itself (like missing header files etc).

So I'm adding a new function for the ErrorLogger for printing these
informative messages. This makes clear the distinction of errors
found from the code and messages related to the checking itself.
It also makes it easier for clients to handle these separately.
2012-06-19 00:16:20 +03:00
Edoardo Prezioso 57ade25099 Fixed checkio.cpp warning in #2123. 2012-06-18 13:08:01 +02:00