Daniel Marjamäki
0e55f12140
Fixed #6165 (Remove old checkUnsignedDivision checker that uses neither AST nor ValueFlow. The CheckType::checkSignConversion should be much more accurate)
2014-09-12 16:59:16 +02:00
Daniel Marjamäki
d60cf16eb8
Sign conversion: Improved check. When its not explicit that 'int' variable is signed but it can have negative values, assume its signed
2014-09-12 16:18:42 +02:00
PKEuS
0b7281803e
Merge pull request #428 from Dmitry-Me/detectArrowAccessesViaUninitPtrs
...
Detect -> accesses on uninitialized pointers
2014-09-12 09:19:59 +02:00
Dmitry-Me
a2b30c7801
Detect -> accesses on uninitialized pointers
2014-09-12 10:19:00 +04:00
Daniel Marjamäki
7119550dde
Too big shift: fix FP when cast is used
2014-09-12 06:45:45 +02:00
Daniel Marjamäki
0ab7abded1
AST: fixed cast for 'return (long long)c << 40;'
2014-09-12 06:43:52 +02:00
PKEuS
e2136adf5b
Merge pull request #427 from Dmitry-Me/reorderChecksMoveDeclaration
...
Reorder checks, move declaration closer to where it's needed
2014-09-11 21:46:13 +02:00
PKEuS
6f92557478
Use information about pure/leak-ignore from library to improve accuracy of several bailouts
2014-09-11 20:27:07 +02:00
PKEuS
c1b0bfe4ee
Simplified code
2014-09-11 20:27:01 +02:00
PKEuS
fb0d145b34
Don't show inconclusive message redundantCopyLocalConst if --inconclusive is not set.
...
Ran AStyle
2014-09-11 19:45:52 +02:00
PKEuS
87e6a3501a
Added checktype.cpp to VS solution; Fixed MSVC warning about signed/unsigned mismatch
2014-09-11 18:47:28 +02:00
Daniel Marjamäki
7847263451
Fixed #6158 (New check: dangerous sign conversion)
2014-09-11 18:10:19 +02:00
Dmitry-Me
f58a25bebd
Reorder checks, move declaration closer to where it's needed
2014-09-11 17:14:06 +04:00
Dmitry-Me
e050fba414
Move declaration closer to where it is used
2014-09-11 11:26:35 +04:00
PKEuS
865fc9aa67
Fixed #6154 : Don't suggest to reduce scope if inner scope is a lambda.
2014-09-10 20:56:34 +02:00
PKEuS
0a416910c4
Improved speed of testrunner: Avoid repeated loading of the same library
2014-09-10 20:29:44 +02:00
PKEuS
3fade4d28c
Improved performance of library loading (~5%):
...
- Use std::string for comparison, convert to string only once
- Avoid calling tinyxml functions multiple times
2014-09-10 20:29:44 +02:00
PKEuS
c3ac91eb42
Fixed ID of message about purged configurations.
2014-09-10 20:19:21 +02:00
Daniel Marjamäki
a46f5c00a8
Minor tweaks for new CheckOther::checkIntegerOverflow checker
2014-09-10 17:26:20 +02:00
Daniel Marjamäki
974c8688c3
Fixed #1751 (Undefined Behavior: Signed integer overflow)
2014-09-10 17:02:18 +02:00
Daniel Marjamäki
a36b0e55be
CheckOther::checkTooBigBitwiseShift: improving error messages
2014-09-09 17:06:45 +02:00
Dmitry-Me
0a1b8c22d6
Simplify null pointer handling
2014-09-09 13:11:41 +04:00
Daniel Marjamäki
f111a89639
Fixed #1757 (Undefined Behavior: Shift too many bits)
2014-09-09 07:24:59 +02:00
Dmitry-Me
f7824bfd00
CheckNullPointer::isPointerDeRef: Improve handling of static member variables and functions
2014-09-09 05:36:09 +02:00
Matthias Krüger
323fd1b3dc
tokenize.cpp: fix internal warning: Found simple pattern inside Token::Match() call: ") :"
2014-09-08 22:00:57 +02:00
Martin Ettl
0ced0c33e5
Fixed #6149 : (gcc) warning: comparing floating point with == or != is unsafe. Using Tokenizer::isOneNumber function to compare a floating point number being 1.0.
2014-09-08 20:02:04 +02:00
Frank Zingsheim
8c5013adda
Fixed #6073
2014-09-07 21:53:32 +02:00
Daniel Marjamäki
db929ffd19
Fixed CID 1037074. Useless null pointer check. Created ticket #6144 .
2014-09-07 13:50:55 +02:00
PKEuS
301b668eb5
Fixed internal warning of cppcheck
2014-09-07 11:47:40 +02:00
PKEuS
ff4fc6a234
New check: Recommend expm1, log1p, erfc ( #5392 )
2014-09-07 11:38:49 +02:00
Daniel Marjamäki
7142edf03e
Improved fix for Cppcheck warning. Remove useless conditions instead of adding a new one.
2014-09-07 09:56:07 +02:00
PKEuS
605fb9039a
Merge pull request #391 from Dmitry-Me/resolveIssue1037098
...
Resolve CID 1037098
2014-09-06 23:17:52 +02:00
PKEuS
117e45f8af
Merge pull request #395 from Dmitry-Me/fixBufferOverrun
...
Fix potential buffer overrun
2014-09-06 23:03:02 +02:00
PKEuS
4859b55ce6
Merge pull request #422 from simartin/ticket_6023
...
Ticket #6023 : Properly handle template'd default template parameter values
2014-09-06 22:55:45 +02:00
Alexander Mai
e4d0435976
Merge branch 'master' of https://github.com/danmar/cppcheck
2014-09-06 22:27:38 +02:00
Alexander Mai
6b26b6ed31
Fix read access to uninitialized variable
2014-09-06 22:27:13 +02:00
Simon Martin
6e10603227
Ticket #6023 : Properly handle template'd default template parameter values.
2014-09-06 20:39:04 +02:00
PKEuS
35b00a5e05
Support rValue references in typedef ( #1823 )
2014-09-06 19:00:26 +02:00
Alexander Mai
efab840b50
#5230 Explicit reinterpret_cast should not give a warning. Lower all invalidPointerCast messages to 'portability'
2014-09-06 13:09:02 +02:00
Alexander Mai
29b46cb505
#6132 crash: daca: kvirc CheckOther::checkRedundantAssignment()
2014-09-05 20:03:34 +02:00
Martin Ettl
8a15486370
Fixed CID-1234716: Dereference after null check in lib/checkio.cpp
2014-09-01 09:00:05 +02:00
PKEuS
e8f7279039
Refactorization: Moved detection of STL strings to SymbolDatabase
2014-09-05 12:03:08 +02:00
PKEuS
4940da06c0
Calculate checksum only if necessary ( #6129 )
2014-09-05 11:05:21 +02:00
Simon Martin
eeeb816db9
Ticket #6103 : Simplify "new (type)" constructs into "new type" to avoid confusion upon certain input.
2014-09-05 08:02:18 +02:00
PKEuS
8c24553229
Support inherited member variables in setVarId ( #4101 )
2014-09-04 22:22:09 +02:00
Alexander Mai
5a96413220
#6127 crash on patch(?)-".c" file. Avoid segfault.
2014-09-04 21:28:18 +02:00
Alexander Mai
65f599bd9e
Fix version number macros
2014-09-04 21:18:15 +02:00
Daniel Marjamäki
b3e4abd82a
Fixed Cppcheck warnings
2014-09-04 18:08:56 +02:00
Daniel Marjamäki
05617d7285
Fixed #6118 (False positive: divide by zero - if condition not evaluated properly)
2014-09-04 17:52:14 +02:00
PKEuS
800b57d87e
Merge pull request #415 from Dmitry-Me/reducePatternsDuplication
...
Reduce patterns duplication
2014-09-04 07:46:59 +02:00
PKEuS
5d0aa15002
Merge pull request #416 from Dmitry-Me/removeDuplicateChecks
...
Remove duplicate checks
2014-09-04 07:46:45 +02:00
PKEuS
e4a81f9666
Improved checksum algorithm to fix configurations being purged by coincidence ( #6126 ):
...
- Better distribution of values by rotating the bits of the checksum for each token
2014-09-03 23:10:38 +02:00
Alexander Mai
270f59e76a
Fix doxygen warning and astyle formatting
2014-09-03 20:38:41 +02:00
Dmitry-Me
68d650e9ac
Remove duplicate checks
2014-09-03 14:17:34 +04:00
PKEuS
6d27ca6c9a
Fixed SymbolDatabase if unnamed struct is casted and returned ( #6125 )
2014-09-03 11:15:05 +02:00
PKEuS
bf2f76e70c
Detect and purge duplicate configurations by calculating a checksum.
2014-09-02 22:35:52 +02:00
Alexander Mai
a632f68345
#6122 segmentation fault (invalid code) in in valueFlowForLoop2. Simple fix and testcase.
2014-09-02 19:41:50 +02:00
Alexander Mai
45dc4ca6be
Fix compiler warning. Re-order if-expression for performance reasons
2014-09-02 19:18:30 +02:00
Dmitry-Me
46d24c7bfb
Reduce patterns duplication
2014-09-02 19:51:22 +04:00
Dmitry-Me
7342a81ea7
Minor refactorings. rename token. cleanup if/else.
2014-09-02 16:10:51 +02:00
PKEuS
a52401cf1b
Fixed some compiler warning about signed/unsigned conversions.
2014-09-02 11:44:51 +02:00
PKEuS
3e65cb446e
Remove "auto" keyword (storage class specifier) from C++03 and C code ( #4990 ).
2014-09-02 11:21:47 +02:00
PKEuS
2d608890a5
Improved message 'mismatchSize' ( #4167 )
2014-09-02 09:38:40 +02:00
PKEuS
ddc19febb5
Merge pull request #413 from Dmitry-Me/improveCStyleCastsDetection
...
Improve C style casts detection
2014-09-02 08:07:53 +02:00
PKEuS
428f7a6f26
Attempt to fix crashs on clang test suite.
2014-09-01 23:29:15 +02:00
PKEuS
00044aabb0
Handle ternary operator in redundantAssignment check ( #5964 )
2014-09-01 23:16:52 +02:00
Alexander Mai
a4ff30301a
#5805 'Passing value -1.0 to sqrt() leads to undefined result' is incorrect. Degrade wrongmathcall from error to warning, since it deals with implementation-defined behaviour
2014-09-01 19:31:32 +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
amai2012
9bc0e3afd6
Merge pull request #412 from Dmitry-Me/moveChecksEarlier
...
Move cheap checks earlier to avoid more expensive ones
2014-09-01 17:49:45 +02:00
Dmitry-Me
f937dde1e0
Improve C style casts detection
2014-09-01 16:40:28 +04:00
PKEuS
0995b85c09
Attempt to fix crashs when self-checking cppcheck introduced by previous commit
2014-09-01 14:12:43 +02:00
PKEuS
40e5dab9dc
Refactorization in checkmemoryleak.cpp:
...
- Use Library to detect noreturn/notnoreturn functions
- Removed realloc from std.cfg as long as there is no proper way to configure such functions
2014-09-01 13:54:33 +02:00
PKEuS
c92230dfee
Fixed crash on garbage code introduced by recent commit.
2014-09-01 12:41:30 +02:00
PKEuS
20a066bb14
Run unreachableCode checking only on executable scopes ( #5789 )
2014-09-01 11:29:39 +02:00
PKEuS
b5e064e737
Fixed unreachableCode message if a lambda is returned ( #6008 ).
2014-09-01 11:10:42 +02:00
Dmitry-Me
a6219adc9b
Move cheap checks earlier to avoid more expensive ones
2014-09-01 12:52:27 +04:00
PKEuS
353a9e9a64
Bailout for duplicateBranch check if branches are empty ( #5354 )
2014-09-01 10:19:14 +02:00
PKEuS
e35329aba3
Fixed reporting of unmatched suppressions for unusedFunction ( #4946 )
2014-09-01 10:13:03 +02:00
PKEuS
47764321f2
Several fixes to invalidScanfFormatWidthError():
...
- Different IDs for different messages (#5809 )
- severity is warning, not style, so check _settings->isEnabled() properly
- Removed never shown message text
2014-09-01 09:33:58 +02:00
amai2012
d1d3c24f3e
Merge pull request #411 from Dmitry-Me/moveDeclarationsCloserToWhereTheyreNeeded
...
Move declarations closer to where they're first used
2014-09-01 08:48:46 +02:00
PKEuS
59cccb83ce
Reimplemented version.h:
...
- Use macros to form version number and string. CPPCHECK_MAJOR, CPPCHECK_MINOR and CPPCHECK_DEVMINOR now contain the parts of the version number.
- "dev" status is now detected by comparison of CPPCHECK_MINOR and CPPCHECK_DEVMINOR, version string created accordingly.
Fixed two comments.
2014-09-01 08:48:25 +02:00
Dmitry-Me
9199dde560
Move declarations closer to where they're first used
2014-09-01 10:05:59 +04:00
PKEuS
288c94a47f
Extended Message "fflushOnInputStream" to files opened for reading.
2014-08-31 21:03:33 +02:00
PKEuS
b07f61170d
Changed severity of fflushOnInputStream to portability: The behaviour of fflush(stdin) is defined on Linux.
2014-08-31 20:56:05 +02:00
PKEuS
e1bc5f5248
Fixed false positive #4788 (break; in BOOST_FOREACH)
2014-08-31 20:40:52 +02:00
PKEuS
8722bba52a
Fixed false positive #4648
2014-08-31 20:33:27 +02:00
PKEuS
3ccdae78ba
Support __declspec(property) ( #4700 )
2014-08-31 20:17:18 +02:00
PKEuS
b8918906e6
Fixed false positive #5466
2014-08-31 19:46:30 +02:00
PKEuS
8f4662de92
No unused variable messages about std::unique_ptr|shared_ptr|auto_ptr ( #4355 )
2014-08-31 19:18:02 +02:00
PKEuS
78932094c8
Fixed crash on garbage code #6106
2014-08-31 12:12:03 +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
Daniel Marjamäki
97005d7d87
remove redundant declaration of isSameExpression. fixes gcc compiler warning.
2014-08-30 19:23:31 +02:00
Dmitry-Me
eace67ee1c
Use logical instead of bitwise operators to save cpu
2014-08-30 11:35:25 +02:00
PKEuS
e9fdfc6cd0
Fix on checking side for #6099
2014-08-30 11:18:48 +02:00
Daniel Marjamäki
3ac5f16668
Makefile: generate new Makefile with dmake
2014-08-29 18:32:50 +02:00
PKEuS
06a92e8981
Moved several condition checks from checkOther to checkCondition (former checkAssignIf)
2014-08-29 17:06:46 +02:00
Daniel Marjamäki
eeeb8aa0a7
ValueFlow: Fix crash for lambda function
2014-08-27 17:27:34 +02:00
Daniel Marjamäki
2dc3945017
astyle formatting
2014-08-27 17:27:14 +02:00
Daniel Marjamäki
ae8a20b197
Fixed #6086 (False positive: valueFlow, conditional code returns)
2014-08-27 16:59:18 +02:00
amai2012
c242faf45e
Merge pull request #408 from Dmitry-Me/continueEarlyToOmitUnneededActions2
...
Continue early to omit unneeded operations
2014-08-27 16:36:19 +02:00
Matthias Krüger
cd33d784d5
run dmake
2014-08-27 09:45:50 +02:00
PKEuS
eba8c6f6c5
Refactorization:
...
- Added missing separating comments between checks in checkother.cpp
- Moved checks related to strings into own file
2014-08-27 09:42:09 +02:00
Dmitry-Me
44ba0ca347
Continue early to omit unneeded operations
2014-08-27 11:32:14 +04:00
Daniel Marjamäki
23ec9fea8e
Fixed #6024 (False positive (nullPointer) using in 1.66)
2014-08-26 18:48:11 +02:00
PKEuS
6a4319f050
Improved simplifications:
...
- Rearranged their order to solve problems with typedefs. If we simplify chained declarations before typedef parsing, we have less complex expressions to deal with (#4777 ).
- Fixed detection of variables hiding enums
2014-08-26 15:21:19 +02:00
PKEuS
a8dc17c1d9
Fixed false positive #5566 .
2014-08-26 11:29:26 +02:00
PKEuS
5e2ea8b6cd
Fixed crash #6089 by using information stored in Variable instead of accessing Variable::nameToken
2014-08-26 11:08:21 +02:00
PKEuS
c15ead7855
Merge pull request #406 from Dmitry-Me/removeCodeDuplicationCleanupVariableNames
...
Reduce code duplication, cleanup variable names
2014-08-26 10:42:22 +02:00
PKEuS
2326e78381
Fixed #6058 : Don't detect class with unknown macro as variable.
...
Commented out crashing unit test tokenize33() in VS12
2014-08-26 10:40:00 +02:00
amai2012
e02741c82c
#5780 Crash on template code below Tokenizer::setVarId(). Fix several crashes with same location.
2014-08-26 09:12:10 +02:00
Daniel Marjamäki
cd75b2d83d
AST: fix hang for code 'MACRO({.x=1,.y=2})'
2014-08-25 19:10:16 +02:00
Dmitry-Me
d72b98bbaa
Reduce code duplication, cleanup variable names
2014-08-25 11:49:17 +04:00
Dmitry-Me
67ea470275
Break loop early, cleanup declarations
2014-08-24 20:17:41 +02:00
Daniel Marjamäki
789b01aad2
ValueFlow: fixed one more hang in valueFlowForward
2014-08-24 08:50:01 +02:00
Daniel Marjamäki
1060b30e52
AST: better AST for placement new expression 'new (a) MyClass;'
2014-08-23 13:21:36 +02:00
PKEuS
0dc4b75565
Fixed crash on invalid code #6080
2014-08-23 12:36:42 +02:00
PKEuS
7f2be2f57c
Fixed template bracket linkage in while loop simplification
...
Ran AStyle
2014-08-23 12:28:54 +02:00
amai2012
976966fe81
#5639 String literal compared with char buffer in a struct.
2014-08-23 09:41:40 +02:00
PKEuS
f01d7543f6
#6077 : Don't warn about memcpy/memmove on class containing floats.
2014-08-20 15:12:53 +02:00
PKEuS
c678937538
Fixed more false positives of #6056 :
...
- Implemented nextArgument() for usages before < and > are linked
- slightly optimized nextArgument()
2014-08-20 15:02:52 +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
PKEuS
69b7f91034
Support :: in some more places
2014-08-19 11:36:32 +02:00
PKEuS
5d50e7e9ae
Changed heuristics to detect variable constructor initialization syntax ( #6071 )
2014-08-19 11:06:52 +02:00
PKEuS
96c5983409
Merge pull request #404 from Dmitry-Me/continueEarlyToOmitUnneededActions
...
Continue early to omit unneeded actions
2014-08-19 09:45:54 +02:00
Daniel Marjamäki
b6355b991f
Fixed #6070 (false positive: Array 'array[8192]' accessed at index 8192, which is out of bounds)
2014-08-19 07:03:00 +02:00
Dmitry-Me
93b5b28c3d
Continue early to omit unneeded actions
2014-08-19 07:58:45 +04:00
PKEuS
eac2d58c9e
Fixed fix for #6056
2014-08-18 20:40:43 +02:00
PKEuS
49bafa10a0
Merge pull request #402 from Dmitry-Me/emiminateDuplicateStatements
...
Remove duplicate return statements.
2014-08-18 18:39:46 +02:00
Daniel Marjamäki
b2288e5ada
Fixed #6022 (Defect: False positive due to bug in determining bounds of for loop 'for (i = 2; i < 1; ++i)')
2014-08-18 16:45:22 +02:00
Dmitry-Me
443e846b2e
Remove duplicate return statements.
2014-08-18 16:02:35 +04:00
Dmitry-Me
a386fbb665
Avoid mutually exclusive checks
2014-08-18 14:30:52 +04:00
Dmitry-Me
120e8c0674
Make loop termination more explicit.
2014-08-18 14:00:25 +04:00
PKEuS
5483c8ed5e
Removed obsolete function from checkNullPointer
2014-08-18 11:42:50 +02:00
PKEuS
e7754be316
Fixed #6056 - properly detect member functions in setVarId()
2014-08-18 11:07:56 +02:00
PKEuS
a69860eb70
Fixed false positive #6066 : va_list may be used after being copied.
2014-08-18 10:40:39 +02:00
PKEuS
5c54f8d0d8
Support namespaces and static member variables in setVarId (only one depth) ( #6061 )
2014-08-18 10:25:30 +02:00
PKEuS
0bf7b03f96
Refactorization: Support :: in some places in checkother.cpp
2014-08-18 10:25:30 +02:00
PKEuS
df080ab5c3
Refactorization in valueflow.cpp: Removed redundant loop, rearranged code.
2014-08-18 10:25:30 +02:00
Daniel Marjamäki
d44d6ad94a
incorrect logic operator: fixed crashes
2014-08-18 05:37:07 +02:00
Alexander Mai
66d767b4b5
#6050 arithmetic on void** - fix false positive
2014-08-17 19:14:55 +02:00
Daniel Marjamäki
a52c122229
Tokenizer::createLinks2: set no template-links in 'if (a < b || c > d)'
2014-08-17 19:03:06 +02:00
Daniel Marjamäki
ebc0b6cd44
astIsFloat: Fix crash when there is no second operand for '.'
2014-08-17 14:28:31 +02:00
Daniel Marjamäki
f7f44f24c7
Fixed #5132 (False negative: incorrectLogicOperator in simple if-clause)
2014-08-17 14:04:40 +02:00
Daniel Marjamäki
5cdbe0f42d
ValueFlow: Improved value flow after for loop
2014-08-17 10:40:22 +02:00
Daniel Marjamäki
75ec97ad23
Tokenizer::simplifyKnownVariables: Fixed bad simplification in for loop header
2014-08-17 07:39:42 +02:00
Daniel Marjamäki
7ca742c454
Fixed #5062 (ValueFlow: Handle comma operator in abstract interpretation)
2014-08-17 06:42:16 +02:00
Daniel Marjamäki
65f10edcb6
Fixed #5866 (False negative: useless condition or null pointer dereference (null object after while loop, method))
2014-08-16 18:32:25 +02:00
Daniel Marjamäki
76510e0006
null pointer: perform proper null pointer checking when no --enable=warning is given.
2014-08-16 12:48:20 +02:00
Dmitry-Me
e91a63c834
Resolve CID 1037101. break after loop if tok is null because tok is dereferenced below. Ticket: #6055
2014-08-15 18:39:15 +02:00