9080 Commits

Author SHA1 Message Date
Gary Leutheuser
bca2dfb3f4 Implement #7597 - valueflow: global constant (#1802)
* Implement const global value flow

* Tabs to spaces
2019-04-21 06:54:32 +02:00
IOBYTE
e786c6b7d4 partial fix for #8663 (Stack overflow with template disambiguator) (#1801)
This fixes simplifyUsing to remove 'typename' and 'template' from type
aliases of the form: using T3 = typename T1::template T3<T2>;

This lets the template simplifier instantiate the type alias which will
then remove the using type alias.

The crash will still happen if there is no instantiation because the
type alias will not be removed.  The type alias is what cppcheck is
crashing on after the template simplifier and that still needs fixing.
2019-04-21 06:46:16 +02:00
amai2012
361fc44005 Adjust more test results for invalid code 2019-04-19 20:53:07 +02:00
amai2012
ebe7783493 Adjust some test results for invalid code. Comment out still crashing example for #8913 2019-04-19 17:42:21 +02:00
amai2012
28bc3cad92 #8913 SIGSEGV in CheckUnusedVar::checkFunctionVariableUsage - C++/CLI code 2019-04-19 13:55:25 +02:00
IOBYTE
7799ed4243 Fixed #8889 (varid on function when using trailing return type.) (#1800)
* Fixed #8889 (varid on function when using trailing return type.)

Don't set varid for trailing return type.

