Commit Graph

8251 Commits

Author SHA1 Message Date
Daniel Marjamäki 0162f33d3f CheckSizeof: allow division with sizeof(char) when byte count is expected. 2016-07-17 19:19:15 +02:00
Daniel Marjamäki 45ee29d5dc Fixed #7604 (simplifyCalculation: expression '0 && x[2]' is not simplified properly) 2016-07-17 15:52:53 +02:00
PKEuS 801fd8f96a Support trailing return types (C++11) 2016-07-17 15:47:50 +02:00
Daniel Marjamäki 91e38f3eb9 Fixed #7582 (false positive: Division by result of sizeof(). strncpy() expects a size in bytes) 2016-07-17 15:22:14 +02:00
PKEuS 7a183779e2 CheckOther::checkMemsetZeroBytes(): Support wmemset() 2016-07-16 21:53:25 +02:00
Daniel Marjamäki b8ca9fc844 Tokenizer: alternative tokens for and,or,etc. context sensitive for both c and c++. 2016-07-16 21:29:56 +02:00
Daniel Marjamäki 920ac5a3f6 astyle formatting
[ci skip]
2016-07-16 21:21:24 +02:00
Daniel Marjamäki 6e3d5dc0d1 Fixed #7580 (False positive when using logical operator keywords 'and', 'or') 2016-07-16 20:21:31 +02:00
amai2012 920b402d35 Merge pull request #813 from boos/cwe-mapping-7
CWE mapping of incorrectStringCompare, literalWithCharPtrCompare, charLiteralWithCharPtrCompare, incorrectStringBooleanError, staticStringCompare, stringCompare, signConversion, unusedFunction, unusedVariable
2016-07-16 13:10:22 +02:00
Roberto Martelloni 25525e38a7 CWE mapping of incorrectStringCompare, literalWithCharPtrCompare, charLiteralWithCharPtrCompare, incorrectStringBooleanError, staticStringCompare, stringCompare, signConversion, unusedFunction, unusedVariable 2016-07-16 10:07:06 +01:00
PKEuS 0afecd8fee Do not simplify name "CALLBACK" away on non-windows platforms (#7554) 2016-07-16 10:43:28 +02:00
Robert Reif 768c26805c Fixed false positive: %Ld in format string (no. 1) requires 'long long' but the argument type is 'long long' (#7601). 2016-07-16 10:33:46 +02:00
Alexander Mai e495bfb960 Use proper tokenizer variable 2016-07-10 22:24:28 +02:00
PKEuS f869f7ebde Fixed false positive reademptycontainer when end() is called (#7560) 2016-07-10 10:48:21 +02:00
Simon Martin bae81fba05 Silent clang -Wshadow warning. (#812)
Add an optional extended description…
2016-07-09 19:07:58 +02:00
Alexander Mai 4eef5642c9 Avoid null pointer access in CheckBufferOverrun::runSimplifiedChecks 2016-07-09 19:00:59 +02:00
PKEuS ded8d80b23 Library: Support arguments with default value. Fixed default value handling for <container> tags broken in last commit. 2016-07-09 12:44:17 +02:00
PKEuS b5d3ecb942 Updated TinyXML, make use of second argument of XMLElement::Attribute() 2016-07-09 11:56:07 +02:00
Robert Reif c1594bedbb Fixed creation of SymbolDatabase for some template code (#7594) 2016-07-09 09:22:52 +02:00
PKEuS 44a19b527e Use ValueFlow and SymbolDatabase to detect buffer overflows with new and malloc, improving support for enums (#7576) 2016-07-08 20:53:08 +02:00
Robert Reif eca805ba3b ValueFlow: Fixed constant folding of sizeof(enum) and sizeof(enumerator) (#7564) 2016-07-08 20:39:34 +02:00
PKEuS a808549af0 Support lambdas in simplifyCompoundAssignment (#7571) 2016-07-08 20:10:33 +02:00
Roberto Martelloni 87372ccd58 CWE mapping of sizeofForArrayParameter, sizeofForPointer, sizeofDivisionMemfunc, sizeofwithnumericparameter, sizeofsizeof, sizeofCalculation, sizeofVoid, sizeofDereferencedVoidPointer, arithOperationsOnVoidPointer (#810) 2016-07-08 09:06:55 +02:00
Daniel Marjamäki a87b4368cb Revert "Preprocessor: Start replacing our Preprocessor code with simplecpp"
This reverts commit 9820783b60.

There was Travis errors I'll need to look more at.
2016-07-07 23:45:42 +02:00
Daniel Marjamäki 9820783b60 Preprocessor: Start replacing our Preprocessor code with simplecpp 2016-07-07 22:58:56 +02:00
PKEuS 644a216394 Fixed two false positives related to char arrays initialized by a literal:
- Run check for writing to string literals on non-simplified token list (#7283)
- Run buffer overrun checking for string literals on non-simplified token list (https://sourceforge.net/p/cppcheck/discussion/general/thread/2c33dfc5/)
2016-07-07 19:38:15 +02:00
PKEuS 3bdcf68990 Fixed false positive in CheckUnusedVar::checkFunctionVariableUsage(): Bailout when break; is encountered
See also: https://sourceforge.net/p/cppcheck/discussion/general/thread/1c169dc5/
2016-07-07 18:27:31 +02:00
Simon Martin 40eacb19b1 Ticket #7565: Handle numbers with several C++14 integer separators. 2016-07-01 23:24:28 +02:00
umanamente 0f11007c19 Fixed #7083 (false positive: typedef and initialization with strings) 2016-06-21 22:42:46 +02:00
PKEuS dde6f5eaea Do not warn about alloca() in C89 mode (#7558) 2016-06-20 09:30:41 +02:00
PKEuS 721bc32b2d Fixed crash in CheckVaarg::va_list_usage() (#7559) 2016-06-20 09:24:23 +02:00
Bartlomiej Grzeskowiak a5cfa2b12c - #7522 and #7428 revisited. ((a&7)>7U) is always false and ((X|7)>=6) is correct (X can be negative). 2016-06-17 12:12:53 +02:00
Daniel Marjamäki d1f06ff47c Fixed #7175 (False positive performance warning (buffer overwritten before its old content has been used)) 2016-06-13 15:46:43 +02:00
PKEuS 53e2cabdbb Properly support "break" in CheckVaarg::va_list_usage() (#7533)
Ran AStyle
2016-06-07 19:28:32 +02:00
PKEuS 321d2aeafb Set version to 1.74.99/1.75 dev 2016-06-07 19:19:58 +02:00
Roberto Martelloni f1c39dbda7 CWE mapping of stlIfStrFind, stlcstrReturn, stlcstrParam, stlSize, (#801)
StlMissingComparison, redundantIfRemove.
2016-06-05 18:24:06 +02:00
Daniel Marjamäki e7f1318d4b 1.74: set version 2016-06-05 18:21:33 +02:00
Daniel Marjamäki bab4f61bb2 astyle formatting
[ci skip]
2016-06-05 14:14:28 +02:00
Simon Martin 3c10b25b3e Ticket #7117: Properly detect if a const ternary operator is in a template parameter list. 2016-06-05 14:13:32 +02:00
Robert Reif 583b340034 enum: set the return type of derived class functions returning enums defined in a base class. 2016-06-05 14:08:33 +02:00
Simon Martin 3095f47a7b Ticket #7137: Properly detect C++14 digit separators. (#802)
Add an optional extended description…
2016-06-04 22:55:55 +02:00
PKEuS 9a61559eca Fixed false positive va_list_usedBeforeStarted (#7527) 2016-06-02 09:32:45 +02:00
Daniel Marjamäki 3eb0e9b6c0 astyle formatting
[ci skip]
2016-05-30 09:17:40 +02:00
Daniel Marjamäki c24a4b9189 Removed enum mismatch checker. Ticket #6960. 2016-05-29 18:00:37 +02:00
Robert Reif f4dd43a71a Fixed #7523 (Scope::findEnumerator(): does not find enum constant from other enum type) 2016-05-29 14:45:45 +02:00
Simon Martin 12a298b9cd Ticket #7445: Properly represent integer types smaller than int in CheckIO::ArgumentInfo. 2016-05-28 15:36:13 +02:00
Daniel Marjamäki 18fc288de9 Fixed #5582 (Crash when there is OOM) 2016-05-28 13:24:19 +02:00
Daniel Marjamäki 2b2f12bcd5 Fixed #6758 (Preprocessor: handle #__VA_ARGS__) 2016-05-28 11:27:45 +02:00
Daniel Marjamäki cee67730b1 Fixed #5746 (Cppcheck returns error-exitcode when globally suppressed error is encounted when running with multiple jobs.) 2016-05-27 20:13:51 +02:00
PKEuS 00e4f70fe3 Fixed false positives in CheckSizeof::checkSizeofForPointerSize() (#7518) 2016-05-26 21:25:29 +02:00
PKEuS 373ac52480 Mention exact function name in invalidscanf message (#5649) 2016-05-26 21:11:33 +02:00
Daniel Marjamäki 4b903a838f Fixed #5522 (CheckLeakAutoVar: Don't treat 'x==p' as dereference of p) 2016-05-26 19:22:38 +02:00
Daniel Marjamäki 2417f72c5e Silence Travis 2016-05-26 18:31:52 +02:00
Daniel Marjamäki 2a42f245a9 Fixed #7130 (Wrong assignmentInAssert when using lambda in predicate function) 2016-05-26 18:29:29 +02:00
Daniel Marjamäki 54be403f64 Fixed #7026 (Cppcheck does not recognizes the use of a variabile inside lambda function) 2016-05-26 18:07:56 +02:00
Daniel Marjamäki 38741868b5 Fixed #3989 (false positive: memory leak (inline function)) 2016-05-26 17:42:27 +02:00
Daniel Marjamäki 8b088a472f SymbolDatabase: Refactoring 2016-05-26 12:04:18 +02:00
Daniel Marjamäki f45233682e SymbolDatabase: Code cleanup 2016-05-26 12:00:03 +02:00
Robert Reif 66cacde3db Fixed #7513 (value flow of array dimension with enum doesn't always work) 2016-05-26 11:25:50 +02:00
Daniel Marjamäki 50352c8d69 Fixed #3552 (Don't warn about missing ctor for class inside union) 2016-05-25 19:05:16 +02:00
PKEuS c7b3836379 Small refactorizations:
- Optimized performance of several functions by adding pre-checks
- Simplified some code
- Fixed VS warning in testsymboldatabase.cpp
2016-05-25 15:30:49 +02:00
PKEuS 8c0eab3eb3 Optimization: Improved performance of CheckBufferOverrun::checkScope() when dealing with a large number of arrays (#5975)
-> checking time decreases from 1010s to 50s on the code snippet in #5975
-> Dropped a garbage code unit test
2016-05-25 14:42:00 +02:00
Daniel Marjamäki ae97f53244 Fixed #6184 (ValueType: overloaded < operator) 2016-05-25 13:56:36 +02:00
Matthias Krüger 0556edd151 fix #7505 (crash on invalid code) 2016-05-25 13:14:34 +02:00
PKEuS 728d4242dc Refactorizations in CheckBufferOverrun:
- Improved performance of CheckBufferOverrun::checkScope()
- Made some patterns less restrictive
2016-05-25 11:50:34 +02:00
PKEuS cda246da75 Refactorized CheckUnusedVar::checkStructMemberUsage(): Reimplemented check based on symboldatabase 2016-05-25 11:13:31 +02:00
PKEuS e22c177003 Optimized Tokenizer::setVarIdPass1(): Avoid costly std::stack<std::map<...>>::push/pop() operations for struct initializers 2016-05-24 23:15:09 +02:00
PKEuS 43bf1bb685 Refactorized CheckUnusedVar::checkStructMemberUsage(): Drastically reduced number of Token::findmatch() calls to improve performance 2016-05-24 23:10:39 +02:00
PKEuS 686cc6640e Refactorization: Improved performance of Tokenizer::simplifyMicrosoftMemoryFunctions() and Tokenizer::simplifyMicrosoftStringFunctions()
- Added pre-check before doing complex Token::Match() calls
- Use std::map instead of std::set
2016-05-24 21:19:20 +02:00
PKEuS f2ae295f1e Support char literals in CheckCondition::checkIncorrectLogicOperator() (#5912) 2016-05-24 15:08:48 +02:00
Daniel Marjamäki 06a594a9e0 Fixed #6207 ('not' misinterpreted as alternative C token) 2016-05-24 13:33:21 +02:00
Daniel Marjamäki 684966f674 Fixed #7509 (ValueType: wrong type for container element - std::array) 2016-05-24 09:07:38 +02:00
Daniel Marjamäki 397480f929 Fixed #7376 (ValueType: wrong type for container element) 2016-05-23 18:53:59 +02:00
Daniel Marjamäki 37afc57a2a Fixed #7455 (Suppressions: not working well with windows path separators) 2016-05-23 15:38:47 +02:00
Simon Martin ce05d23bb7 No need to use std::min() in normalizeCharacterLiteral. 2016-05-22 22:59:32 +02:00
PKEuS 4bb99a7887 Improved CheckSizeof::checkSizeofForPointerSize():
- Support cast in front of malloc() call
- Support sizeof(type) pattern (#4428)
2016-05-22 22:29:52 +02:00
Daniel Marjamäki beabe110fd setVarIdStructMembers: Fixed code so loop will terminate properly 2016-05-22 21:42:10 +02:00
Daniel Marjamäki 710e066a9a Fixed #6406 (VarId: struct member initialization) 2016-05-22 21:18:52 +02:00
PKEuS 64d2fd2f57 Added new attribute "arg" to <alloc> and <dealloc> to specify the argument that is allocated/deallocated.
This fixes several issues with allocation functions in windows.cfg, such as HeapAlloc() and VirtualAllocEx() (#7503)
2016-05-22 17:19:14 +02:00
PKEuS 851c6e0ed5 Improved buffer overflow checking for scanf: %c with a width (#3494) 2016-05-22 14:00:26 +02:00
Roberto Martelloni dce7128f30 CWE mapping of duplicateExpression, duplicateBreak (CWE561), unreachableCode, unsignedLessThanZero, unsignedPositive, pointerLessThanZero, pointerPositive, varFuncNullUB, nanInArithmeticExpression, commaSeparatedReturn, (#797)
ignoredReturnValue
2016-05-22 13:17:38 +02:00
Daniel Marjamäki 06d5e73e88 Fixed #7471 (Tokenizer::prepareTernaryOpForAST: typedef with comma inside ?:) 2016-05-22 11:33:21 +02:00
Daniel Marjamäki b7b92b2140 Fixed #6674 (false positive 'unusedPrivateFunction' - calling virtual function in subclass) 2016-05-21 20:07:35 +02:00
Daniel Marjamäki c23c1f245c Fixed #6989 (incorrect memleak error) 2016-05-21 14:03:28 +02:00
Daniel Marjamäki a5dc76d50c Refactoring, use ast instead of token list to find if variable is used in rhs 2016-05-21 13:45:08 +02:00
amai2012 b60b283c5b Merge pull request #796 from simartin/ticket_7452_follow_up
Address comments in PR#794 and alternative fix for ticket #7500.
2016-05-21 09:20:23 +02:00
Alexander Mai d492500f34 #5844 False positive: returnReference fp for inner lambda function 2016-05-20 23:46:56 +02:00
Simon Martin eb1b3db04a Address comments in PR#794 and alternative fix for ticket #7500. 2016-05-20 22:52:43 +02:00
Alexander Mai 303a85a930 #4195 segmentation fault of cppcheck (invalid code). Fix segfault which turned up after refactoring the enum handling code. 2016-05-17 22:19:23 +02:00
Alexander Mai 4f77a2b044 #7500 buffer overflow: encodeMultiChar lib/mathlib.cpp:343. Improve errors handling 2016-05-17 20:43:32 +02:00
Daniel Marjamäki 7453b641bd Fixed #4839 (Variable (in array) is assigned a value that is never used) 2016-05-17 16:03:55 +02:00
Daniel Marjamäki 99fc13ee70 Fixed #6968 (unusedPrivateFunction not correct, called by inner class) 2016-05-16 20:52:50 +02:00
Daniel Marjamäki 7fffc09b17 MathLib: Add #include for VS2013 2016-05-16 20:30:53 +02:00
Daniel Marjamäki 65998f1d7c CheckClass: previous change introduced false positives when Token::function() is wrong. Avoid those false positives. 2016-05-16 10:55:22 +02:00
Daniel Marjamäki bce15b1ade CheckClass: refactored the code, use symboldatabase instead of name comparisons when possible, fixed a FN. 2016-05-16 09:36:26 +02:00
amai2012 22542e7547 Merge pull request #794 from simartin/ticket_7452
Ticket #7452: Properly interpret escape sequences in character literals.
2016-05-15 20:35:50 +02:00
Daniel Marjamäki 2668cee3cf Fixed #6397 (FP deallocuse - conditional deallocation and conditional return) 2016-05-15 20:27:44 +02:00
Simon Martin 3af30e728c Ticket #7452: Properly interpret escape sequences in character literals. 2016-05-15 15:48:24 +02:00
Alexander Mai 9d1302d523 #7490 sizeof('a') should be sizeof(int) in C mode. Previous fix was hardcoding 4 for C. 2016-05-14 22:52:43 +02:00
Daniel Marjamäki 2cb03b3fd0 Fixed #7409 (Tokenizer: Links not set properly 'Data<T&&>') 2016-05-14 20:40:30 +02:00
Daniel Marjamäki 7591a57587 Removed redundant valuetype debug output 2016-05-14 20:11:57 +02:00
Daniel Marjamäki 5a1bea2a09 Fixed #7244 (False memory leak when POD is allocated with value initialization and pushed onto container) 2016-05-14 14:56:51 +02:00
Alexander Mai 251fc022fa #7490 sizeof('a') should be 4 in C mode 2016-05-14 13:05:44 +02:00
Roberto Martelloni afa8ad0ebe CWE mapping of selfAssignment, wrongmathcall, unpreciseMathCall, memsetZeroBytes, memsetFloat, memsetValueOutOfRange, clarifyCalculation, clarifyStatement 2016-05-14 10:13:33 +01:00
Kamil Dudka efe98883ab checkleakautovar: do not miss 'throw' followed by :: 2016-05-13 21:37:49 +02:00
Robert Reif 5631c765a7 SymbolDatabase: better handling when array size is given with expression involving enum constants. 2016-05-13 11:40:19 +02:00
Daniel Marjamäki 1d21cf5755 Tokenizer::setVarId: Refactoring, use continue in loops 2016-05-12 18:58:24 +02:00
Daniel Marjamäki 372763c85e Tokenizer: Refactoring, split up the big Tokenizer::setVarId() function 2016-05-12 18:20:20 +02:00
Daniel Marjamäki b04285514f Tokenizer: Refactoring; use early return 2016-05-12 15:51:30 +02:00
Daniel Marjamäki 613311cc57 Fixed #7493 (enumMismatch on Enum declaration) 2016-05-12 11:46:08 +02:00
Robert Reif 97bbb7da0d Fixed #7476 (SymbolDatabase: Wrong data with single ; in line) 2016-05-12 11:35:02 +02:00
Daniel Marjamäki 99d0dbf39c Tokenizer::setVarId: Refactoring, changed type name 2016-05-11 21:12:29 +02:00
Daniel Marjamäki b965cf5491 Fixed #7444 (Tokenizer::varId: Wrong varid when there is anonumous union in class) 2016-05-11 20:43:23 +02:00
Daniel Marjamäki bf8471e109 Fixed #7491 (Questionable enumMismatch) 2016-05-11 15:33:59 +02:00
Daniel Marjamäki fb5e6d8a7d Fixed #6960 (New check: enum variable is assigned mismatching value) 2016-05-10 20:22:35 +02:00
Daniel Marjamäki f0fcb859c7 Tokenizer: use static keyword instead of anonymous namespace for variables 2016-05-10 16:17:52 +02:00
amai2012 3dea23c99e Use new signature Tokenizer::createTokens 2016-05-09 17:14:51 +02:00
Daniel Marjamäki 8a13b5cd83 Fix Cppcheck warning 2016-05-09 13:08:00 +02:00
Daniel Marjamäki 9c8922541e Avoid C++11 for-range to make AppVeyor happy 2016-05-09 13:05:08 +02:00
Robert Reif 381fa53ec6 SymbolDatabase: better handling of enum values 2016-05-09 12:40:56 +02:00
Daniel Marjamäki eac3660f46 ValueType: Changed type info for enums to 'signed int', that is what checks wants to see mostly. 2016-05-09 11:11:13 +02:00
Daniel Marjamäki 1caa79c45f Tokenizer::simplifyPointerConst: Remove simplification. Its purpose was to avoid crash for garbage code (#6900). This fixes #7485. 2016-05-08 21:32:34 +02:00
Daniel Marjamäki e99a9b4742 SymbolDatabase: Fix cleanup (avoid dead pointers) 2016-05-08 18:34:23 +02:00
Daniel Marjamäki 6f1af2cf0a ValueType: Set ValueType info in simplified token list 2016-05-08 17:57:26 +02:00
Daniel Marjamäki 7edb1bc2e2 Fixed #7484 (ValueType: crash with --debug --verbose) 2016-05-08 17:43:34 +02:00
Daniel Marjamäki e355e4ac78 ValueType: Refactoring 2016-05-08 17:42:53 +02:00
Daniel Marjamäki 803b4d4cf8 ValueType: Better handling of nested types 2016-05-08 14:55:10 +02:00
Daniel Marjamäki 636e97c272 ValueType: Improved debug output for nested types 2016-05-08 13:15:20 +02:00
Daniel Marjamäki f0953c6916 ValueType: better handling of nonstandard types 2016-05-08 11:55:25 +02:00
Daniel Marjamäki b94eaeca6a ValueFlow: For convenience, return constant folded value 2016-05-08 11:17:10 +02:00
Daniel Marjamäki b26dd1ccab ValueFlow: Handle enums 2016-05-07 20:18:07 +02:00
Daniel Marjamäki ad2d3394c8 Tokenizer: Create syntax tree before creating symboldatabase 2016-05-07 19:56:28 +02:00
Daniel Marjamäki be90080976 Fixed #7481 (False positive AssignmentAddressToInteger - pointer to enum) 2016-05-07 19:51:37 +02:00
Alexander Mai 4e9afac92f Update Makefile. Replace another NULL by nullptr 2016-05-07 17:35:00 +02:00
amai2012 eba1b0881d Minor refactoring: use nullptr (instead of 0/NULL), change signature of Tokenizer::createTokens 2016-05-07 16:30:54 +02:00
PKEuS 5d5886b464 Properly detect binary & in CheckCondition::clarifyCondition() (fixes false positives when self-checking cppcheck) 2016-05-06 17:39:41 +02:00
PKEuS 896582ce56 Fixes for CheckStl::string_c_str():
- Fixed false positive #7480
- Fixed false negative: Show performance message also for non-local objects
2016-05-06 17:25:00 +02:00
PKEuS 3366a74bb0 Refactorized CheckCondition::clarifyCondition():
- Reimplemented parts of the check based on ValueType
- Merged two loops

Fixed some type conversion messages
2016-05-06 15:22:45 +02:00
PKEuS 0bf85f9aa5 ValueType: Support integers defined in libraries (#7394) 2016-05-04 15:39:56 +02:00
PKEuS 6c3f0a7bb8 SymbolDatabase: Properly detect lambdas with return type (#7473) 2016-05-04 14:10:09 +02:00
PKEuS f0fb7a8245 Simplify __attribute__ earlier (#7462) 2016-05-04 13:51:34 +02:00
PKEuS 17ccb0fbe6 CheckClass::checkMemsetType(): Skip arrays of pointers (#7456) 2016-05-04 13:38:36 +02:00
PKEuS 21b51dd235 Check64BitPortability::pointerassignment(): Skip over lambdas (#7451) 2016-05-04 13:23:50 +02:00
PKEuS b65cacf4b1 Tokenizer::simplifyStaticConst(): Support "struct" and operator:: (#7403) 2016-05-04 12:33:19 +02:00
PKEuS f23668dfcc Fixed false positive doubleFree (#7401) 2016-05-04 12:14:42 +02:00
PKEuS 23202d9442 Fixed bailoutFunctionPar() for temlate functions (#7396) 2016-05-04 11:38:29 +02:00
PKEuS b7d8cd69f6 Fixed false negatives in CheckStl::string_c_str():
- Support more complex patterns (#7385)
- Use same logic for string_c_strReturn() as for string_c_strError()
2016-05-04 11:10:12 +02:00
Roberto Martelloni 01aaa56740 CWE mapping of redundantCopy, redundantAssignment, constStatement, charBitOp, variableScope, redundantAssignInSwitch, redundantCopyInSwitch, switchCaseFallThrough 2016-04-29 18:01:37 +01:00
amai2012 a54ec615f3 Run astyle 2016-04-25 11:12:35 +02:00
amai2012 479f00030e Restore compatibility with current C++ language set specification (VS2010) 2016-04-24 23:02:56 +02:00
amai2012 7a8a6695a4 Merge pull request #786 from prozak/master
- fix for #5749 defect: internal error
2016-04-24 22:19:02 +02:00
Daniel Marjamäki 0635ceb42a Replaced C++11 auto keyword 2016-04-23 09:18:28 +02:00
Robert Reif ee2be81fae enums: Fix false negatives caused by new enum handling 2016-04-22 20:26:58 +02:00
PKEuS 7ff90e7fae Set version to 1.73.99/1.74 dev 2016-04-22 16:55:19 +02:00
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 00a584d8d1 astyle formatting 2016-04-22 06:01:34 +02:00
Bartlomiej Grzeskowiak 7e020e1d92 - fix for #7428 false negative: Statement is always false 2016-04-14 14:50:08 +02:00
Roberto Martelloni e89cd1b8a4 CWE mapping of unsafeClassCanLeak, zerodivcond, invalidPointerCast, redundantCopy, redundantAssignment, comparisonFunctionIsAlwaysTrueOrFalse, checkCastIntToCharAndBack, cstyleCast, passedByValue, clarifyCondition, exceptThrowInDestructor, exceptDeallocThrow, exceptRethrowCopy, catchExceptionByValue, fflushOnInputStream, seekOnAppendedFile, publicAllocationError
CWE mapping of unsafeClassCanLeak, zerodivcond, invalidPointerCast, redundantCopy, redundantAssignment, comparisonFunctionIsAlwaysTrueOrFalse, checkCastIntToCharAndBack, cstyleCast, passedByValue, clarifyCondition, exceptThrowInDestructor, exceptDeallocThrow, exceptRethrowCopy, catchExceptionByValue, fflushOnInputStream, seekOnAppendedFile, publicAllocationError
2016-04-12 19:29:40 +02:00
Daniel Marjamäki b6d3aefba6 1.73: Set versions 2016-04-08 20:46:59 +02:00
amai2012 f5e8a72dc2 #7438 Incorrect alloca() avoidance suggestion 2016-04-08 11:21:53 +02:00
Robert Reif 47634a0ada Fixed #7420 ((debug) Executable scope 'foo' with unknown function.) 2016-03-22 14:10:20 +01:00
Daniel Marjamäki ac8341e3de keep type suffixes after constant folding using bit operations 2016-03-21 21:20:02 +01:00
Daniel Marjamäki 4e4873772d Fixed #7395 (ValueType: Result type of assignment operators) 2016-03-21 19:51:09 +01:00
Daniel Marjamäki 072120d19f TemplateSimplifier::templateParameters: Handling r-value arguments 2016-03-18 11:09:41 +01:00
Robert Reif 100c4276ea Fixed #7424 (value type: wrong sign) 2016-03-18 10:30:57 +01:00
Dmitry-Me 12a5f2509b These conditions are mutually exclusive 2016-03-03 18:01:15 +03:00
Dmitry-Me 3bcd0e0535 Reduce variable lifetime 2016-03-02 19:07:20 +03:00
Daniel Marjamäki 253bfe432c Fixed #7410 (Tokenizer: function pointer with throw()) 2016-02-29 08:02:02 +01:00
Daniel Marjamäki c5c376513b Fixed #7102 (Preprocessor: skip __cplusplus sections in headers when .c file is checked) 2016-02-29 07:34:06 +01:00
Alexander Mai 0533d7bf9c Run astyle + minor refactoring 2016-02-27 16:03:50 +01:00
Roberto Martelloni d3645d874e Mapped toomanyconfigs ,AssignmentAddressToInteger
,AssignmentIntegerToAddress ,CastIntegerToAddressAtReturn
,CastAddressToIntegerAtReturn ,assertWithSideEffect ,assignmentInAssert
,uselessAssignmentArg ,uselessAssignmentPtrArg
,comparisonOfFuncReturningBoolError
,comparisonOfTwoFuncsReturningBoolError ,comparisonOfBoolWithBoolError
,incrementboolean ,comparisonOfBoolWithInt ,compareBoolExpressionWithInt
,negativeIndex ,pointerOutOfBounds ,arrayIndexThenCheck
,possibleBufferAccessOutOfBounds ,argumentSize
,arrayIndexOutOfBoundsCond ,noConstructor ,copyCtorPointerCopying
,noCopyConstructor ,uninitMemberVar ,operatorEqVarError
,unusedPrivateFunction ,memsetClassFloat ,mallocOnClassWarning
,operatorEq ,thisSubtraction ,operatorEqRetRefThis ,operatorEqToSelf
,useInitializationList ,duplInheritedMember ,assignIfError
,comparisonError ,multiCondition ,mismatchingBitAnd
,oppositeInnerCondition ,incorrectLogicOperator ,redundantCondition
,moduloAlwaysTrueFalse to their CWEs ids.
2016-02-26 23:53:52 +00:00
Alexander Mai 41dee7f970 #7399 CMake error: Cannot specify link libraries for target 'testrunner' (reported by user dbuchholz). Add comment to mathlib.h 2016-02-19 21:40:31 +01:00
Alexander Mai 5c2960713f Correct false positives compareBoolExpressionWithInt (0U) 2016-02-19 21:38:54 +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
Alexander Mai 17bb07d522 #6913 max-configs=1 buggs out includefile resolving in case of circular dependency. Use simplified paths for internal list of includes parsed already 2016-02-14 11:51:18 +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
Dmitry-Me 1f27c4b76b Merge pull request #771 from Dmitry-Me/charUsedAsArrayIndex
Portability warning when 'char' type is used as array index
2016-02-10 20:11:38 +03:00
Daniel Marjamäki 3da997e163 astyle formatting
[ci skip]
2016-02-08 10:44:04 +01:00
Daniel Marjamäki 1ab5805d98 Fixed #6616 (valueFlowForward: for loop, variable in 3rd expression is changed in loop body) 2016-02-08 10:43:41 +01:00
Dmitry-Me c3399493ef Portability warning when 'char' type is used as array index 2016-02-08 10:08:35 +03:00
Daniel Marjamäki c63d5cb1ae CheckLeakAutoVar: fix in VarInfo::erase for referenced. 2016-02-07 19:54:32 +01:00
Daniel Marjamäki a361f0192d More CheckLeakAutoVar debug output 2016-02-07 19:53:55 +01:00
Daniel Marjamäki 34b5e0ce99 Fixed #6873 (False positive uninitvar - variable initialized via pointer) 2016-02-07 18:48:57 +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 7bd034c009 Fixed #7369 (False positive knownConditionTrueFalse - assertions) 2016-02-06 14:37:44 +01:00
PKEuS b3a0d418e6 Refactorization: Compare only as much characters as necessary in Preprocessor
Fixed internal message
2016-02-05 21:06:07 +01:00
PKEuS c66db46f66 Use ValueType in CheckOther::checkSignOfUnsignedVariable()
Fixed travis: replaced std::string::pop_back by std::string::substr
2016-02-05 20:43:06 +01:00
PKEuS 0847d3d19a ValueType related bugfixes:
- ptrdiff_t is SIGNED
 - Detect pointers to unknown types as pointers
 - Do not identify bool* as boolean (#7381)
2016-02-05 20:29:17 +01:00
PKEuS b4b38fb7ce Use ValueType in CheckOther::invalidPointerCast()
False negative: operator new is currently not supported by ValueType.
2016-02-05 20:28:43 +01:00
PKEuS 4b3feebbcd Refactorization: Reordered some conditions in checktype.cpp 2016-02-05 20:28:43 +01:00
PKEuS 6215a48dc9 Support member variables in CheckBool::checkAssignBoolToFloat() 2016-02-05 20:28:42 +01:00
PKEuS e71e9bd538 CheckBool: Rely on ValueType, removed a redundant check 2016-02-05 15:48:51 +01:00
PKEuS 618ea498e9 ValueType: Support logical operators 2016-02-05 15:15:13 +01:00
PKEuS 35317695d4 ValueType: Fixed handling of constness 2016-02-05 13:31:31 +01:00
PKEuS 792835cd9a ValueType: Support ++/--. 2016-02-05 12:06:44 +01:00
PKEuS 2b179dc836 ValueType: Properly support ternary operator with pointers (#7378) 2016-02-05 09:59:48 +01:00
Daniel Marjamäki 07f3930923 report progress in TemplateSimplifier::simplifyTemplateInstantiations, as far as I see it can be very slow 2016-02-05 07:59:29 +01:00
PKEuS 3b7948fb4e ValueType: Support ternary operator 2016-02-04 21:20:05 +01:00
PKEuS a9f52aec04 ValueType: Support unary arithmetical/bit operators 2016-02-04 21:03:54 +01:00
PKEuS cae19cadd3 ValueType: Added support for static member variables and simplified code 2016-02-04 20:49:13 +01:00
PKEuS b801386ac8 Fixed bug in Token::findClosingBracket() and broken unit test (#7277) 2016-02-04 10:00:54 +01:00
Alexander Mai d3546ea410 #7321 segmentation fault in valueFlowSwitchVariableScope::isVariableDeclaration 2016-02-03 22:49:57 +01:00
Alexander Mai cfe9c01bf8 #7257 segmentation fault in valueFlowSwitchVariable (invalid code). Correct SymbolDatabase::validateVariables() so it does not complain about function arguments for function without body 2016-02-03 21:52:02 +01:00
PKEuS bd61b9e7b7 Merge pull request #776 from boos/cwe-mapping-0
Mapped 17 error ids to their CWEs …
2016-02-03 17:54:53 +01:00
Alexander Mai d45f5c94cb Add (disabled) function in SymbolDatabase to check variable list (e.g. find variables w/o scope). Fix some doxygen warnings. 2016-02-03 17:08:46 +01:00
Roberto Martelloni 50fc784550 Mapped error ids stlBoundaries, stlcstr, useAutoPointerContainer, useAutoPointerArray, sprintfOverlappingData, strPlusChar, shiftTooManyBits, integerOverflow, uninitstring, uninitdata, uninitvar, uninitStructMember, deadpointer, va_start_referencePassed, va_end_missing, va_list_usedBeforeStarted, va_start_subsequentCalls to their CWEs. 2016-02-03 12:53:23 +00:00
Alexander Mai d12197ce1a Minor refactoring, removing a redundant condition introduced in the previous changeset 2016-02-03 12:54:44 +01:00
Alexander Mai ca2e3b9abb #7370 False positive uselessCallsCompare on unknown type. Ensure related warnings are only issued on STL types 2016-02-02 20:26:02 +01:00
PKEuS e063e97831 Fixed bug in Token::swapWithNext(): swap _link correctly 2016-02-02 17:47:36 +01:00
PKEuS d8b75e3492 Fixed several bugs when deleting and swapping tokens 2016-02-02 17:30:14 +01:00
PKEuS 841f17776b Set ValueType for assignment operators, detect division by zero for %= and /= again (#7322) 2016-02-02 17:17:55 +01:00
PKEuS 4b9241f643 Removed support for patterns like |a|b and a||b (equal to a|b|)
-> Improved performance by 1,3% (non-matchcompiled build)
2016-02-02 11:46:42 +01:00
PKEuS d19b5031fa Refactorization: Removed unused function. 2016-02-02 11:46:42 +01:00
Alexander Mai 89c9528fdc Small optimization of TokenList::validateAst() 2016-02-02 08:55:26 +01:00
Daniel Marjamäki 39a5400b7d Fix xml output for invalid chars (#6431) 2016-02-01 18:53:46 +01:00
Alexander Mai a288d5eb16 #7027 TokenList::validateAst() did not detect broken AST with endless recursion 2016-01-31 22:16:58 +01:00
Daniel Marjamäki 5784aec407 Settings: fixed defaultSign, it only applies to char 2016-01-31 14:40:06 +01:00
Daniel Marjamäki 988918c9bc ValueType: Use signed as default sign for short/int/long/longlong 2016-01-31 14:34:26 +01:00
PKEuS c831577322 Removed handling of misspelled error ID stlBoundaries in Suppressions 2016-01-31 14:06:47 +01:00
Daniel Marjamäki b54613a942 Fixed #7046 (constexpr value used as template parameter reported as not used) 2016-01-31 12:39:43 +01:00
PKEuS 9d2258677d Improved CheckOther::checkUnusedLabel(): Write a warning instead of a style message if it happens inside a switch() 2016-01-31 12:07:24 +01:00
Daniel Marjamäki c7f5ca74bd VarId: Set varid for template parameters (#7046) 2016-01-31 11:07:30 +01:00
PKEuS 6d0c2f7253 Fixed false positive useClosedFile when noreturn function is called (#7359) 2016-01-31 10:39:35 +01:00
PKEuS 0e8777ec99 Fixed crash on garbage code (#7356) 2016-01-31 10:25:09 +01:00
PKEuS c31f7c7a48 Improved flags in gui.pro:
- shlwapi.lib is not necessary if dynamic linking is used
- Do not define _CRT_SECURE_NO_WARNINGS explicitly, it gets defined anyway.
2016-01-31 10:10:48 +01:00
PKEuS 4d01af3fe1 Fixed false positive in CheckMemoryLeakStructMember when returning a member that has been allocated (#7302). 2016-01-31 10:10:48 +01:00
Daniel Marjamäki f6161c6f89 CheckUnusedVar: My fix for #4955 was a quick fix causing false negatives. Fix some FN and add TODO to handle other FN better. 2016-01-31 09:11:52 +01:00
Daniel Marjamäki d5884692df Fixed #7363 (valueflowOppositeCondition - if (size1 > size2) ... else if (size1 < size2) ...) 2016-01-30 22:13:03 +01:00
PKEuS 3b046b42a6 Support function pointers in CheckUnusedVar::checkFunctionVariableUsage_iterateScopes() (#7194) 2016-01-30 20:59:55 +01:00
Daniel Marjamäki b908bb18a9 Fixed #5503 (FP: Uninitialized variable - initialize in in if and else branch) 2016-01-30 20:48:28 +01:00
PKEuS 923f7f843d Better distinguishing between possible and known null pointer dereferenciations (#7157) 2016-01-30 20:43:40 +01:00
Matthias Krüger 11be3a9265 fix internal warning: [lib/valueflow.cpp:722]: (warning) Found simple pattern inside Token::Match() call: "if (" 2016-01-30 20:34:33 +01:00
PKEuS 5d9f275ff8 Fixed false positive uninitMemberVar with member function of template (#7205) 2016-01-30 20:18:13 +01:00
PKEuS 23ad881c64 Fixed false positive returnLocalVariable (#7180) 2016-01-30 20:18:12 +01:00
Daniel Marjamäki 30f2bb7796 ValueFlow: set known value for opposite condition in else if (#5503) 2016-01-30 20:03:55 +01:00
Daniel Marjamäki fd67ca146d Fixed #4955 (false positive: Variable 'i' is assigned a value that is never used (only used in template instantiation)) 2016-01-30 16:49:39 +01:00
Daniel Marjamäki 0e89620212 Fixed #4698 (False positive: Uninitialized member variable warning with confusing namespaces) 2016-01-30 14:04:48 +01:00
Daniel Marjamäki f3f9ea2d09 TemplateSimplifier: One more fix for #3130. Restored max recursion count to 100 and improve pattern for reference template instantiations instead. 2016-01-30 11:22:44 +01:00
Daniel Marjamäki f116de678e Fixed #3130 (Tokenizer: Doesn't instantiate recursive template correctly) 2016-01-30 10:33:25 +01:00
Daniel Marjamäki fa31ebf88e Fixed #7349 (checker 'inefficient find()' unintentionally used for find_first_of()) 2016-01-29 08:55:46 +01:00
Daniel Marjamäki b5986f6ad2 Fixed #7358 (valueflow: value is not known after conditional assignment) 2016-01-27 19:20:00 +01:00