PKEuS
e8161aeda6
Refactorized Scope::getVariableList(): Removed scope depth counter, simplified patterns
2015-03-15 12:37:50 +01:00
Robert Reif
27388c3696
Fixed #6546 (False positive uselessAssignmentPtrArg - triggered by throw?)
2015-02-28 16:07:43 +01:00
Robert Reif
130ffc5752
Fixed #6538 (Symboldatabase: improve isFunction)
2015-02-24 06:11:31 +01:00
Daniel Marjamäki
830d1eb3fd
Revert "Fixed #6538 (Symboldatabase: improve isFunction)"
...
This reverts commit d7ef89bbe6
.
There was crashes in a Travis job.
2015-02-23 08:07:19 +01:00
Robert Reif
d7ef89bbe6
Fixed #6538 (Symboldatabase: improve isFunction)
2015-02-23 06:49:50 +01:00
Dmitry-Me
158a2acc41
Resolve CID 1037075
2015-02-19 17:16:38 +03:00
Robert Reif
323475393b
Symboldatabase: improved debug output
2015-02-04 06:08:41 +01:00
PKEuS
27924d4ae2
Improved detection of array dimensions ( #6430 )
2015-01-31 13:12:06 +01:00
PKEuS
b2835051df
Refactorization: Renamed Token::Match pattern %var% to %name%, implement new pattern %var% which is true if varId > 0.
2015-01-31 12:32:04 +01:00
PKEuS
3a1bd4a5ad
Fixed gcc shadowing warnings
2015-01-30 22:04:26 +01:00
PKEuS
dcc1362890
SymbolDatabase: Support std::array ( fixes #6401 )
2015-01-30 21:56:27 +01:00
PKEuS
5f36c7c914
Improved detection of Type::needInitialization:
...
- Implement shortcut for C code - all types need initialization there
- Break out of loop faster if we encounter a type that needs initialization (it is sufficient if one member needs initialization)
2015-01-21 10:34:58 +01:00
Robert Reif
56dc0b02ef
Fixed #6432 (cppcheck fails to detect ctor - partial template specialization)
2015-01-19 16:15:11 +01:00
Robert Reif
3b8540fdc0
Fixed #6424 (false negative: Use of 'class Ns::C' silence Cppcheck)
2015-01-19 06:38:54 +01:00
Thomas Jarosch
fd01cafb1b
Clean up redundant pointer operations
2015-01-17 16:29:50 +01:00
Robert Reif
68bb197bcb
Destructor detected as constructor resulting in false variable not initialized warnings
2015-01-12 06:11:22 +01:00
PKEuS
d110d715ba
Refactorization: Use Token::link() when stringifying template argument list in symboldatabase.cpp
2015-01-09 22:03:43 +01:00
PKEuS
4da314b2e4
Declared recently added helper functions as static
2015-01-09 21:40:50 +01:00
PKEuS
25cd3794ac
Refactorization: Simplified and unified SymbolDatabase printing
2015-01-09 21:35:16 +01:00
PKEuS
7452613479
Refactorization:
...
- Merged messages exceptThrowInNoexecptFunction, exceptThrowInNoThrowFunction, exceptThrowInAttributeNoThrowFunction and exceptThrowInDeclspecNoThrowFunction into a single message.
- Merged Token::fIsDeclspecNothrow into Token::fIsAttributeNothrow
2015-01-09 20:18:09 +01:00
PKEuS
4d5bf28b33
Refactorization: Removed code for copying attributes from function declaration to implementation in symboldatabase as it is neither tested nor necessary
2015-01-09 19:46:04 +01:00
Robert Reif
6998c55680
Symboldatabase: function return token ( #6244 )
2015-01-09 16:08:34 +01:00
Thomas Jarosch
374af15bd4
Fix parsing linkage specifier from global function declaration
...
Our very own "tools/dmake.cpp" had a function declaration
featuring "static void foobar()" while the function implementation
did not have the 'static' keyword (which is perfectly legal code).
2015-01-09 00:38:25 +01:00
Robert Reif
ba1c24ee65
Fixed #6422 (symbol database: put function flags into a single flag variable)
2015-01-08 05:45:31 +01:00
Daniel Marjamäki
ff11ba9847
Updated copyright year to 2015
2015-01-03 12:14:58 +01:00
Robert Reif
1aa3adbb46
Refactorization: Speedup function lookup in symboldatabase ( #6277 ) (Part 2)
2015-01-02 21:41:01 +01:00
Robert Reif
9a679d1720
Refactorization: Speedup function lookup in symboldatabase ( #6277 )
2015-01-02 16:11:21 +01:00
Thomas Jarosch
69b31a0743
Fix up extra whitespaces in match patterns
...
Detected by new internal check.
2014-12-30 14:53:43 +01:00
Daniel Marjamäki
fb3f5a159d
Token: Added flag for attribute noreturn ( #6328 )
2014-12-24 12:50:51 +01:00
PKEuS
ff5ede342b
Fixed #6266 : Support noexcept(false)
2014-12-09 23:53:50 +01:00
PKEuS
e9bc3b7acf
Fixed #6308 : Properly associate Function with Scope for destructors in SymbolDatabase
2014-12-09 21:36:09 +01:00
Dmitry-Me
7d259c073a
Cache and reuse value
2014-12-02 16:19:52 +03:00
Dmitry-Me
6482fefe3e
Cache and reuse previously computed value
2014-11-30 13:00:27 +01:00
Robert Reif
d12f14844a
Fixed #6279 (False Positive: Member variable 'Fred::i' is not initialized in the constructor)
2014-11-20 06:18:29 +01:00
Alexander Mai
8bcf833bb7
Cure null pointer access within Scope::findFunction introduced by recent cs
2014-11-17 23:10:00 +01:00
Robert Reif
c5e15950df
Fixed #6230 (SymbolDatabase: Wrong function() is set for token)
2014-11-17 16:04:44 +01:00
Robert Reif
67385cfc4b
Symboldatabase: improved look up of delegate constructors
2014-11-13 06:29:51 +01:00
Daniel Marjamäki
189dfd64f7
Revert "Fixed #6230 (SymbolDatabase: Wrong function() is set for token)"
...
This reverts commit 685fce6b91
.
2014-11-11 07:29:16 +01:00
Daniel Marjamäki
685fce6b91
Fixed #6230 (SymbolDatabase: Wrong function() is set for token)
2014-11-07 11:10:20 +01:00
Robert Reif
df6855c216
SymbolDatabase: reintroduce test, move symboldatabase cleanup code to SymbolDatabase destructor
2014-11-02 10:36:52 +01:00
Robert Reif
4eb33e7479
SymbolDatabase: Refactoring of findFunction
2014-11-01 14:36:17 +01:00
Robert Reif
f75aca1921
SymbolDatabase: change symboldatabase::findFunction to only check function arguments for function calls
2014-10-30 13:47:20 +01:00
Frank Zingsheim
41a54fceba
Fixed false positives about uninitialized member variables if variable has a default value ( #5500 )
2014-10-16 21:57:43 +02:00
Frank Zingsheim
9dd3bce98b
Fixed #6214 : non-static member initializer causes false positive
2014-10-16 09:11:09 +02:00
Daniel Marjamäki
82972b7b0d
SymbolDatabase: fix debug output
2014-10-14 19:39:08 +02:00
Daniel Marjamäki
77cffcde38
Fixed #6190 (SymbolDatabase: variable info not set properly when reinterpret_cast is used)
2014-10-12 16:06:50 +02:00
Frank Zingsheim
11867e3210
Fixed #6214 (non-static member initializer causes false positive (function call; initializer))
2014-10-12 15:06:07 +02:00
Dmitry-Me
23bfd21bbc
Don't proceed to outer scope once match is found
2014-10-02 12:24:19 +04:00
PKEuS
0ae09c0029
SymbolDatabase: A token with a varId cannot be a function declaration
2014-09-29 13:05:51 +02:00
Robert Reif
194e4a71a4
Symbol database: handle anonymous namespace
2014-09-24 06:09:08 +02:00
Dmitry-Me
ebf1764bcc
Move variable declarations, remove unneeded assignments, remove comparison duplication
2014-09-19 11:29:31 +04:00
Daniel Marjamäki
29a49d0641
removed some redundant null pointer checks before calling Token::Match
2014-09-14 11:35:04 +02:00
Simon Martin
53b58f0ed9
Refactoring. Use Token::Match instead of hardcoded patterns to increase readability.
2014-09-14 11:26:16 +02:00
PKEuS
605fb9039a
Merge pull request #391 from Dmitry-Me/resolveIssue1037098
...
Resolve CID 1037098
2014-09-06 23:17:52 +02:00
PKEuS
e8f7279039
Refactorization: Moved detection of STL strings to SymbolDatabase
2014-09-05 12:03:08 +02:00
PKEuS
6d27ca6c9a
Fixed SymbolDatabase if unnamed struct is casted and returned ( #6125 )
2014-09-03 11:15:05 +02:00
PKEuS
80df3dc642
Disabled several checks and simplifications for C code, if they are C++-only. Do not match arguments for C code, since there can't be overloads.
2014-09-01 18:43:24 +02:00
PKEuS
9733a751ec
SymbolDatabase: Several small refactorizations
2014-08-31 11:27:32 +02:00
PKEuS
862b18e0e2
SymbolDatabase: New scope type eLambda
2014-08-31 10:21:27 +02:00
PKEuS
8188578cf2
SymbolDatabase: Fixed handling of nested types for function arguments
...
Removed unnecessary loops between var->typeStartToken() and var->typeEndToken()
2014-08-19 11:55:00 +02:00
Dmitry-Me
fd9009c494
Resolve CID 1037098
2014-08-12 10:02:54 +04:00
PKEuS
5d302716e7
Refactorized Variable::isIntegralType() and Variable::isFloatType():
...
- Cached property
- Make use of it in several checks
- float* is flagged as floating point type
2014-08-09 11:45:13 +02:00
PKEuS
f3e0df7501
Support C++11 style initialization with {}:
...
-> Support in setVarId and SymbolDatabase (#4344 )
-> Fixed false positives in unused variable checking (#5491 , #5494 )
Side-effect: Support global variables initialized with brackets (C++03 style) in SymbolDatabase
2014-08-05 15:33:57 +02:00
Dmitry-Me
f104aa237f
Bring declarations closer to where they're needed.
2014-07-24 18:34:13 +04:00
Dmitry-Me
615eb32fdc
Use temp variables to avoid repeated actions in code.
2014-07-23 18:51:23 +04:00
Daniel Marjamäki
1e5eab8f17
xml dump: Added function attribute in scope
2014-07-20 11:44:01 +02:00
Daniel Marjamäki
b1e5b015df
xml dump: output some more info in the dump
2014-07-16 15:27:13 +02:00
Daniel Marjamäki
2f7b8fe4b2
xml dump: fixed some minor issues in symboldatabase dump
2014-07-14 19:25:30 +02:00
Daniel Marjamäki
84ec573d0a
xml dump: Fixed segfault when dumping symboldatabase variables
2014-07-14 19:17:39 +02:00
Daniel Marjamäki
6732556eb8
xml dump: output a <variables> with all variables
2014-07-14 18:35:15 +02:00
Daniel Marjamäki
2e7a72856a
xml dump: remove duplicate attribute
2014-07-14 18:13:27 +02:00
Daniel Marjamäki
8db5836e3f
Fixed #5982 (Add xml dump)
2014-07-14 15:51:45 +02:00
Daniel Marjamäki
954400a382
Add simple xml debug output. When both --xml and --debug is used there will be xml debug output.
2014-07-13 17:21:45 +02:00
Dmitry-Me
ba3757dfd3
Bring variables decalaration to where they are really needed.
2014-07-10 11:23:14 +04:00
Daniel Marjamäki
d40b77dce2
Removed special 'else if' handling. this is redundant since these are simplified.
2014-07-02 16:16:19 +02:00
PKEuS
e13de2681e
SymbolDatabase: 'const' can't be the name of a variable - fix use after free #5882
2014-06-26 09:19:57 +02:00
PKEuS
b20f87faf2
Optimized Tokenizer::simplifyPlatformTypes() once more: Another 3% improvement on Windows.
...
-> All Token::Match strings are uppercase, so check Token::isUpperCaseName() to avoid comparisons with very slow long Token::Match strings (idea from amai)
Removed duplicate Token::Match call in symboldatabase.cpp
2014-06-25 20:42:59 +02:00
PKEuS
d93d7401c6
Moved getSourceFilePath(), isC() and isCPP() from Tokenizer to TokenList
...
Conflicts:
lib/tokenize.cpp
2014-06-04 18:36:25 +02:00
Robert Reif
e5ae575ace
Fixed #5867 (invalid debug warnung: Scope::checkVariable : varid0)
2014-06-02 06:18:32 +02:00
PKEuS
04f3caf8e8
Fixed debug message #5159
2014-05-25 14:16:03 +02:00
PKEuS
adf38fcfd0
Further include cleanup
2014-05-24 12:50:04 +02:00
PKEuS
1fc1ff1993
Moved implementation of two functions to new file check.cpp -> Don't include <iostream> everywhere
2014-05-24 12:50:04 +02:00
Robert Reif
e993e2927c
Fixed #5831 (FP in 1.65: call of pure virtual function 'throw' in destructor)
2014-05-20 06:10:34 +02:00
PKEuS
5fbd58d98d
Fixed messages of CheckInternal, fixed a false positive.
2014-05-18 20:39:52 +02:00
Robert Reif
0bdecfd9cb
Fixed #5767 (move bool Variable flag into flag variable)
2014-05-07 15:59:21 +02:00
Robert Reif
ae96491d6c
Fixed #5756 (declspec(nothrow) not supported)
2014-05-04 20:47:20 +02:00
Robert Reif
6ff5de2118
Fixed #5697 (Check for throw in __attribute__((nothrow)) function)
2014-04-20 20:40:55 +02:00
Alexander Mai
96d2666a6c
Fix crash in SymbolDatabase - errorLogger may be 0
2014-04-18 21:19:49 +02:00
Alexander Mai
7d9ec01bdc
#5593 - hang or --report-progress broken (does not report progress) : add reportProgress() call to SymbolDatabase
2014-04-18 20:42:22 +02:00
Daniel Marjamäki
79942df842
Fixed #5602 (false positive on std::vector - after unknown macro around the function header)
2014-04-13 13:05:30 +02:00
Daniel Marjamäki
9d51bfd015
Fixed #5397 (False positive: Same expression on both sides of '&')
2014-04-12 16:06:31 +02:00
PKEuS
9c921ab657
Fixed handling of member function pointers in setVarId and SymbolDatabase ( #4577 )
2014-04-12 12:04:55 +02:00
Robert Reif
7eb3988415
Fixed #5659 (False negative: mismatching allocation / deallocation whith using namespace)
2014-04-11 05:40:37 +02:00
PKEuS
2aaae741dd
Fixed cppcheck message
2014-04-10 21:58:53 +02:00
PKEuS
e39b89efc3
Throw more syntaxErrors from SymbolDatabase, fixing #5663
2014-04-10 20:11:03 +02:00
Robert Reif
847d28d283
Fixed #5638 (is there any plan to check noexcept correctness?)
2014-04-10 16:17:10 +02:00
Robert Reif
4ae204e46b
Fixed #5659 (False negative: mismatching allocation / deallocation whith using namespace)
2014-04-10 16:11:11 +02:00
PKEuS
a6e134e811
Removed compatibility code for Borland and Sun compilers which should not be necessary for a compiler supporting C++11 (as required by cppcheck).
2014-04-02 17:26:59 +02:00
PKEuS
5953f02654
Refactorization: Simplifications in symboldatabase
2014-04-01 10:13:00 +02:00
PKEuS
e0574feabd
Fixed problems with unknown macros for inline class methods in SymbolDatabase ( #5621 )
2014-03-31 21:04:01 +02:00
PKEuS
025850d961
Support unknown THROW()-style macros in symboldatabase; Fixed #5056 .
...
Simplified related code.
2014-03-31 20:33:01 +02:00
PKEuS
345a80f4d5
Fixed #5621 and slightly simplified symboldatabase code.
2014-03-30 11:06:44 +02:00
Alexander Mai
d1b1699bb0
Fix #5606 - Endless recursion in CheckClass::isMemberVar(). New function Type::hasCircularDependencies() is supposed to detect loops within the class hierarchy which was causing the problem
2014-03-29 12:21:35 +01:00
PKEuS
a16d631813
Further improvements to setVarId and function/array pointer detection in SymbolDatabase ( #2872 )
2014-03-28 17:43:40 +01:00
PKEuS
a6ca3cf2cf
Throw syntaxError when encounter one in symboldatabase ( fixes #5572 )
2014-03-27 19:06:13 +01:00
PKEuS
1be7bfa7fe
Fixed crash on invalid code ( #5603 )
2014-03-23 20:08:16 +01:00
Alexander Mai
37befc75ef
In case of a loop within the class hierarchie Function::isImplicitlyVirtual_rec() was entering an endless loop. Tracking the previously analyzed types shall prevent this.
2014-03-22 08:49:28 +01:00
Thomas Jarosch
93341f4449
Use simple match where possible
...
Fixes these warnings found by "--enable=internal":
[lib/checkclass.cpp:972]: (warning) Found simple pattern inside Token::Match() call: "* *"
[lib/checkbufferoverrun.cpp:635]: (warning) Found simple pattern inside Token::Match() call: "."
[lib/checkbufferoverrun.cpp:1397]: (warning) Found simple pattern inside Token::Match() call: ";"
[lib/checksizeof.cpp:299]: (warning) Found simple pattern inside Token::Match() call: "."
[lib/checksizeof.cpp:301]: (warning) Found simple pattern inside Token::Match() call: ")"
[lib/checksizeof.cpp:303]: (warning) Found simple pattern inside Token::Match() call: "]"
[lib/checksizeof.cpp:318]: (warning) Found simple pattern inside Token::Match() call: ")"
[lib/checknullpointer.cpp:413]: (warning) Found simple pattern inside Token::Match() call: "delete"
[lib/checkio.cpp:1336]: (warning) Found simple pattern inside Token::Match() call: "> ("
[lib/checkstl.cpp:1509]: (warning) Found simple pattern inside Token::findmatch() call: ";"
[lib/checkstl.cpp:1512]: (warning) Found simple pattern inside Token::findmatch() call: ";"
[lib/checkstl.cpp:1594]: (warning) Found simple pattern inside Token::Match() call: "="
[lib/checkstl.cpp:1598]: (warning) Found simple pattern inside Token::Match() call: "] ="
[lib/checkunusedvar.cpp:755]: (warning) Found simple pattern inside Token::Match() call: "goto"
[lib/checkunusedvar.cpp:793]: (warning) Found simple pattern inside Token::Match() call: "="
[lib/checkuninitvar.cpp:376]: (warning) Found simple pattern inside Token::Match() call: "> ("
[lib/checkother.cpp:86]: (warning) Found simple pattern inside Token::Match() call: "> ("
[lib/checkother.cpp:2181]: (warning) Found simple pattern inside Token::Match() call: "> {"
[lib/valueflow.cpp:54]: (warning) Found simple pattern inside Token::Match() call: "&"
[lib/valueflow.cpp:409]: (warning) Found simple pattern inside Token::Match() call: "do"
[lib/valueflow.cpp:425]: (warning) Found simple pattern inside Token::Match() call: ") {"
[lib/valueflow.cpp:487]: (warning) Found simple pattern inside Token::Match() call: ") {"
[lib/valueflow.cpp:511]: (warning) Found simple pattern inside Token::Match() call: "} else {"
[lib/valueflow.cpp:615]: (warning) Found simple pattern inside Token::Match() call: "for ("
[lib/symboldatabase.cpp:80]: (warning) Found simple pattern inside Token::Match() call: "= {"
[lib/symboldatabase.cpp:1069]: (warning) Found simple pattern inside Token::Match() call: "std ::"
[lib/tokenize.cpp:2207]: (warning) Found simple pattern inside Token::Match() call: "< >"
[lib/tokenize.cpp:2730]: (warning) Found simple pattern inside Token::Match() call: ";"
[lib/tokenize.cpp:4234]: (warning) Found simple pattern inside Token::Match() call: "try {"
[lib/tokenize.cpp:4235]: (warning) Found simple pattern inside Token::Match() call: "} catch ("
[lib/tokenize.cpp:5500]: (warning) Found simple pattern inside Token::Match() call: "INT8"
[lib/tokenize.cpp:5752]: (warning) Found simple pattern inside Token::Match() call: "}"
[lib/tokenize.cpp:5752]: (warning) Found simple pattern inside Token::Match() call: "do"
2014-03-14 16:27:47 +01:00
Robert Reif
8c993c1363
Partial fix for #5555 . Remember function attributes: pure, const, constructor, destructor
2014-03-14 05:40:17 +01:00
Robert Reif
d1eb04c539
Fixed #4302 (Member variable not initialized in public delegate constructor)
2014-03-12 05:48:13 +01:00
Daniel Marjamäki
ed9153ee80
Symbol database: added simple mismatch check in Scope::findFunction when passing address to function that expects a reference
2014-02-19 06:35:51 +01:00
Lauri Nurmi
70a67eaf85
Change some more 0 literals into nullptr.
2014-02-16 13:38:50 +02:00
Daniel Marjamäki
23efc68dd7
use nullptr
2014-02-16 10:32:10 +01:00
Daniel Marjamäki
fd3a8a2a18
Update copyright
2014-02-15 07:45:39 +01:00
Lucas Manuel Rodriguez
2048313915
Add Variable::isStlType function
2014-01-28 11:44:56 -03:00
Alexander Mai
77362fd671
Fixed #5289 (Crash: Stack overflow in isImplicitlyVirtual_rec when checking SVN)
2014-01-05 19:10:16 +01:00
Daniel Marjamäki
93a9cb40df
Fixed #5310 (Internal error: match compiler returned different result than parsed match)
2014-01-04 13:53:54 +01:00
Daniel Marjamäki
32be4094e7
Symbol database: only put variables in variable list
2013-12-31 17:51:56 +01:00
Daniel Marjamäki
98b6fa2eaf
SymbolDatabase: Use std::size_t for Function::getArgument() argument since Function::argCount() returns a std::size_t
2013-12-14 08:35:46 +01:00
Robert Reif
43f00942dd
Fixed #5197 (SymbolDatabase: bad handling of unknown macros in function declaration)
2013-11-25 03:43:39 +01:00
Robert Reif
52df31b501
Fixed #5153 ((debug) Scope::checkVariable found variable ')')
2013-11-08 12:56:32 +01:00
Simon Martin
463ef2e71e
Ticket #5120 : New test case, that works now that #5125 is fixed
2013-10-30 10:15:03 +01:00
Simon Martin
052be76635
Ticket #5125 : Avoid infinite recursion for recursive class definitions
2013-10-29 21:41:47 +01:00
Daniel Marjamäki
4a02ca8202
SymbolDatabase: handle method with unknown macro 'void f() MACRO {..}'
2013-09-28 11:44:26 +02:00
Daniel Marjamäki
4b1254bc8d
Merge pull request #168 from simartin/ticket_4994
...
Ticket #4994 : Don't crash when checking variable scope for invalid input
2013-09-08 06:57:42 -07:00
Simon Martin
843833f907
Ticket #4994 : Don't crash when checking variable scope for invalid input.
2013-09-07 21:16:25 +02:00
PKEuS
6b47ed414a
Fixed Function::retDef initialization:
...
- Move/Copy Constructors and Destructors do not have a return type neither
- Fixed crash in SymbolDatabase::printOut
- Added testing
2013-09-03 10:48:01 +02:00
Robert Reif
8790f6d73f
Fixed #4999 (Crash with simple code snipped in rev ab30fa3
)
2013-08-31 18:58:55 +02:00
Robert Reif
fc435ae9aa
CheckIO: fix false negative for a function in a base class not being found, fix false positives and negatives for std::vector operator []
2013-08-30 05:41:59 +02:00
Robert Reif
a1b9bb0688
CheckIO: Fix false positives for functions returning unknown types and false negatives for functions returning record types
2013-08-26 06:03:26 +02:00
Robert Reif
26de3646e9
CheckIo: Revised patch that fixes bug in class function return type. Ticket: #4964
2013-08-24 22:34:52 +02:00
Robert Reif
01fd156852
CheckIO: Start to add checking of function return types. Ticket: #4964
2013-08-24 07:25:50 +02:00
Alexander Mai
986ec42d79
Fixed #4937 (false positive: Assert calls a function which may have desired side effects)
2013-08-22 06:38:54 +02:00
Daniel Marjamäki
b61c4b24b4
Fixed syntax error
2013-08-21 16:32:10 +02:00
Stefan Beller
e0d71de23a
symboldatabase: Remove unneeded check
...
scope1 cannot be null at that point of time. If it were, the program
would have crashed, before (it's dereferenced ->)
This commit doesn't just remove dead code, but eliminates a tricky bug,
possibly introduced by over-optimizing compilers:
An explanation why the compiler could produce bad code here is found at
http://blog.regehr.org/archives/970
This commit was enabled by http://css.csail.mit.edu/stack/
Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>
2013-08-20 14:06:20 +02:00
Robert Reif
bf8a786265
reduce: add more settings from cppcheck cli
2013-08-19 06:06:53 +02:00
Robert Reif
914893013e
Symbol Database: improved type handling. Ticket: #4952
2013-08-17 18:43:15 +02:00
Robert Reif
b777388fb8
Symbol database: improved type handling (fix problems in previous commit). Ticket: #4952
2013-08-16 05:42:12 +02:00
Robert Reif
f420de24ef
SymbolDatabase: Optimisation of previous fix for #4952
2013-08-13 06:36:54 +02:00
Robert Reif
cd3044c808
Fixed #4952 (SymbolDatabase: unknown types in log file)
2013-08-12 06:21:03 +02:00
PKEuS
a9a5dc0354
Updated to AStyle 2.03, require this version
2013-08-07 16:27:37 +02:00
Robert Reif
e6ab8f478b
Symbol database: improved handling of array members
2013-07-20 17:51:13 +02:00
Daniel Marjamäki
9c67af058a
SymbolDatabase: Renamed Variable::varId() to Variable::declarationId() to make it more clear how it works.
2013-07-20 12:31:04 +02:00
Daniel Marjamäki
4106972fdc
Merge pull request #148 from JustRamires/master
...
Fixed segmentation fault in SymbolDatabase::SymbolDatabase(Ticket #4892 )
2013-07-09 02:55:46 -07:00
Roman Zaytsev Borisovich
295869a866
Fixed segmentation fault in SymbolDatabase::SymbolDatabase(Ticket #4892 )
2013-07-09 13:10:03 +04:00
Lucas Manuel Rodriguez
d177c8fd03
Fixed #4824 (False positive: (warning) Member variable 'Foo::m_state' is not initialized in the constructor.)
2013-07-08 06:38:33 +02:00
Zachary Blair
a381170886
Fixed #4874 (Minor spelling corrections)
2013-06-26 00:47:02 -07:00
Alexander Mai
0be1892b92
Fixed #4806 (Crash in Type::initBaseInfo() in clang testcode)
2013-06-16 21:46:01 +02:00
Roman Zaytsev Borisovich
4610b135dc
Fixed #4694
2013-06-07 10:37:33 +04:00
Robert Reif
2c8360c607
Fixed #4789 (uninitMemberVar not found when constructor contains default parameters)
2013-05-18 18:33:24 +02:00
PKEuS
cf5d8fa3df
Use Token::link() instead of Token::findClosingBracket() whereever possible
2013-04-15 13:48:28 -07:00
Frank Zingsheim
54e7c8f6a2
Implemented support for move constructors:
...
Adapt code to Function::eMoveConstructor
introduced in commit eb2962792f
2013-04-10 21:57:22 +02:00
PKEuS
eb2962792f
Implemented support for move constructors:
...
- Changed behaviour of Token::function - is now also set for declarations
- Resolved TODO in testclass.cpp
- removed redundant code in Scope::findFunction - it is safe to call nextArgument() on functions without arguments
- Use Token::function in checkother.cpp
2013-04-04 10:53:55 -07:00
PKEuS
188096665c
Implemented support for rvalue references (C++11):
...
- Split up && when it is part of an rvalue reference declaration
- Added support into symbol database
- Current implementation sets Variable::isReference() to true also for rvalue references - they can probably be treated like normal references in many checks.
Changed behaviour of symbol database: Insert argument Variable of functions that are not implemented into SymbolDatabase::_variableList
2013-04-04 09:47:44 -07:00
Robert Reif
a3f9b5c07d
Fixed #4686 (Prefer prefix ++/-- operators for non-primitive types with template iterator)
2013-03-30 13:49:56 +01:00
Robert Reif
3f57b5a6ca
Fixed #4682 (using 'struct' disables checking)
2013-03-28 06:36:49 +01:00
Daniel Marjamäki
c0a34649c4
fixed 'duplicate expression' false positives for float-float. Ticket: #4639
2013-03-14 19:11:29 +01:00
PKEuS
641ac5c02a
Fixed #4352 : Ensure that class provides an iterator interface.
2013-03-14 09:00:22 -07:00
Robert Reif
4b9b87e310
Fixed #4646 (false positive: (style, inconclusive) Technically the member function 'C<T>::operator+=' can be const.)
2013-03-14 06:34:12 +01:00
Robert Reif
ee942c5592
Symbol database: Fixed --debug printing. Ticket: #4650
2013-03-13 06:31:13 +01:00
PKEuS
14feaa8d39
Refactorizations:
...
- Fixed lots of cppcheck messages about functions that can be const or static
- Fixed possible nullpointer dereference message in symboldatabase.cpp
- Replaced tokAt(+-1) by next()/previous()
2013-03-12 07:42:00 -07:00
Robert Reif
25c36b56fa
CheckClass: made warnings about uninitialized members in default constructors inconclusive. Ticket: #4639
2013-03-09 09:20:48 +01:00
PKEuS
1fbef0e4e6
Reduced code duplication in symboldatabase
2013-03-05 10:53:24 -08:00
PKEuS
9287e40e99
Incresed constness of several pointers in symboldatabase
2013-03-05 09:42:42 -08:00
PKEuS
a94598e447
Fixed some gcc and cppcheck messages
2013-03-05 07:07:59 -08:00
PKEuS
7bc729bc63
- Moved more functionality from Scope to Type: BaseInfo and FriendInfo
...
- Replaced Scope->findQualifiedScope by SymbolDatabase::findScope
- Improved SymbolDatabase::findType
2013-03-05 06:28:40 -08:00
PKEuS
66a3555897
Implement initial support for Types in Symboldatabase:
...
- For each class/struct/union, a Type instance is added to SymbolDatabase::typeList.
- A scope is no longer created for declared but not defined types
Fixed name detection for classes when they are declared like this: "class ::Foo::Sub {..."
2013-03-05 04:33:38 -08:00
PKEuS
0105f8223c
Simplified several Token::Match/simpleMatch calls when match string consists of a single pattern
...
Fixed two CheckInternal error messages
2013-03-01 03:42:04 -08:00
Robert Reif
509061afff
Fixed #4620 (False positive: Uninitialized variable in constructor (1.58))
2013-02-27 06:59:04 +01:00
Robert Reif
21bf5173e5
Symbol database: faster implementation. Ticket: #4494
2013-02-20 07:46:06 +01:00
Robert Reif
e6915e7a78
Fixed #4536 (non-static member initializer causes false positive)
2013-02-18 06:33:53 +01:00
PKEuS
89cf24f23f
Refactorization: use Function::nestedIn instead of Function::functionScope->functionOf, which is valid even if the function implementation is not seen.
2013-02-16 01:43:16 -08:00
Robert Reif
c5ee083c82
Fixed #4388 (false positive 'noConstructor' in 1.57)
2013-02-15 06:44:07 +01:00
Robert Reif
a1da067b88
Fixed #4585 (false positive, Variable 'b' is assigned a value that is never used when using+loop)
2013-02-14 06:31:41 +01:00
Robert Reif
5de26bfeb9
Fixed #4574 (noConstructor false positives introduced in cppcheck 1.58)
2013-02-13 06:00:04 +01:00
Robert Reif
1a58ae4994
Symbol database: handle when forward declaration doesn't match declaration. Ticket: #4531
2013-02-01 06:31:02 +01:00
Robert Reif
859793731d
SymbolDatabase: Refactor findFunction handling. Ticket: #4494
2013-01-28 06:47:48 +01:00
Robert Reif
a0d8fd26fe
SymbolDatabase: improved handling of const in function parameters
2013-01-27 02:46:00 +01:00
Robert Reif
3b08b410a2
Symbol database: Improved function lookup (a.b.f()). Ticket: #4494
2013-01-25 06:49:04 +01:00
Robert Reif
cecd726b11
Symbol database: Improved function lookup for foo.f(). Ticket #4494
2013-01-23 16:53:55 +01:00
XhmikosR
645126fb8e
remove double trailing semicolons
2013-01-23 06:48:21 +01:00
Robert Reif
ddb604d1a5
Symbol database: function lookup when :: is used. Ticket #4494
2013-01-22 06:55:25 +01:00
Andrew C. Martin
4a73c93750
Fix compiler warnings and comment/string typos
...
- fix g++ warning:
> lib/checkother.cpp:3779: warning: comparison between signed and unsigned integer expressions
- fix suncc warning (see [everything2](http://everything2.com/title/C%252B%252B%253A+static+extern+%2522C%2522 )):
> "lib/checkmemoryleak.cpp", line 578: Warning (Anachronism): Formal argument __compar of type extern "C" int(*)(const void*,const void*) in call to bsearch(const void*, const void*, unsigned long, unsigned long, extern "C" int(*)(const void*,const void*)) is being passed int(*)(const void*,const void*).
- prefer empty() / isEmpty() over "size() > 0" (cases not caught by stlSize)
- fix word misspellings (mostly comments, a few output lines)
- Parenthesis => Parentheses (both variations were used in the codebase)
- fix typo and wording ("never alwayw") in gui/test/data/benchmark/simple.cpp's CheckOther::unsignedPositive():
```
- "An unsigned variable will never alwayw be positive so it is either pointless or "
+ "An unsigned variable can't be negative so it is either pointless or "
```
2013-01-16 07:37:07 -07:00
Thomas Jarosch
5c8b05ce94
Use Token::simpleMatch() for simple pattern
...
"internal" check reported:
[lib/symboldatabase.cpp:945]: (warning) Found simple pattern inside Token::Match() call: "> ("
2013-01-15 20:34:11 +01:00
Robert Reif
d37906041b
Fixed #4458 (False positive: noCopyConstructor in template class)
2013-01-04 10:35:24 +01:00
Edoardo Prezioso
c9fb7f529d
Use more Effective C++ code style in SymbolDatabase class:
...
1)The SymbolDatabase::findScope code is moved to the const-version. The non-const version is reimplemented as the combination with const_cast and static_cast.
2)Unrelated: change style of the declaration of some functions (the '*' is moved near the function name).
2013-01-04 01:19:17 +01:00
Reijo Tomperi
5d5f7085bf
Updating year 2012 -> 2013 to .cpp and .h files and man page.
2013-01-01 18:29:08 +02:00
Robert Reif
d2e8ab9c86
Fixed #4302 (Member variable not initialized in public delegate constructor)
2013-01-01 09:53:40 +01:00
Daniel Marjamäki
bf169e0c59
Replaced %name% with %type%
2012-12-31 10:45:37 +01:00
Daniel Marjamäki
38d1b064e8
Symbol database: Add support for unnamed array arguments to functions ( #4444 )
2012-12-29 08:32:43 +01:00
Robert Reif
5ba2a300af
Symbol database: Improved handling of array arguments ( #4444 )
2012-12-28 16:28:29 +01:00
Robert Reif
bd2f59bdf0
Fixed #4442 (crash of cppcheck while scanning gcc-testsuite (invalid code))
2012-12-28 08:36:20 +01:00
Robert Reif
a43ae677d7
Fixed #4419 (False positive: Class does not have a constructor)
2012-12-27 17:21:30 +01:00
acm4me
7da155c8ba
Support for Sun Studio C++ compiler
2012-12-27 11:51:12 +01:00
Daniel Marjamäki
b39afb2cf9
Revert "Fixed #4419 (False positive: Class does not have a constructor)"
...
This reverts commit 9a79961b6c
.
There is a segmentation fault when checking lib/preprocessor.cpp
2012-12-24 07:46:55 +01:00
Robert Reif
9a79961b6c
Fixed #4419 (False positive: Class does not have a constructor)
2012-12-24 06:46:30 +01:00
Robert Reif
bb2a15c140
Symbol database: Better handling of 'using namespace N;'. Ticket: #4412
2012-12-20 06:53:04 +01:00
Robert Reif
6732f05b95
Fixed #4404 (Forward declared class cause false style warning about missing constructor)
2012-12-16 07:18:03 +01:00
Robert Reif
63b585424d
Fixed #4386 (False positive: ctor not detected)
2012-12-05 20:31:17 +01:00
PKEuS
bcb4410dae
Fixed invalid function in symboldatabase causing endless recursion (VS10 warning) by const_cast
2012-11-30 02:25:40 -08:00
Robert Reif
35c2b8058d
Fixed #3190 (SymbolDatabase: Parse of sub class constructor fails)
2012-11-30 06:03:58 +01:00
Robert Reif
bbc1747919
Fixed #3702 (False negative: fail to detect constructor implementation with slightly different (irrelevant) signatures)
2012-11-26 16:34:44 +01:00
Robert Reif
8e14d7682c
Symbol database: fix some function prototype bugs that were found during check conversions. Ticket: #4266
2012-10-30 15:48:06 +01:00
Daniel Marjamäki
b591097c87
Revert "Fixed #3190 (SymbolDatabase: Parse of sub class constructor fails)"
...
This reverts commit 1ee980184e
.
2012-10-16 19:12:27 +02:00
Robert Reif
1ee980184e
Fixed #3190 (SymbolDatabase: Parse of sub class constructor fails)
2012-10-16 06:11:28 +02:00
Robert Reif
cf7996e299
SymbolDatabase: Improved find function functionality. Taking arguments into account
2012-10-14 17:34:09 +02:00
Robert Reif
0d4b87c71e
SymbolDatabase: Improved find function functionality. Taking arguments into account
2012-10-14 17:30:37 +02:00
Robert Reif
2a2366b258
Fixed #4226 (False positive: Uninitialized variable (problem with namespace ::rtl))
2012-10-14 17:25:29 +02:00
Robert Reif
bbfd676b4e
speed up checks by caching commonly looked up stuff in the symbol database
2012-10-10 20:42:07 +02:00
Robert Reif
8ccbde117a
Fixed #4261 (CheckOther::checkComparisonOfFuncReturningBool using wrong function scope test)
2012-10-08 16:15:07 +02:00
PKEuS
929f16d892
Fixed hang on garbage code ( #4193 )
2012-09-14 15:32:35 +02:00
PKEuS
22a8e3f4e6
Replaced Tokenizer::getFunctionTokenByName() by SymbolDatabase::findFunctionByName(), which handles scopes slightly better.
2012-09-11 18:03:47 +02:00
PKEuS
e9f13e1547
Fixed false positive #4163
2012-09-10 16:14:24 +02:00
PKEuS
c2d4afc525
Support default arguments in symboldatabase for arguments without name ( #4055 )
2012-09-06 20:50:46 +02:00
PKEuS
20f989b6c4
Skip code in brackets in default argument declaration ( fixes #4057 )
2012-09-06 20:02:53 +02:00
Daniel Marjamäki
d7e521845b
SymbolDatabase: Made function static after self-check suggestion
2012-09-01 10:46:09 +02:00
PKEuS
00f6c635b8
Detect functions returning a template type in SymbolDatabase
...
Fixed comment
2012-08-22 03:37:50 -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
68e19b33ff
Fixed parsing of C++11 initializatation in initializer list ( #3957 )
2012-07-10 06:15:11 -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
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
edea4ef131
Refactoring: Renamed CheckNullPointer::isPointer to Token::isUpperCaseName
2012-06-21 19:00:53 +02:00
PKEuS
c463d97386
Refactorization:
...
- Implemented consistent behaviour of Variable::typeStartToken/typeEndToken: Skip const and static on all variables.
- Simplified patterns containing "static|" or "const|" when matching typeStartToken.
2012-06-08 09:05:02 -07:00
Daniel Marjamäki
3c103e520b
Fixed #3854 (false positive: (style) Variable '_S_c_name' is assigned a value that is never used)
2012-06-05 06:37:55 +02:00
PKEuS
e2bab4b6a3
Implemented Function::nestedIn to be able to identify the scope the function belongs to, even if Function::functionScope.functionOf is not available.
...
Refactorized usage of SymbolDatabase in checkOther:
- Don't copy Function instances in checkExpressionRange
- Simplifications by more accurate usage of information in database
2012-05-24 08:40:43 -07:00
PKEuS
dc64ac2918
Removed unnecessary variable Function::start - The value is already stored in Function::functionScope->classStart.
2012-05-22 12:58:46 -07:00
PKEuS
26f5f08614
Initialize Function::start when the function is implemented, not when its defined. ( Fixes #3826 )
2012-05-22 12:30:10 -07:00
PKEuS
e8dfe2407a
Fixed crash in Variable::evaluate ( #3825 )
2012-05-22 01:29:33 -07:00
PKEuS
77927583f4
Fixed two compiler warnings spotted by edward-san (one of them was a real bug)
2012-05-17 08:29:32 -07:00
PKEuS
4bb2a1b27b
Made some functions static or const according to cppcheck results
2012-05-17 01:33:24 -07:00
PKEuS
132a95b5f2
Fixed bug in symboldatabase: Don't ignore const or static on variables declared that are declared with both keywords. ( Fixes #3805 )
2012-05-15 12:03:43 -07:00
PKEuS
1dee3b04b9
Bugfixes in SymbolDatabase:
...
- Constant pointers are now detected as variable declarations
- Probably fixed #3802
2012-05-14 12:47:02 -07:00
Edoardo Prezioso
eacf74be8d
Changed the order of some structures in order to improve, even if for a bit, their padding.
2012-05-14 20:49:03 +02:00
PKEuS
0452b03f53
Refactorizations in SymbolDatabase:
...
- Moved complete evaluation of variables type into one function executed when the variable is constructed
- Moved SymbolDatabase::ArrayDimensions to Variable::ArrayDimensions
2012-05-11 17:56:47 +02:00
PKEuS
6ef92c4fd7
Use recently implemented new constructor of ErrorLogger::ErrorMessage in checkmemoryleak.cpp and symboldatabase.cpp
...
Fixed test failure introduced in f105bf75a6
2012-05-06 04:01:56 -07:00
PKEuS
1a5fbd61d2
Splitted class TokenList from Tokenizer
2012-05-05 09:33:26 -07:00
PKEuS
aec57db9b2
Fixed #3778 : Added missing function Function::getArgumentVar
2012-05-03 13:29:41 +02:00
PKEuS
a0d92f5ed9
Refactorizations in SymbolDatabase:
...
- Skip struct keywords in argument list so that Variables declared like "Struct Foo bar" get a type
- Remvoved redundant argument from Function::addArguments
- Set Function::functionScope for global functions
- Replaced some indendation counters by Token::findClosingBracket
2012-04-27 21:51:13 +02:00
PKEuS
ebf89aa229
Fixed #3725 : Associate functions with correct parent scope when definition doesn't directly follow declaration.
2012-04-25 20:52:59 +02:00
PKEuS
cb064dc20e
Implemented generic mechanism for '<'-'>' "linkage" before link() works (Taken from Scope::findClosingBracket, but C++11 right angle bracket support added): Token::findClosingBracket
...
-> Replaced several indendation-counting mechanisms in tokenize.cpp
Fixed build failure in checkclass.cpp
2012-04-18 16:02:03 +02:00
PKEuS
f6fd44910a
Refactorizations in SymbolDatabase:
...
- Replaced Scope::access by a locally stored std::map, because its a temporary status variable that is only necessary when creating the symboldatabase
- Moved SymbolDatabase::argsMatch to Function::argsMatch, because its function specific
- Improved Scope::findClosingBracket: Improved reliability, made it static and faster
2012-04-18 13:00:34 +02:00
PKEuS
c6f6194008
Added Function::isImplicitlyVirtual to symboldatabase.cpp
...
Made SymbolDatabase::argsMatch static because its possible and necessary for Function::isImplicitlyVirtual
2012-04-17 19:50:44 +02:00
Daniel Marjamäki
26a9a1b571
Fixed #3661 (False positive: unusedPrivateFunction)
2012-04-09 11:19:19 +02:00
PKEuS
e6bcab7c35
Fixed #3360 : "type const* var;" is now recognized as variable declaration.
2012-03-24 15:10:06 +01:00
PKEuS
e938235385
Store functions which are declared but not implemented in the function list of the containing scope -> Fixed #3679
...
Refactorizations:
- Simplified some code
- Improved condition in findVariableType to reduce unnecessary comparisions of empty strings.
2012-03-23 17:59:51 +01:00
PKEuS
1747813a8b
Added check for invalid pointer casts ( #1255 )
...
Detect sign extension problems when variable is a reference (#3637 )
Refactorizations:
- Tokenizer::getFiles returns a reference instead of a pointer, because its guaranteed that no nullpointer is returned
- Remove signed/unsigned in one step for "%type% signed|unsigned"
- Fixed recently introduced compiler warning in symboldatabase.cpp
2012-02-26 11:56:32 +01:00
PKEuS
9a5f66030c
Improved unused private function check:
...
- Fixed #3628
- Added support for friend
Improved symbol database:
- friend scopes are now set
- Added findScopeByName function
Refactorizations:
- Removed some unnecessary "virtual" keywords
- Removed unnecessary _filename member variable, pass it as argument instead
- Made CppCheck::replaceAll static, since it is independant from a specific CppCheck instance, Pass string to be modified by reference
2012-02-24 20:45:56 +01:00
PKEuS
42f418db54
- Improved nullpointer check: Fixed #1171
...
- Improved accuracy of function analysis in symboldatabase
- Code cleanups
2012-02-11 12:26:48 +01:00
Edoardo Prezioso
bc034095f1
Fixed ticket #3543 (segmentation fault of cppcheck).
2012-01-31 19:34:55 +01:00