* Add a test for #9066 (Tokenizer::setVarId: varid set for trailing return type)
2019-04-18 20:22:39 +02:00
Daniel Marjamäki
648acd1cbf astyle formatting
[ci skip]
2019-04-18 20:21:00 +02:00
Paul Fultz II
103002578d Add check for duplicate condition and assignment (#1799)
* Add check duplicate condition and expression

* Format

* Add assign token

* Add to classInfo

* Change note messages
2019-04-18 20:20:24 +02:00
Daniel Marjamäki
f26b15e5b5 astyle formatting
[ci skip]
2019-04-16 19:07:44 +02:00
Daniel Marjamäki
253f2c9e9d Fixed #9043 (false positive & regression: Variable '*s' is reassigned a value before the old one has been used.) 2019-04-16 19:07:26 +02:00
bbennetts
7287ffe781 Handle 'arguments' sections in compile_commands.json (#1797)
* Handle 'arguments' sections in compile_commands.json

Previous code assumes 'commands' exists and ill assert if t does not.

* Correct typo checking for "arguments" rather than "commands"

* Use ostringstring rather than stringstream

* Add test deominstrating graceful degradation

* Add test for parsing "arguments" rather than "commands"
2019-04-15 20:03:42 +02:00
Daniel Marjamäki
9a563a7d60 test/cli: Add test for cppcheck gui project with addons 2019-04-15 20:02:17 +02:00
Daniel Marjamäki
2156dd7a40 test/cli: Add test importing a vs solution with absolute path 2019-04-15 19:53:49 +02:00
Daniel Marjamäki
146683fdeb test/cli: Add one more exclude path test 2019-04-15 19:46:12 +02:00
Daniel Marjamäki
83f8d7fab9 test/cli: Improved proj2 testing. fixed bug for relative path when vs-solution is imported with relative path 2019-04-15 19:00:57 +02:00
Daniel Marjamäki
6549aed6f4 test/cli: Added testutils.py 2019-04-15 16:57:16 +02:00
Daniel Marjamäki
a03455c505 test/cli: test function that creates gui project file 2019-04-15 15:03:06 +02:00
Daniel Marjamäki
58f886c725 test/cli: Add tests for suppressions 2019-04-15 11:11:33 +02:00
Daniel Marjamäki
65d18b3da9 test/cli: refactorings 2019-04-15 10:02:25 +02:00
Daniel Marjamäki
1a8a40ea35 test/cli: tweak exclude path to make it work in windows 2019-04-15 09:11:23 +02:00
Daniel Marjamäki
4adc3773c5 test/cli: add vs project 2019-04-15 09:04:23 +02:00
Daniel Marjamäki
b845ec41d4 test/cli: renamed tests 2019-04-15 08:53:23 +02:00
Daniel Marjamäki
15eba39963 test/cli: better handling of absolute ignored paths 2019-04-15 08:48:58 +02:00
Paul Fultz II
a90caa7e5a Fix issue 9006: False positive: Return value of function std::move() is not used.
This is trying to fix the issue by fixing the ast and symbol database. First, the ast nodes will be created for the init list and the symbol database will not mark it as a scope. I am not sure if this is the correct approach as I dont really understand how the AST part works.

It did change the AST for `try {} catch (...) {}` but that is because it incorrectly treats `try {}` as an initializer list.
2019-04-15 06:37:27 +02:00
Daniel Marjamäki
a3efe4e03c test/cli: added proj2 test project 2019-04-14 21:02:53 +02:00
Daniel Marjamäki
57479dc948 test/cli: importing cppcheck gui project that imports vcxproj 2019-04-14 18:21:27 +02:00
Daniel Marjamäki
7a122cc846 test/cli: import vs project with absolute path 2019-04-14 18:09:35 +02:00
Daniel Marjamäki
fd0309db9b test/cli: Add tests that loads vs project 2019-04-14 16:48:59 +02:00
Daniel Marjamäki
a18025c95d test/cli: tweaks for running it in windows 2019-04-14 15:53:32 +02:00
Daniel Marjamäki
2cd5a8fde0 test/cli/1-helloworld: add vs solution/project 2019-04-14 15:11:39 +02:00
Daniel Marjamäki
b94f4176f1 test/cli: execute addon 2019-04-14 15:00:03 +02:00
Daniel Marjamäki
6a83c5d3f3 Add cli testing 2019-04-14 10:46:47 +02:00
Daniel Marjamäki
1393c1c3a0 AST: Try to handle C++17 syntax 'if (init;expr)' 2019-04-12 17:35:06 +02:00
Daniel Marjamäki
773d19b2d6 Fix compiler errors. After removing the -std=posix. 2019-04-12 10:41:53 +02:00
Daniel Marjamäki
292b679aba Fixed build error. Renamed variable 2019-04-10 19:17:24 +02:00
Daniel Marjamäki
4686cae929 simplifyMathExpression: Fix tests 2019-04-09 08:22:41 +02:00
Daniel Marjamäki
7610513c49 Fixed #9090 (Do not simplify standard functions) 2019-04-08 19:00:46 +02:00
Daniel Marjamäki
83106d5827 Unused templates: Remove unused template function with variadic arguments 2019-04-07 08:37:04 +02:00
Rikard Falkeborn
82a1e3c61c CheckInternal: Extend redundant null pointer check before Token::Match() (#1789)
Improve the internal check for redundant null pointer check before
calling Token::Match() (and friends). Now, warn about code snippets like

    if (a && tok && Token::Match(tok, "foo"))

Also, extend the check for the inverted case.

There is still no warning for

    if (tok && a && Token::Match(tok, "foo"))

since that would require checking if a is independent of tok.
2019-04-06 07:44:44 +02:00
Rikard Falkeborn
295153df72 Checkstring fixes (#1783)
* teststring.cpp: Fix ternary syntax in tests

* stringLiteralWrite: Add tests wide character and utf16 strings

* suspiciousStringCompare: Add test with wide character string

* strPlusChar: Handle wide characters

* incorrectStringCompare: Add test with wide string

* Suspicious string compare: suggest wcscmp for wide strings

* deadStrcmp: Extend to handle wide strings

* sprintfOverlappingData: Print name of strcmp function

* Conversion of char literal to boolean, add wide character tests

* Conversion of char literal to boolean, fix ternary
2019-04-06 06:54:38 +02:00
Oliver Stöneberg
16ebb90b32 library.cpp: optimized Library::detectContainer() (#1778)
* library.cpp: optimized Library::detectContainer()

reduces Ir from 5882 to 1149 according to callgrind

* fixed hang in tests
2019-04-06 06:42:01 +02:00
IOBYTE
5cdde701ba template simplifier: add minimal template template support (#1779) 2019-04-04 06:07:49 +02:00
Daniel Marjamäki
de4f57ec0f Buffer overflow: Add CTU checking for pointer arithmetic overflows 2019-04-03 06:43:56 +02:00
IOBYTE
9f3ecdde31 Fixed #9076 (Template Simplifier : template < template <typename> T >) (#1777)
This does not add support for template templates.  It only skips the
template template parameter.
2019-04-03 06:02:38 +02:00
Daniel Marjamäki
3f9dd4c567 Variable scope: Fix FP for reference variable in range for loop 2019-04-02 12:59:24 +02:00
Daniel Marjamäki
761f18c75c Fixed #8988 (False positive: using memset on struct) 2019-04-01 19:32:03 +02:00
versat
974f01ce59 gtk.cfg: Add / improve g_str*() functions and add GTK_SIGNAL_FUNC(). 2019-04-01 16:15:32 +02:00
versat
9d8b965270 gtk.cfg: Add / improve g_string_*() function configurations.
daca@home reported missing configurations for most of them.
2019-04-01 15:33:27 +02:00
Daniel Marjamäki
fbc769266c Fixed #9060 (TemplateSimplifier::templateParameters : var <...>) 2019-03-31 16:29:28 +02:00
Daniel Marjamäki
0efddc4010 astyle formatting
[ci skip]
2019-03-31 16:20:06 +02:00