Commit Graph

2102 Commits

Author SHA1 Message Date
prozak 6592638022 - fix for #5749 defect: internal error
typedef expansion in cast operator was not processed correctly
2016-04-22 21:39:03 +08:00
Daniel Marjamäki 2a719bd194 Use simpleMatch for simple pattern 2016-04-22 06:52:37 +02:00
Daniel Marjamäki dc2a92263a Fixed #7426 (RFC: time to replace simplifyEnum?) 2016-04-22 06:02:54 +02:00
Daniel Marjamäki 253bfe432c Fixed #7410 (Tokenizer: function pointer with throw()) 2016-02-29 08:02:02 +01:00
Robert Reif 0fc59d0228 #7069 False positive invalidPrintfArgType_uint - %lu with 0ul 2016-02-19 10:12:47 +01:00
Daniel Marjamäki d964825c9f ValueType: Add debug output that is shown when --verbose is used 2016-02-15 16:18:24 +01:00
Daniel Marjamäki 6c324013e7 Use MAXTIME in templatesimplifier 2016-02-12 12:05:32 +01:00
Daniel Marjamäki cef6b35bb8 Improve MAXTIME handling 2016-02-11 16:10:52 +01:00
Daniel Marjamäki 5fef7cc050 Fixed #4973 (wrong enum simplification of shadow struct variable) 2016-02-07 15:15:20 +01:00
Daniel Marjamäki 6c1012a8d6 Fixed #4625 (wrong enum simplification in shadowed enum declaration) 2016-02-07 13:51:03 +01:00
Daniel Marjamäki f781f13997 Fixed #6806 (wrong enum simplification in initialization list) 2016-02-07 13:34:03 +01:00
PKEuS f8bf2b5776 Removed rest of variableHidingTypedef and variableHidingEnum checking 2016-02-06 20:55:41 +01:00
Daniel Marjamäki 42278dd133 Tokenizer: skip constant folding in normal token list for C code. In C++ code we should only fold constants in template arguments. 2016-02-06 17:25:51 +01:00
amai2012 d25258359a #7251 Remove checks variableHidingTypedef and variableHidingEnum 2016-02-06 15:37:58 +01:00
Daniel Marjamäki c7f5ca74bd VarId: Set varid for template parameters (#7046) 2016-01-31 11:07:30 +01:00
Alexander Mai 1dac1664be 7357 segmentation fault in TokenList::insertTokens 2016-01-26 19:12:57 +01:00
Daniel Marjamäki 26612ab846 Fixed #5332 (Tokenizer: if braces not added properly 'if (x==123) label: {}') 2016-01-23 11:43:48 +01:00
Daniel Marjamäki 2627aada07 Fixed #7346 (Tokenizer::setVarId: No varId for member in initialization list) 2016-01-23 08:28:04 +01:00
Daniel Marjamäki 8568a80208 Fixed #6883 (Template parsing error) 2016-01-20 16:10:58 +01:00
Daniel Marjamäki ab441f3fb1 Tokenizer:vardecl: split up reference variables declared in class better 2016-01-19 15:27:11 +01:00
Daniel Marjamäki a434e0fb1a Fixed #7272 (Tokenizer:setVarId: handle namespaces better) 2016-01-19 14:32:27 +01:00
Dmitry-Me f14814e002 Reorganize duplicated patterns 2016-01-14 10:00:07 +03:00
Daniel Marjamäki f8306383b1 Remove redundant variable 2016-01-10 22:30:24 +01:00
Daniel Marjamäki 414bdc30a9 Fixed #7276 (VarId: Missing varId in template class constructor initialization lists) 2016-01-10 22:10:49 +01:00
Daniel Marjamäki b3208fb4b3 Fixed #7211 (False positive: Finding the same expression on both sides of an operator (enumconstant == 0)) 2016-01-10 11:21:43 +01:00
Daniel Marjamäki 7191733981 Fixed #7192 (False positive: uninitMemberVar when base class is in another namespace) 2016-01-09 12:18:36 +01:00
Daniel Marjamäki 0b9d8ae0f1 astyle formatting
[ci skip]
2016-01-08 15:24:05 +01:00
amai2012 bd2892fde4 Ticket #7270 segmentation fault (invalid code) in Tokenizer::simplifyLabelsCaseDefault. include fix for cygwin 2016-01-08 11:59:02 +01:00
Daniel Marjamäki a014920280 Fixed #7260 (ValueType: in C++ the result of 'sint >> unknowntype' has unknown type) 2016-01-07 10:46:19 +01:00
Daniel Marjamäki 88a525aca7 Fixed #7267 (Tokenizer::setVarId: wrongly sets varId in cast with unknown type) 2016-01-06 17:47:59 +01:00
Daniel Marjamäki 125d2f7a36 Some initial support for platforms that doesn't have 8-bit char 2016-01-05 13:16:00 +01:00
Daniel Marjamäki a0971355b7 Tweaked Tokenizer::simplifyAsm2() 2016-01-04 19:18:10 +01:00
Daniel Marjamäki b748453b30 Tokenizer: Improve handling of block declarations (C extension) 2016-01-04 09:59:53 +01:00
Daniel Marjamäki 036306d7c2 Refactoring Tokenizer::startOfExecutableScope(). Improve and reuse Tokenizer::isFunctionHead(). 2016-01-03 22:52:24 +01:00
Daniel Marjamäki 7e585d37bc Tokenizer: Remove startOfFunction() and use isFunctionHead() instead. 2016-01-03 19:06:11 +01:00
Daniel Marjamäki 79e663dd6f Settings: Remove '_' prefix for public member variables 2016-01-03 16:18:17 +01:00
Daniel Marjamäki cd89e68f60 Fixed #6931 (noexcept and override qualifiers plus less than operator results in a syntax error) 2016-01-03 12:22:07 +01:00
Daniel Marjamäki 4ff7fa3f3b SymbolDatabase,Tokenizer: Refactor handling of noexcept 2016-01-03 08:36:00 +01:00
Daniel Marjamäki 9dabd17eae Tokenizer::isFunctionHead(): Handling of C++ methods only in isCPP() condition. 2016-01-03 08:23:48 +01:00
Daniel Marjamäki be8fc0f89f SymbolDatabase: Better handling of default and delete when reusing Tokenizer::isFunctionHead() 2016-01-03 00:01:29 +01:00
Alexander Mai b22071cb54 #7185: Add Assertion to detect memory corruption. 2016-01-02 23:56:40 +01:00
Daniel Marjamäki 66e047ee7d Refactoring SymbolDatabase. Reuse Tokenizer::isFunctionHead(). 2016-01-02 23:49:06 +01:00
Daniel Marjamäki 0a1d10bf2f Tokenizer: Add &|&&| to Tokenizer::isFunctionHead() 2016-01-02 23:09:44 +01:00
Alexander Mai ce12e1cea6 Remove unnecessaryForwardDeclaration check. It had false positives (e.g. #3663), was implemented in the Tokenizer and of little value. 2016-01-02 19:14:03 +01:00
Alexander Mai ee5a5e8bb5 Minor modification of previous changeset (compare token with literal using str()) 2016-01-01 23:37:38 +01:00
Alexander Mai 37c3d5da7b #6731 Tokenizer::eraseDeadCode causes heap corruption on invalid code. Better detection of invalid code inside Tokenizer::simplifyFlowControl() 2016-01-01 23:32:10 +01:00
Daniel Marjamäki 95009a4630 Merge pull request #745 from lanurmi/2016_ad
Update copyright year to 2007-2016.
2016-01-01 22:57:19 +01:00
Daniel Marjamäki b457ceef0e Settings: Added defaultSign 2016-01-01 17:33:59 +01:00
Lauri Nurmi 996c9244d8 Update copyright year to 2007-2016. 2016-01-01 15:34:45 +02:00
Daniel Marjamäki 8171154e12 Fixed #7230 (Confusing code snippet in error message) 2015-12-31 01:15:49 +01:00
Daniel Marjamäki b38559774d Removed the CPPCHECK2 ifdefs. I have no plan to remove simplifications anymore. 2015-12-28 16:26:51 +01:00
Daniel Marjamäki 15ecb26a6c Tokenizer: Moved simplifyAssignmentInFunctionCall from simplifyTokenList1 to simplifyTokenList2 2015-12-28 13:58:41 +01:00
Alexander Mai e9635fd393 #7236 segmentation fault (invalid code) in ValueFlow::setValues. #7237 segmentation fault (invalid code) in Tokenizer::setVarIdClassDeclaration 2015-12-26 23:51:10 +01:00
amai2012 36a6599386 #7324 segmentation fault (invalid code) in Tokenizer::simplifyTokenList1 2015-12-26 20:16:01 +01:00
Alexander Mai 87767fb666 #7228 segmentation fault (invalid code) in Tokenizer::isFunctionHead 2015-12-26 00:21:56 +01:00
Dmitry-Me 05cb4e16fe Fix misspelled word 2015-12-25 11:51:08 +03:00
PKEuS a6b719eb10 Refactorization: Fixed true positive when self-checking cppcheck 2015-12-18 18:13:13 +01:00
Dmitry-Me 0d2edc532c Remove redundant check 2015-12-16 16:36:06 +03:00
Dmitry-Me bd4b47123a Better variable name 2015-12-15 11:30:20 +03:00
PKEuS 18693a7fce Refactorized token.cpp:
- Removed redundant overload of Token::insertToken()
- Fixed leak in Token::deleteThis()
- Moved condition out of loop in Token::tokAt()
2015-12-14 22:04:51 +01:00
Dmitry-Me 182877df88 Variable name consistent with other code 2015-12-14 17:35:32 +03:00
Albert ARIBAUD (3ADEV) 58031147b2 Optimize tokenizing
Reorganize cppcheck.cpp to separate actual checking from
tokenizing and XML dumping. This implies splitting checkFile()
in three parts, checkRawTokens, checkNormalTokens() and
checkSimplifiedTokens().
2015-12-13 09:29:47 +01:00
Alexander Mai 96531d6ffe TokenList::createAst() doesn't validate itself anymore. Remove some duplicated code and fix glitch in TestGarbage::garbageCode162 2015-12-12 20:01:03 +01:00
PKEuS 51bb76c5b5 Optimization: Skip over expression in brackets in Tokenizer::isFunctionParameterPassedByValue() 2015-12-10 15:53:14 +01:00
Akhilesh Nema 932f6ea81b Cppcheck hangs with 100% CPU load in TemplateSimplifier::checkComplicatedSyntaxErrorsInTemplates (invalidcode) 2015-12-09 14:00:40 +01:00
Dmitry-Me 28bf944d81 Remove redundant checks 2015-12-09 11:10:56 +03:00
orbitcowboy eead6862cc Merge pull request #718 from Dmitry-Me/cacheAndReuse3
Cache and reuse value
2015-12-08 15:07:59 +01:00
Daniel Marjamäki e88a1b0915 astyle formatting 2015-12-08 14:23:26 +01:00
Dmitry-Me f96484b609 Cache and reuse value 2015-12-08 10:36:03 +03:00
Albert ARIBAUD (3ADEV) b8dd71c577 Factorize toxml() into a single member function
lib/symboldatabase.cpp and lib/tokenize.cpp both
define a static toxml() function. Make it a single
static ErrorLogger::toxml() member function.
2015-12-07 18:21:01 +01:00
amai2012 7129b1c5b3 Merge pull request #716 from Dmitry-Me/betterVariableName7
Better variable name
2015-12-07 10:35:34 +01:00
Dmitry-Me 67f0301f0b Better variable name 2015-12-07 12:21:17 +03:00
Alexander Mai 98f2cd021e #7199 SymbolDatabase::validate() should be run in debug mode and print debug messages. In turn correct some test examples with invalid code. 2015-12-06 08:14:04 +01:00
Alexander Mai 5cf923d091 Don't run SymbolDatabase::validate on --debug. Replace some NULL by nullptr 2015-12-05 21:07:03 +01:00
Alexander Mai ba0859e838 #6981 crash in checkvaarg.cpp (with possible fix). Avoid segfault. Add SymbolDatabase::validate() to allow validating smyboldatabase 2015-12-05 20:55:26 +01:00
Alexander Mai 6ae1533cb4 #7190 Cppcheck hangs with 100% CPU load in Tokenizer::simplifyAttribute (invalidcode). Call validate() once more in Tokenizer::simplifyTokenList1 to trigger invalid code exception 2015-12-05 13:55:33 +01:00
PKEuS 46d6623182 Refactorization: Improved performance of Tokenizer::isFunctionParameterPassedByValue()
- Skip it for C code
- Improved performance by around 80% on C++ code (3,5% of entire runtime)
2015-12-03 14:44:59 +01:00
PKEuS 32e2fb2f78 Refactorization: Prefer Token::simpleMatch over Token::Match also for non-const patterns. 2015-12-03 13:04:55 +01:00
PKEuS 00662ec484 Refactorization: Improve performance of simplifyTypedef by using Token::simpleMatch by ~15% (forgotten in b8d39a2229) 2015-12-03 12:50:42 +01:00
PKEuS b8d39a2229 Refactorizations:
- Improve performance of simplifyTypedef by using Token::simpleMatch by ~15%
- Simplified code in simplifyTypedef
- Ran AStyle
2015-12-02 23:32:50 +01:00
PKEuS 7ea9e3ca4f Refactorization: Improve performance of simplifyTypedef by adding a pre-check for Token::link() by ~25% 2015-12-02 22:41:09 +01:00
Alexander Mai f762affea0 Small refactoring: replace NULL by nullptr, remove redundant static keyword, Tokenizer::setVarId() uses const variable 'notstart' 2015-11-30 22:13:49 +01:00
Daniel Marjamäki 8a9e068129 Fixed #7119 (Cppcheck hangs with 100% CPU load in Tokenizer::copyTokens (invalidcode)) 2015-11-29 14:56:15 +01:00
PKEuS e8522c7883 Small refactorizations:
- #include cleanup
- Use std::array instead of std::vector
- Do not create a stringstream to concatenate 4 strings
- Use std::cout instead of printf
2015-11-29 10:56:44 +01:00
Daniel Marjamäki 8bb8290a6f Fixed GCC warnings. unused variable, shadow variable. 2015-11-28 18:15:47 +01:00
PKEuS 93c02ce826 Fixed compiler error introduced in previous commit and several MSVC warnings 2015-11-28 10:49:08 +01:00
Daniel Marjamäki 6b124a37d8 Cleanup some casts 2015-11-28 10:11:07 +01:00
Daniel Marjamäki c0da6c1541 simplifyCalculations: handle '(4%1<<1&4!=1)' better. must combine '!' '=' before constant folding. fixed the operator precedence for comparison operators. (#4931) 2015-11-28 09:04:22 +01:00
Alexander Mai 44305fd98e #6940 Unsigned overflow in TestBufferOverrun::negativeArraySize. Don't try to calculate size of array with negative array size 2015-11-28 07:27:52 +01:00
Daniel Marjamäki 2737f63f71 Wrong calculation of constants (simplifying: +,<<,% operations) 2015-11-25 16:46:39 +01:00
Daniel Marjamäki 5135bae777 Tokenizer: Cleanup the Tokenizer::tokenizeCondition used by the preprocessor 2015-11-23 16:53:30 +01:00
Daniel Marjamäki 8fd62e0cf9 Fixed #4931 (Wrong calculation of constants (simplifying: +,<<,% operations)) 2015-11-20 19:43:11 +01:00
Daniel Marjamäki 4abc0b7c1f Partial fix for #4931 (Wrong calculation of constants (simplifying: +,<<,% operations)) 2015-11-20 16:09:47 +01:00
PKEuS 00bdc89f98 Refactorizations:
- Rely on SymbolDatabase to detect string types
- Loop over variable list instead of token list
- Fixed two comments claiming that the AST is experimental
2015-11-20 11:20:42 +01:00
Daniel Marjamäki 40851a12ef Fixed #4627 (Tokenizer::setVarId: function declaration in function body) 2015-11-19 16:27:16 +01:00
PKEuS e990cfb76b Fixed setVarId() for destructors 2015-11-18 21:13:58 +01:00
Daniel Marjamäki 0f9d90d2be Changed Copyrights. Removed my name. 2015-11-18 20:04:50 +01:00
PKEuS 3f255e7685 Use Library information in Tokenizer::sizeOfType() 2015-11-15 14:37:02 +01:00
Alexander Mai 835c234e18 #7131 crash: Tokenizer::setVarId() 2015-11-14 21:22:53 +01:00
PKEuS f9bc229d4b Support varids in nested classes that are declared outside of outer class (#7127) 2015-11-13 10:07:57 +01:00