Commit Graph

7669 Commits

Author SHA1 Message Date
Daniel Marjamäki 31337dda27 ValueFlow: Better handling of && and || in for loop to avoid FP 2016-12-11 21:19:24 +01:00
Daniel Marjamäki d4f2512421 Tokenizer::simplifyKnownVariables: Added bailout when pointer alias is simplified and loop is encountered 2016-12-11 19:12:23 +01:00
Frank Zingsheim e0d4720e19 Fix #7829 (false-positive: knownConditionTrueFalse linked to virtual method)
Return values of virtual functions in valueflow are only possible values
since function might be overloaded.
2016-12-11 10:44:05 +01:00
Daniel Marjamäki 87abe1174f floatConversionOverflow: Avoid warnings when 255.5 is converted to unsigned char etc. 2016-12-10 23:14:40 +01:00
Daniel Marjamäki b098d5fbd6 ValueFlow: We need better handling of casts 2016-12-10 22:09:01 +01:00
PKEuS 120fe2e4d6 Fixed false positive: The function 'operatorstd::string' is never used. (#7853) 2016-12-08 13:54:54 +01:00
PKEuS cfac3b457d Several small refactorizations 2016-12-06 22:12:02 +01:00
Daniel Marjamäki 7fc9fbc746 synthetic: reduce controlflow testcases 2016-12-06 21:45:51 +01:00
PKEuS 40401534d7 Refactorized Library 2016-12-06 14:50:27 +01:00
PKEuS 2f6350a0d0 Refactorized Library 2016-12-06 14:09:28 +01:00
PKEuS d665641a76 Refactorizations:
- use std::string::pop_back() and std::string::back()
- pass argument as const std::string&
- Moved iterator into for loop head
2016-12-05 14:50:01 +01:00
Daniel Marjamäki 5df8e7f50c Fixed #7596 (ValueFlow: better handling for 'x*(1-x-1)') 2016-12-04 22:39:59 +01:00
Daniel Marjamäki c12cb69cc2 ValueType: Handle function pointers 2016-12-04 16:02:50 +01:00
Daniel Marjamäki 9c69546d72 Fixed #7842 (Preprocessor::getConfigs: #error in #ifndef not handled well) 2016-12-03 11:59:48 +01:00
orbitcowboy 8a45c3192b There is not need to clear a string directly after its creation. 2016-11-30 10:39:14 +01:00
PKEuS 36d12d7866 SymbolDatabase: Function::retDef should not point at "static" or "extern" 2016-11-28 17:23:39 +01:00
Stefan Weil 57b57428c2 Fix some typos in comments (found by codespell)
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2016-11-27 11:40:42 +01:00
Daniel Marjamäki b6cba4a55c Fixed #7784 (Token: can't be both type and variable) 2016-11-26 22:39:47 +01:00
orbitcowboy 55ae961ac2 std.cfg and windows.cfg: Improved support for <use-retval/> for functions like ftell(), [f]get[w]c(). 2016-11-26 21:31:15 +01:00
orbitcowboy 8a0f856e95 Fixed regression in test/cfg/std.c introduced by b0d09926fb. 2016-11-26 21:14:31 +01:00
Matthias Krüger 213589ee68 ValueFlow: don't perform UB when a function returns shifts of/by negative values. Fixes #7814. 2016-11-24 23:23:47 +01:00
Daniel Marjamäki a61f4e9c94 Fixed #7831 (false-positive: terminateStrncpy) 2016-11-24 07:04:58 +01:00
Matthias Krüger cf24ea5221 fix #7783: false positive knownConditionTrueFalse on assert(0 && "message"). 2016-11-23 21:54:38 +01:00
Daniel Marjamäki e1a3c0955a synthetic tests: Added run-clang.sh 2016-11-23 14:49:46 +01:00
Matthias Krüger 01e5f14bf8 CheckClass::virtualDestructorError and a variation of CheckNullPointer::nullPointerError would print inconclusive,warning messages altough no --enable=warning was given. Fix. 2016-11-23 00:13:09 +01:00
Daniel Marjamäki 0b3751520b Add a check for float conversion overflows 2016-11-22 22:37:13 +01:00
Daniel Marjamäki 8870195794 Synthetic: Add run-lint.bat script 2016-11-22 19:25:05 +01:00
PKEuS 02d8f691f8 Fixed false positive: Do not show useInitializationList message for enums 2016-11-22 12:09:30 +01:00
Daniel Marjamäki aff84daff3 synthetic tests: renamed functions 2016-11-22 11:37:15 +01:00
Daniel Marjamäki d40f4e4a55 Fixed #7778 (valueFlowAfterAssign: alias) 2016-11-21 17:26:36 +01:00
Daniel Marjamäki 21364b4401 Refactoring fix for #7816 2016-11-21 13:54:59 +01:00
amai2012 933815ee54 #7816 Segmentation fault at Tokenizer::simplifyAttribute() for stand-alone void. Throw syntax error on incomplete code 2016-11-21 12:19:47 +01:00
Daniel Marjamäki 74fa69fe5e Fixed #7821 (syntax error, first token is &) 2016-11-20 17:59:50 +01:00
Frank Zingsheim c8ff96fe8f Fixed #6180 (Usage of variable after std::move or std::forward) 2016-11-20 15:14:49 +01:00
PKEuS e23dc5c1e2 Fixed wrong message shown if unused label appears directly after a switch() scope 2016-11-20 14:43:54 +01:00
Matthias Krüger d3919b23fa testrunner: testgarbage: test-function was not called, fix. 2016-11-20 14:36:36 +01:00
Daniel Marjamäki 5b377ea2e4 Fixed #7821 (segmentation fault, invalid last token) 2016-11-20 14:15:51 +01:00
Daniel Marjamäki 79fc332511 Fixed #7810 (SymbolDatabase: method with redundant scope info) 2016-11-17 22:45:50 +01:00
Daniel Marjamäki e1e9eacccc ValueFlow: Added float type 2016-11-13 22:59:56 +01:00
Daniel Marjamäki 7ebfb10edd Fixed #7806 (ValueFlow: better handling of subfunction with early return) 2016-11-13 18:19:51 +01:00
Daniel Marjamäki 621c1e59c6 --project: handle SolutionDir and ProjectDir. This is a partial fix for #7791. custom build macros are still not handled. 2016-11-11 16:22:14 +01:00
Daniel Marjamäki b04f6fb359 bump simplecpp to rev d1c995c03515d289c7aa7246a74d666fd012c4eb 2016-11-10 20:04:05 +01:00
Daniel Marjamäki 4de5dc75aa Fixed #7807 (false positive: (error) Signed integer overflow for expression 'int32_max-1'.) 2016-11-07 22:29:40 +01:00
Daniel Marjamäki 684e78f54e synthetic test: fix compiler errors 2016-11-07 09:30:17 +01:00
Daniel Marjamäki ea087e6188 synthetic test: renamed tests. tweak report. 2016-11-07 08:48:38 +01:00
Daniel Marjamäki ac7b351d1e ValueFlow: Don't calculate x<<64 and x>>64 2016-11-06 20:40:58 +01:00
Daniel Marjamäki dd69d5eabe ValueFlow: Don't calculate result when there is UB 2016-11-06 17:42:01 +01:00
Alexander Mai ee11f0974a #7769 segmentation fault at setTokenValue() on invalid code. 2016-11-06 14:20:58 +01:00
Daniel Marjamäki 0ddd82d1d5 test/synthetic: added pointer alias test case. renamed functions. 2016-11-05 16:56:30 +01:00
Daniel Marjamäki f280061ff8 signed int overflow: warn about intmax+1 2016-11-05 09:29:52 +01:00
Daniel Marjamäki 2885a75ea6 ValueFlow: handle ~ in setTokenValue 2016-11-05 09:29:22 +01:00
Daniel Marjamäki 40bf269ea0 Add report.py that generates report for synthetic tests 2016-11-04 22:16:46 +01:00
Daniel Marjamäki f5046959b3 minor updates in synthetic tests 2016-11-04 22:15:41 +01:00
Daniel Marjamäki 8e8194ee0f try to make synthetic tests more explicit 2016-11-04 19:32:42 +01:00
orbitcowboy 919f8ac323 Fixed typos. There are no real changes. 2016-11-04 15:01:05 +01:00
orbitcowboy ed453d24da std.cfg: Added returnValue support for iswdigit(). 2016-11-04 14:20:59 +01:00
orbitcowboy 75124317e9 std.cfg: Added returnValue support for iswblank(). 2016-11-04 14:03:48 +01:00
Daniel Marjamäki 469ca6af1b Add synthetic ub tests 2016-11-03 21:45:33 +01:00
Daniel Marjamäki 6e9346323c tweak synthetic tests 2016-11-03 20:16:49 +01:00
Daniel Marjamäki 506d1ed68d synthetic tests: add ub.c 2016-11-03 14:51:18 +01:00
Daniel Marjamäki 0836b999cf update synthetic tests. removed uninit.c because there was not enough diversity. my goal is to have few tests with much diversity. 2016-11-03 09:40:22 +01:00
Matthias Krüger c6c17c89c9 synthetic tests: add "make clean", make CC settable via env flags. 2016-11-02 19:02:10 +01:00
Daniel Marjamäki ad6c82b2ca Added Makefile to compile synthetic tests 2016-11-02 13:57:29 +01:00
Daniel Marjamäki 50d6a23f93 test/synthetic/uninit.c : add more tests 2016-11-02 12:35:08 +01:00
Daniel Marjamäki ca19861aaa Add some synthetic tests 2016-11-02 11:07:04 +01:00
Daniel Marjamäki 18f466a880 Test std::for_each 2016-11-02 10:01:56 +01:00
Daniel Marjamäki fd67bbf2d3 Test std::count and std::count_if 2016-11-02 09:57:35 +01:00
Daniel Marjamäki 12319d705e Try to fix 'make checkcfg' 2016-11-02 09:50:37 +01:00
Daniel Marjamäki b90a17f64f Test std::all_of, std::any_of, std::none_of 2016-11-02 09:29:15 +01:00
Daniel Marjamäki 6e762659c0 Test std::find_if and std::find_if_not 2016-11-02 09:13:54 +01:00
Daniel Marjamäki 223ce04986 Merge pull request #841 from zingsheim/FunctionParameter
Function parameter
2016-11-01 21:58:52 +01:00
Daniel Marjamäki 0e9810b7f6 CheckStl: validation of iterators returned from functions 2016-11-01 14:08:42 +01:00
Frank Zingsheim d4f01583b6 Fixed TODO (check if function parameter is non-const reference etc..) by common function 2016-11-01 14:06:30 +01:00
Daniel Marjamäki 476789c1a7 Remove unused variable in test 2016-11-01 12:44:31 +01:00
Daniel Marjamäki 7f71ad8360 Test std::find() 2016-11-01 12:25:23 +01:00
Daniel Marjamäki ea545e63c8 astyle formatting
[ci skip]
2016-10-27 17:11:32 +02:00
Daniel Marjamäki f6a5f6bb61 CheckStl::mismatchingContainers: Refactoring, use Library instead of hardcoding 2016-10-27 10:25:45 +02:00
Harald Scheidl 0de47f709e Fixed #7755 (false positive: member variable is not initialized in the constructor) 2016-10-26 10:39:53 +02:00
Robert Reif 4216b26b8c Fixed #7775 (crash at valueFlowSetConstantValue) 2016-10-26 10:36:02 +02:00
Frank Zingsheim 0162f76c63 TestIO: Refactoring. Use functions instead of macros. 2016-10-24 21:43:58 +02:00
Robert Reif f25d205999 Fixed #7767 (SymbolDatabase: function not analysed when unknown macros are in front of function definition) 2016-10-22 22:29:18 +02:00
Daniel Marjamäki 8a0f3009ff ValueFlow: inner and outer function return values 2016-10-22 17:22:57 +02:00
Daniel Marjamäki 77cd6c194f ValueFlow: Set 'known' property for function return values 2016-10-22 12:24:15 +02:00
Daniel Marjamäki 213f9c1fc8 Fix testrunner 2016-10-21 02:20:51 +02:00
Daniel Marjamäki 86a620a3b4 ValueFlow: Better handling of function return value when there are 0 parameters 2016-10-20 16:10:55 +02:00
Daniel Marjamäki 7242e661ef checkcfg: add missing inline suppression for ignoredReturnValue of abs() 2016-10-18 22:35:54 +02:00
Matthias Krüger 0b6db67de2 checkcfg: add missing inline suppression for ignoredReturnValue of abs() 2016-10-18 22:20:06 +02:00
Daniel Marjamäki efa3aba32a Remove Tokenizer::simplifyNull() 2016-10-18 21:44:02 +02:00
Daniel Marjamäki 9cea2d6dfa Tokenizer: Removed simplifications of standard functions that should be handled through configuration. 2016-10-18 19:25:58 +02:00
Dmitry-Me d2e667ae7b Put apostrophes consistent with other similar messages 2016-10-18 15:45:08 +03:00
orbitcowboy d5a145f288 std.cfg: Added <returnValue> information to isblank(). 2016-10-18 11:00:12 +02:00
Daniel Marjamäki 4587dfffd8 Fix -Wshadow warnings 2016-10-17 15:45:16 +02:00
Daniel Marjamäki 57c5e0be3a test that abs,isdigit,strlen are calculated properly 2016-10-17 14:16:08 +02:00
Daniel Marjamäki 90ed7634b8 MathLib: fix for octal char literal '\200' 2016-10-16 13:42:20 +02:00
Daniel Marjamäki 5175bf88d6 Platform: Fix type limits calculations. sizeof=>bit 2016-10-16 12:00:33 +02:00
Daniel Marjamäki c70987b727 ValueType: fix type of integer literals 2016-10-16 11:36:22 +02:00
Daniel Marjamäki 7fb812f415 Fixed #7752 (ValueFlow: no conditional value, probably because condition is in ternary operator and/or in function call.) 2016-10-16 07:15:28 +02:00
Daniel Marjamäki ad74421526 Fixed #7756 (ValueFlow: fix bug in valueAfterAssign, same variable in lhs and rhs) 2016-10-15 19:09:50 +02:00
Daniel Marjamäki d09a8dde57 Improved char literal handling. In the 'normal' tokenlist these should not be simplified to integer literals. 2016-10-12 10:20:24 +02:00
Miika-Petteri Matikainen 26816ed954 Fixes preprocessor regression causing hang
Cppcheck 1.76 introduced a regression in preprocessor which causes
the following code to hang:

    $ cat > test.c << EOF
    #ifndef Y
    #else
    #endif
    EOF
    $ cppcheck -D BAR --force test.c
    Checking test.c ...
    ^C

This used to work with version 1.75. Git bisect reveals that this
regression was caused by commit:
ff036c8742

This commit fixes the regression by avoiding infinite loop in
hasDefine(). If cfg is empty string "", we can skip the whole loop
and exit early.
2016-10-11 19:56:13 +03:00
PKEuS 1715969f6f Support prefix-increment/decrement in CheckAutoVariables::assignFunctionArg() (#3177) 2016-10-10 21:34:40 +02:00
PKEuS 1227a3f596 Improved check: Complain if a variable is modified but not used again 2016-10-10 21:27:40 +02:00
Daniel Marjamäki af5dd2c29e New check: Pointer overflow (null pointer subtracted) 2016-10-09 15:15:29 +02:00
Harald Scheidl 58eb644003 Improved Check: Warn about number and char literals in boolean expressions (#7750) 2016-10-09 13:21:00 +02:00
Daniel Marjamäki 0e785e435e charLiteralWithCharPtrCompare: Improved warning to catch any char literal 2016-10-09 11:39:20 +02:00
PKEuS 54959d1932 CheckLeakAutoVar: Distinguish between new and new[] (#888) 2016-10-09 10:28:19 +02:00
Harald Scheidl 9f1b70fa04 new can initialize memory, don't warn in this case (#7623) 2016-10-08 10:03:09 +02:00
Daniel Marjamäki bcbc8ef017 Fixed #7747 (Syntax error when setting the bitcount of an enum defined inside a struct) 2016-10-04 15:57:43 +02:00
Boris Egorov a32f61ae4a Fixed #7139 (ValueFlow: Missed shift operation in for expression) 2016-10-04 13:09:33 +07:00
Harald Scheidl ba6cda9c86 Fixed #7740 (Tokenizer::setVarId: Function declaration does not start with 'return') 2016-10-03 10:02:18 +02:00
PKEuS 29e1fe136a Fixed Visual Studio build after pathmatch.h/cpp was moved to lib, fixed compiler errors about getcwd 2016-10-02 15:48:03 +02:00
Daniel Marjamäki 91d97c556d Path: Add methods Path::isAbsolute() and Path::getCurrentPath() 2016-10-02 12:06:55 +02:00
Simon Martin d3c6fb4ccf Ticket #7557: Test case added since the fix for #7541 also fixed this. 2016-10-01 21:21:07 +02:00
Simon Martin 3f415673e4 Ticket #7541: Properly keep track of namespace definition end markers when there are multiple of them. 2016-10-01 20:46:33 +02:00
Simon Martin dc61b6342d Ticket #7068: Treat "memset(&this->member, ..." as member initialization. 2016-10-01 13:46:58 +02:00
Boris Egorov 0154d39bf6 Show struct member in unsignedLessThanZeroError warning
Before:
    [/tmp/test.c:8]: (style) Checking if unsigned variable '.' is less than zero.
    [/tmp/test.c:12]: (style) Checking if unsigned variable '.' is less than zero.

After:
    [/tmp/test.c:8]: (style) Checking if unsigned variable 'd.n' is less than zero.
    [/tmp/test.c:12]: (style) Checking if unsigned variable 'd.n' is less than zero.
2016-09-22 08:03:30 +07:00
Matthias Krüger 2f39ed6f88 redundantPointerOpError: put pointer name into single quotes in the error message. 2016-09-16 22:18:24 +02:00
Daniel Marjamäki 6b55acd7af CheckIO: Changed severity for '.. aka' warnings to portability. If type is compatible then it's just a possible portability issue. 2016-09-11 17:05:01 +02:00
Simon Martin f816fb811e Ticket #7680: Properly handle ::delete during memory leak checks. 2016-09-10 14:55:50 +02:00
Daniel Marjamäki ac1a869d60 unused struct members: don't warn about packed structs (#3088) 2016-09-05 17:27:12 +02:00
Daniel Marjamäki 4d22ada078 Fixed #5839 (False positive: Function can be const, if this is passed to functor) 2016-09-04 16:36:04 +02:00
Daniel Marjamäki 03a6282ab3 Fixed #7338 (Library: method in base class) 2016-09-04 14:14:21 +02:00
Daniel Marjamäki 60f22bd4ee Fixed #7477 (False positive 'Assigned value is never used' in multithreaded context) 2016-09-03 20:38:36 +02:00
Daniel Marjamäki b97bdb5300 bump simplecpp to rev b50ced8ac14f8debab9e85e78036f881ff2b3965 2016-09-03 12:29:45 +02:00
Daniel Marjamäki 9417425829 Fix testrunner 2016-08-29 04:26:27 +02:00
Daniel Marjamäki 939b42df06 Fixed #7134 (False positive redundantAssignment - assignment to local variable of unknown type) 2016-08-29 03:48:08 +02:00
Daniel Marjamäki fee0e4edfa Fixed #7177 (MathLib: Does not handle '\xF6' properly) 2016-08-28 11:37:05 +02:00
Robert Reif bf7ef56ef5 Fixed #7713 (False positive: %hhu in format string (no. 1) requires 'unsigned char' but the argument type is 'signed int'.) 2016-08-26 19:47:36 +02:00
orbitcowboy 87409ea6b3 Running astyle; Improved testing of std::find; std.cfg: Added support for istream::read and ifstream::read. 2016-08-25 19:17:07 +02:00
Matthias Krüger 56525cba60 testinternal: add testcase for TP warning for "previous()->next()" 2016-08-25 16:09:06 +02:00
Robert Reif 6043a27065 Fixed #7710 (%h and %hh printf type size specifiers not supported) 2016-08-24 12:47:11 +02:00
Robert Reif 28e14f0b94 Fixed #7711 (QString::asprintf format string checking.) 2016-08-24 12:44:57 +02:00
Frank Zingsheim 7c9a69357e Fixed #7696 (cppcheck 1.75 runs very slowly with style and/or performance checks) 2016-08-21 16:07:05 +02:00
Daniel Marjamäki d9ebdc6a10 Preprocessor: fix handling of -U in Preprocessor::getConfigs() 2016-08-21 15:01:04 +02:00
Daniel Marjamäki ff036c8742 Fixed #7700 (Using -D to force a configuration still checks the configuration as well as configurations that are not relevant) 2016-08-21 13:53:44 +02:00
PKEuS e0838ff194 Fixed crash on garbage code (#7699) 2016-08-21 11:06:48 +02:00
Daniel Marjamäki d982dc5ffe TestPreprocessor: Refactoring 2016-08-21 08:06:20 +02:00
Daniel Marjamäki 363605906f Fixed #7695 (Running with -U_WIN32 still checks related configurations) 2016-08-21 07:45:15 +02:00
Robert Reif 62ac40fc5e Fixed #7706 ((debug) Executable scope 'foo' with unknown function.) 2016-08-20 22:43:27 +02:00
Robert Reif 1dd1f6dd6a Fixed #7673 ((debug) Executable scope 'foo' with unknown function.) 2016-08-20 17:56:48 +02:00
Robert Reif 4d157af61f Fixed #7704 (QString::sprintf format string checking) 2016-08-20 08:47:52 +02:00
Daniel Marjamäki 8a66535399 Fixed #7694 (ValueType: 1.23L) 2016-08-20 08:44:53 +02:00
Robert Reif b56c765a45 Fixed #7703 ((debug) Executable scope 'foo' with unknown function.) 2016-08-20 07:43:15 +02:00
Robert Reif f1b5ac30a7 Fixed 7698 (FP syntaxError with enum (1.75 regression)) 2016-08-19 19:09:52 +02:00
Robert Reif 1e999e0cfe Fixed #7697 ((debug) Executable scope 'B' with unknown function.) 2016-08-19 19:06:15 +02:00
Daniel Marjamäki 789aef7fde Fixed #4920 (Microsoft ATL/MFC CString::Format argument checking) 2016-08-19 17:36:27 +02:00
Daniel Marjamäki 497b3c38e2 astyle formatting
[ci skip]
2016-08-19 17:34:30 +02:00
Daniel Marjamäki e7c1e8b82e TestLibrary: Added tests for method calls 2016-08-19 10:47:44 +02:00
Daniel Marjamäki 305609f4fb Fixed #7688 (setTokenValue: crash when there is no 2nd operand for ternary operator) 2016-08-17 18:44:41 +02:00
Daniel Marjamäki 1f98af654a ValueFlow: better handling of ? when condition result is known 2016-08-15 14:19:35 +02:00
Daniel Marjamäki 62362cd06d ValueFlow: improve handling of unary minus 2016-08-14 22:19:06 +02:00
Daniel Marjamäki f2e49b4db4 Fixed #7178 (Defect: False positive due to mistake in return type of function pointer.) 2016-08-14 17:19:14 +02:00
Daniel Marjamäki c8667096e0 Fixed #7658 (False positive: Same iterator is used with different containers) 2016-08-14 10:49:48 +02:00
Robert Reif 73e1378af8 Fixed #7661 (False positive: Function parameter 'e' should be passed by reference.) 2016-08-13 21:25:57 +02:00
Daniel Marjamäki 606e31602c Fixed #7177 (Support compile_commands.json) 2016-08-13 10:50:03 +02:00
Daniel Marjamäki 5cc4e1118c Added TODO testcases for Path::simplifyPath() 2016-08-09 22:59:36 +02:00
Robert Reif fc1a755100 Fixed #7666 (Executable scope with unknown function.) 2016-08-09 14:02:06 +02:00
Daniel Marjamäki bd21cd7c85 Fixed #6309 (FP: checkRedundantAssignment should not warn for pointer alias) 2016-08-08 21:43:00 +02:00
Bartlomiej Grzeskowiak 09a83f2cc8 Fixed #7567 ("(a | 7) > 6U" is always true) 2016-08-07 16:58:39 +02:00
Frank Zingsheim 47c063e13f Fixed #7660 (cmake build does not handle simplecpp) 2016-08-06 18:21:54 +02:00
Daniel Marjamäki a8df08f22b Fixed #7659 (crash: Token::varId() : vxl: brdb_selection.cxx) 2016-08-06 18:07:41 +02:00
Daniel Marjamäki b86c2689b3 TestPreprocessor: Fix output 2016-08-06 13:28:24 +02:00
Robert Reif cdfe92b753 Fixed #7657 (False positive: Function parameter 'c' should be passed by reference.) 2016-08-06 10:27:00 +02:00
Daniel Marjamäki cbfeae0ff7 bump simplecpp 2016-08-04 22:53:10 +02:00
Daniel Marjamäki 7d6c587580 Fixed #6113 (Tokenizer::simplifyFunctionPointer: wrong simplification of usage 'return (*f)();') 2016-08-04 19:10:08 +02:00
PKEuS 084fcc936c Rephrased syntaxError message for empty configurations to improve readability:
Old: Invalid number of character 'c' when these macros are defined: ''.
New: Invalid number of character 'c' when no macros are defined.
2016-08-04 16:28:11 +02:00
Daniel Marjamäki 9711064b74 Fixed #6646 (False positive uninitvar - loopvariable initialized inside loop) 2016-08-04 14:39:54 +02:00
Daniel Marjamäki fe3abd678f Revert "Fix potential null pointer dereference"
This reverts commit 6ca76ff965.
2016-08-04 10:40:07 +02:00
Daniel Marjamäki 2566fd09da Fixed #5803 (False positive: Same iterator is used with different containers - insert() from range of different container) 2016-08-04 09:35:16 +02:00
Robert Reif 55b3f0bf38 Fixed #752 (SymbolDatabase: Does not match function if redundant keywords mismatch (C++)) 2016-08-04 09:06:32 +02:00
Dmitry-Me 6ca76ff965 Fix potential null pointer dereference
This was CID 1360399
2016-08-03 18:44:15 +03:00
Robert Reif b40edca62f Fixed #7387 (SymbolDatabase: Wrong overloaded function is picked) 2016-08-02 23:34:11 +02:00
Robert Reif b9030bcfcd Fixed #7650 (SymbolDatabase: Wrong Token::type(), enum and class with same name) 2016-08-02 23:30:46 +02:00
Daniel Marjamäki 5e78dae143 Use TODO_ASSERT_EQUALS instead of TODO comments 2016-08-02 19:38:36 +02:00
Robert Reif b44f448acc Fixed #7649 (SymbolDatabase: Wrong overloaded function is picked for char and wchar_t) 2016-08-02 18:54:01 +02:00
Daniel Marjamäki f23287544a Fixed #7196 (Improve check: deem sizeof(thing) as using the thing's members) 2016-08-02 18:50:04 +02:00
Daniel Marjamäki cc62259103 Tokenizer: don't set varid on c++11 'template using' type. 2016-08-02 15:04:07 +02:00
Daniel Marjamäki 2187e8ba02 CheckUninitVar: Fixed FP when dereferencing multidimensional arrays. Refactoring of testing. The FP was spotted when looking at #7092 2016-08-02 14:27:51 +02:00
Daniel Marjamäki 864cef2fd2 astyle formatting
[ci skip]
2016-08-02 09:03:03 +02:00
Robert Reif 891e21b478 Fixed #7458 (SymbolDatabase: Wrong overloaded function is picked) 2016-08-02 08:58:11 +02:00
Daniel Marjamäki 41526ef3a8 Fixed #6147 (FP unreadVariable: variable assignment in function call argument list) 2016-08-02 08:50:04 +02:00
Daniel Marjamäki 31484133c0 Fixed #7158 (Tokenizer::createLinks2(): does not set links for < > in 'enum { value = boost::mpl::at_c<B,C> };') 2016-08-01 22:26:11 +02:00
Daniel Marjamäki e784901303 Fixed #6971 (False positive duplicateExpressionTernary - cast ignored) 2016-08-01 21:53:43 +02:00
Daniel Marjamäki 695b1f0ef3 Fixed #5692 (Preprocessor: ifdef symbol used indirectly in code leads to 'analysis failed') 2016-08-01 20:09:41 +02:00
Daniel Marjamäki 09b6568ea2 Fixed #7646 (podtypes do not get proper valuetype) 2016-07-31 19:47:34 +02:00
Daniel Marjamäki d89a646ed9 TestPreprocessor refactorings 2016-07-30 20:22:07 +02:00
Daniel Marjamäki 66d0d7a0ad Fixed #7553 (False positive with 1.74 'returning an integer in a function with pointer return type' when no integer is used) 2016-07-29 21:53:58 +02:00
Daniel Marjamäki 5611a71820 Fixed #7543 (False positive boolean result used in bitwise operation) 2016-07-29 18:46:43 +02:00
Daniel Marjamäki 89be630156 Fixed #7543 (False positive boolean result used in bitwise operation) 2016-07-29 17:24:22 +02:00
Daniel Marjamäki a65ae3ce2e Token: Allow dollar sign in identifiers 2016-07-29 13:42:11 +02:00
PKEuS 92e3e802fb Attempt to fix travis build and testrunner failure 2016-07-28 20:59:09 +02:00
PKEuS 452ecc7ceb Improved check: Detect passedByValue even for arguments that are not declared as "const" 2016-07-28 19:37:10 +02:00
Daniel Marjamäki 0777ecd071 Fixed #7640 (Preprocessor::getConfigs: -U is not honored) 2016-07-28 19:22:59 +02:00
PKEuS 3f4fe8f578 Refactorized CheckBufferOverrun:
- Removed redundant code
- Apply non-simplified checking in test suite
2016-07-27 17:28:43 +02:00
PKEuS 9a6569fde1 Always set ErrorMessage::file0 to ensure that the source file that cppcheck is checking when an error occurs can be identified
Removed unused function and unused includes from preprocessor.h/cpp
2016-07-26 16:28:40 +02:00
Daniel Marjamäki 71f62950ed Tokenizer::findGarbageCode: Make it less picky about 'UNKNOWN_MACRO if ..' 2016-07-26 14:35:11 +02:00
PKEuS fc1603eb9b MathLib, ValueType: Support integer suffix "i64" 2016-07-26 13:19:53 +02:00
Daniel Marjamäki 7ff9545b10 Fixed #7637 (FP syntax error assignment in switch) 2016-07-26 12:15:55 +02:00
PKEuS 5c92c231b8 windows.cfg: SendMessage must not be <leak-ignore/> 2016-07-26 11:57:46 +02:00
Daniel Marjamäki 9082c097c8 Fixed testing of #7615. The code is not garbage so move it from TestGarbage to TestSymbolDatabase 2016-07-26 09:10:10 +02:00
Daniel Marjamäki fd19ab4ed1 fix garbage code handling 2016-07-26 08:50:00 +02:00
Matthias Krüger 6fd8edd6e5 Symboldatabase::sizeOfType: fix crash; fixes #7615 2016-07-26 01:18:47 +02:00
Daniel Marjamäki 2feb86a6af Preprocessor: set platform info 2016-07-25 14:52:23 +02:00
Daniel Marjamäki 90faa80590 Preprocessor: Cleanup unused functions 2016-07-25 14:29:02 +02:00
Daniel Marjamäki 7ef02a7469 Cleanup Tokenizer 2016-07-25 12:12:11 +02:00
Daniel Marjamäki adf16fae8b Remove handling of ##, __FILE__, __LINE__ from tokenizer 2016-07-25 07:58:03 +02:00
Daniel Marjamäki 0767284ca1 Fixed #7630 (FP: dead store, modifying array, index var modified) 2016-07-25 07:35:33 +02:00
Daniel Marjamäki e9fef003ac Preprocessor: refactoring directives, they are now only set once for each file 2016-07-24 14:02:21 +02:00
PKEuS 2e2800f5bd Fixed several MSVC warnings 2016-07-24 12:36:36 +02:00
Daniel Marjamäki ed4a47de45 Tokenizer: Improve syntax checking of switch,if,while 2016-07-22 16:54:24 +02:00
PKEuS 12e3cf584c Visual Studio solution:
- Fixed include paths
- Export simplecpp to cppcheck-core.dll
- Added /Zc:rvalueCast
2016-07-21 20:38:58 +02:00
Daniel Marjamäki 99307846cf Preprocessor: simplecpp optimisations 2016-07-21 19:42:26 +02:00
Dmitry-Me 0aac71efd1 Unify and simplify addresses computation 2016-07-21 15:48:48 +03:00
Daniel Marjamäki f50f024873 Revert "Resolve CID 1357639"
This reverts commit e3b0c3a974.

It's not a proper fix. I want that Cppcheck detects this bug also. I want to keep the CID open until Cppcheck can detect it.
2016-07-21 09:52:51 +02:00
Dmitry-Me e3b0c3a974 Resolve CID 1357639 2016-07-21 10:34:07 +03:00
Daniel Marjamäki e16f0e500c Preprocessor: Parse comments and then remove them 2016-07-21 07:48:17 +02:00
Daniel Marjamäki 8a1936d5c9 update AdditionalIncludeDirectories in vcxproj files 2016-07-20 22:17:23 +02:00
Daniel Marjamäki 03d2829fb9 Merge simplecpp branch 2016-07-20 12:21:00 +02:00
Daniel Marjamäki a68da1a725 ValueType: Set valuetype for sizeof argument 2016-07-20 09:39:48 +02:00
Daniel Marjamäki 3eef225b36 Revert preprocessor fix for struct tag macros. There are performance problems. 2016-07-19 18:59:58 +02:00
Daniel Marjamäki 4cc4ebd5cd Travis: run slow unit test on travis that is too slow to run on development machines 2016-07-19 17:10:49 +02:00
Mavik 3e86c7b637 Fixed #5700 (Defect: False positives due to failure to expand struct tag macros) 2016-07-19 16:52:53 +02:00
Daniel Marjamäki ca929f0f1b Try to fix #7608 (Assertion failed in test/testvarid.cpp at line 1988) 2016-07-19 11:59:37 +02:00
Daniel Marjamäki 83b982064d Fixed #7579 (varid not set properly in 'int b[] = { m * a[0] };') 2016-07-18 15:27:08 +02:00
Daniel Marjamäki 0ddeac0429 refactor (use ast) and improve CheckOther::checkRedundantAssignment (warn about global variables unless they are volatile, handle arrays in lhs better) 2016-07-18 12:43:23 +02:00
Daniel Marjamäki 72ead10d93 cleanup tests 2016-07-18 10:52:38 +02:00
Daniel Marjamäki b9443771fb cleanup tests 2016-07-18 10:42:03 +02:00
Daniel Marjamäki 4f051bf9dd Fixed #7599 (valueFlowAST: handle && and || better) 2016-07-17 21:51:20 +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
Daniel Marjamäki 6e3d5dc0d1 Fixed #7580 (False positive when using logical operator keywords 'and', 'or') 2016-07-16 20:21:31 +02: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
PKEuS f869f7ebde Fixed false positive reademptycontainer when end() is called (#7560) 2016-07-10 10:48:21 +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
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
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