Paul Fultz II
921887a281
Use valueFlowGeneric for valueFlowForwardExpression ( #2537 )
2020-02-16 16:02:22 +01:00
Paul Fultz II
95a48eac67
Fix issue 9598: False positive: Using iterator to local container that may be invalid for loop handling ( #2539 )
2020-02-16 15:56:52 +01:00
Daniel Marjamäki
a350ed9bc2
Fixed #9023 (AST: wrong lhs for a = b + foo(A::Hash{}("")))
2020-02-16 13:58:43 +01:00
Daniel Marjamäki
320cb9008f
minor tweaks of knownConditionTrueFalse
2020-02-15 20:21:13 +01:00
Daniel Marjamäki
67b495fc50
Fixed #9280 (False positive: unreadVariable on assignment to fixed address volatile struct member)
2020-02-15 17:31:47 +01:00
Daniel Marjamäki
8c0ad6a1b9
Fixed #9555 (False positive (unreadVariable): struct is assigned a value that is never used)
2020-02-15 16:43:06 +01:00
Daniel Marjamäki
569b2a4171
Fixed #9600 (false positive: compareBoolExpressionWithInt with --clang)
2020-02-15 14:45:12 +01:00
Daniel Marjamäki
df21da35bf
Refactoring; Use std::function instead of template type
2020-02-15 09:20:49 +01:00
Daniel Marjamäki
365da62624
Refactoring; Use std::function instead of template type
2020-02-15 09:14:14 +01:00
Daniel Marjamäki
697ca12d97
Refactoring; Convert templates to normal functions
2020-02-15 08:08:55 +01:00
Paul Fultz II
61d847cac2
Fix issue 9637: false positive: Condition 'i<2U' is always true ( #2536 )
2020-02-15 07:57:43 +01:00
Daniel Marjamäki
e04b9fe4a4
Remove unused functions
2020-02-14 20:37:33 +01:00
Daniel Marjamäki
332279326f
checkVirtualFunctionCallInConstructor; Check should be 'style' since there is no UB. Disabled the check temporarily, it should use CTU to determine if the class is a base class
2020-02-14 17:10:12 +01:00
Daniel Marjamäki
e31b2f8b73
SymbolDatabase; Set smart pointer type in Variable valueType
2020-02-14 09:40:27 +01:00
Daniel Marjamäki
5f4a900f88
astyle formatting
...
[ci skip]
2020-02-13 17:04:05 +01:00
Paul Fultz II
7368a54629
Add generic valueflow forward analysis ( #2511 )
2020-02-13 16:27:06 +01:00
Daniel Marjamäki
1b66820cdb
Revert "remove BUG_HUNTING_UNINIT conditionals"
...
This reverts commit 07a251d783
.
2020-02-12 18:54:07 +01:00
Daniel Marjamäki
3ec03b8915
Fixed #9571 (False positive: containerSize)
2020-02-12 18:53:36 +01:00
Daniel Marjamäki
3675f49a53
astyle formatting
...
[ci skip]
2020-02-12 18:52:50 +01:00
Paul Fultz II
d858bfc338
Fix issue 9599: False positive: Using object that points to local variable that may be invalid ( #2530 )
...
* Fix issue 9599: False positive: Using object that points to local variable that may be invalid
* Improve tests
* Skip else
2020-02-11 11:45:10 +01:00
Paul Fultz II
e55ddacd18
Fix issue 9597: False positive: Reference to temporary returned if explicitly casted to base class ( #2531 )
2020-02-11 11:41:41 +01:00
Daniel Marjamäki
07a251d783
remove BUG_HUNTING_UNINIT conditionals
2020-02-10 21:43:06 +01:00
Paul Fultz II
8fa7dd0fe0
Fix issue 9595: False positive: Using pointer to temporary doesn't account for const ref extended temporary lifetimes ( #2525 )
2020-02-10 18:01:11 +01:00
Daniel Marjamäki
bb701fd8be
GUI: Tweak ProjectFileDialog: Bug hunting, safe class checking
2020-02-09 21:02:28 +01:00
IOBYTE
4d58d9fc87
fix daca chromium crash ( #2527 )
2020-02-09 11:19:36 +01:00
Rikard Falkeborn
b1c6f2946a
Fix redundant FP assignment with unsigned zero ( #2521 )
...
* Refactor isNullOperand out of FwdAnalysis
* Improve isNullOperand
* Fix redundantAssignment FP with unsigned zero
* isNullValue check number
* Enhance isNullOperand to handle c++ casts
Also handle cast of NULL.
2020-02-09 11:16:08 +01:00
Dmitry-Me
e9b7e7811b
Remove unreachable code and repeated computation
2020-02-05 18:20:43 +03:00
Daniel Marjamäki
25b5304efc
GUI: Simple first hack to allow bughunting in the GUI
2020-02-04 21:20:43 +01:00
Daniel Marjamäki
ca3095746c
Fixed #9594 (False positive: Using argument that points at uninitialized variable when write only)
2020-02-04 18:56:18 +01:00
Dmitry-Me
c8df734c07
Merge overlapping patterns
2020-02-04 18:35:30 +03:00
Rikard Falkeborn
488bc9997c
Improve isSameExpression for same valued literals with followvar ( #2519 )
...
It allows (for example) cppcheck to detect that the lhs and the rhs are
the same in the following example:
double g()
{
double a = 1e1
return a & 10.0;
}
2020-02-03 09:35:24 +01:00
Rikard Falkeborn
bbfd10a69f
Bugfix Mathlib::isNullValue for hexadecimal numbers ( #2517 )
2020-02-02 16:40:36 +01:00
Daniel Marjamäki
a9f55f4985
CLI: add -isystem include paths when running Clang
2020-02-02 16:35:42 +01:00
Daniel Marjamäki
894497e704
CLI: Checking imported project with clang
2020-02-02 14:36:33 +01:00
Daniel Marjamäki
216698c164
Fix cppcheck project import for Clang parser setting
2020-02-02 12:15:23 +01:00
Daniel Marjamäki
6a2312087c
Clang import; Fix crash
2020-02-02 12:13:19 +01:00
Daniel Marjamäki
d2dd3930ae
GUI: Generate Clang files
2020-02-02 11:05:30 +01:00
Daniel Marjamäki
632dc0f141
GUI: Select parser; Cppcheck or Clang
2020-02-02 10:45:42 +01:00
Daniel Marjamäki
103ecb0257
Refactoring; Avoid templates
2020-02-01 08:52:34 +01:00
Daniel Marjamäki
0e0d88f65e
Refactoring; Avoid template<>
2020-02-01 08:39:58 +01:00
Daniel Marjamäki
e515f4ab3e
Refactoring; Remove unused function
2020-02-01 08:34:36 +01:00
Daniel Marjamäki
0de19acd43
Refactoring; Avoid template<>
2020-02-01 08:32:14 +01:00
Daniel Marjamäki
2b336ac147
Refactoring; stricter lambda capture
2020-02-01 08:28:18 +01:00
Daniel Marjamäki
6c1cc54671
Refactoring; Avoid template<>
2020-02-01 08:24:31 +01:00
Daniel Marjamäki
9eb6925976
Refactoring; Avoid template<>
2020-02-01 08:20:20 +01:00
Rikard Falkeborn
ff9c04dc28
Improve isSameExpression for literals ( #2514 )
...
Improve isSameExpression() for literals with same value but different
representation, for example the following different ways of
representing 9 as double: 9.0, 0.9e1 and 0x1.2p3.
With this change, cppcheck can (for example) correctly detect that the
else if statements are always false in the following example:
void f(double x) {
if (x < 9.0) {}
else if (x < 0x1.2p3) {}
else if (x < 0.9e1) {}
}
2020-02-01 07:22:41 +01:00
Daniel Marjamäki
fb38e87bf4
astyle formatting
...
[ci skip]
2020-01-31 14:13:52 +01:00
fuzzelhjb
b0ce3e4c0c
Support clang tidy ( #2512 )
2020-01-31 14:10:27 +01:00
fuzzelhjb
074d08e39e
Check specific Visual Studio configurations ( #2503 )
2020-01-31 07:08:38 +01:00
fuzzelhjb
d82da987e5
Support clang tidy ( #2486 )
2020-01-30 07:14:17 +01:00
Daniel Marjamäki
dcee189146
Tokenizer::setVarId: better handling of decltype()
2020-01-29 17:40:22 +01:00
Daniel Marjamäki
18124fe248
Fixed #9591 (SymbolDatabase: decltype)
2020-01-29 17:29:40 +01:00
Daniel Marjamäki
37f4ec5bbe
Clang import; Write error message when Clang is not in path
2020-01-27 18:26:17 +01:00
Daniel Marjamäki
b1abcc06df
Clang import; distinguish static variable
2020-01-27 13:00:52 +01:00
Daniel Marjamäki
830f901206
Fixed #9586 (Valuetype: Wrong type for 'true << 1')
2020-01-27 11:46:59 +01:00
Rikard Falkeborn
8819e19dae
Fix #8489 (Fix FN printf argument with parenthesis) ( #2508 )
2020-01-27 06:55:01 +01:00
Daniel Marjamäki
211d2e336d
Clang import; Handle EnumDecl without children
2020-01-26 14:35:08 +01:00
Daniel Marjamäki
66dd985c9d
Clang import; Better handling of enums
2020-01-26 07:32:14 +01:00
Daniel Marjamäki
625da9af5c
SymbolDatabase: Use range for loop
2020-01-26 07:31:04 +01:00
Daniel Marjamäki
a5a294cf13
Code cleanup
2020-01-25 18:11:54 +01:00
Daniel Marjamäki
6f8799023f
Clang import; Clang 9 fix
2020-01-25 17:22:22 +01:00
Daniel Marjamäki
b6833b525f
Clang import
2020-01-25 17:01:17 +01:00
Daniel Marjamäki
6beadd9eb9
Restore cppcheck.cpp
2020-01-25 16:14:56 +01:00
Daniel Marjamäki
f911495db3
Clang import; Handle clang-9 while loop better
2020-01-25 16:10:13 +01:00
Daniel Marjamäki
0bab9ba6e3
Clang import; Handle clang-9 range for loop
2020-01-25 14:47:51 +01:00
Daniel Marjamäki
afad8b1f5c
Clang import; Set Scope::check
2020-01-25 11:59:01 +01:00
Simon Martin
2840173a72
Ticket #9569 : Do not substitute type aliases within enum definitions. ( #2504 )
2020-01-25 10:18:37 +01:00
Simon Martin
224a41361d
Ticket #9572 : Properly detect designated initializers. ( #2496 )
2020-01-25 10:14:16 +01:00
Daniel Marjamäki
569523bbef
Clang import; Better handling of enums
2020-01-25 09:31:47 +01:00
Daniel Marjamäki
b3e192a4e1
astyle formatting
...
[ci skip]
2020-01-24 21:34:47 +01:00
Daniel Marjamäki
1cabba8755
Clang import; Improved enum handling
2020-01-24 21:34:29 +01:00
Daniel Marjamäki
0929c3cced
Cleanup code, CppCheck::checkNormalTokens executes the bug hunting code
2020-01-24 20:37:24 +01:00
Daniel Marjamäki
7db54bde6f
Run normal checks on --clang output
2020-01-24 18:04:39 +01:00
Aleksandr Serbin
11993ed999
Ticket 5607: Allow to exclude folders with glob pattern ( #2498 )
2020-01-24 07:06:09 +01:00
Daniel Marjamäki
fc813cef2a
Clang import: IfStmt
2020-01-23 16:18:39 +01:00
Daniel Marjamäki
ce77db2b1b
Clang import; EnumDecl
2020-01-23 16:06:25 +01:00
Daniel Marjamäki
fcd6c62a0d
Clang import; Always set Scope::classDef token
2020-01-23 10:33:29 +01:00
Daniel Marjamäki
6a07c2f71a
ExprEngine; Check struct member assignment
2020-01-21 20:29:13 +01:00
Daniel Marjamäki
263f80deb8
ExprEngine: Add variable value checker
2020-01-21 20:19:51 +01:00
Daniel Marjamäki
4235a29501
ExprEngine: Handle variable annotations better
2020-01-21 18:55:07 +01:00
Daniel Marjamäki
b6db5116c3
Clang import; CXXStdInitializerListExpr
2020-01-21 18:29:04 +01:00
Daniel Marjamäki
a20b3a9e2e
Clang import; better handling of string literals
2020-01-21 17:47:57 +01:00
Daniel Marjamäki
6386f0e633
Clang import; CXXDeleteExpr
2020-01-21 17:47:57 +01:00
Daniel Marjamäki
9f26e8a356
Clang import; CXXNewExpr
2020-01-21 12:16:39 +01:00
Daniel Marjamäki
7fecc17707
Clang import; CXXThrowExpr
2020-01-21 11:16:22 +01:00
Daniel Marjamäki
549df6a80e
Clang import; Fixed wrong AST
2020-01-21 11:07:47 +01:00
Daniel Marjamäki
459e906ae1
Clang import; ConditionalExpr
2020-01-21 07:00:03 +01:00
Daniel Marjamäki
e5662ceef2
Clang import; CXXDefaultArgExpr
2020-01-21 06:52:45 +01:00
Daniel Marjamäki
f048b4ca57
Clang import; CXXBindTemporaryExpr and CXXTemporaryObjectExpr
2020-01-20 21:43:25 +01:00
Daniel Marjamäki
bdc621b7a3
Clang import; MaterializeTemporaryExpr
2020-01-20 21:27:49 +01:00
Daniel Marjamäki
78fcf93342
Clang import; DoStmt
2020-01-20 20:46:33 +01:00
Daniel Marjamäki
cd3ad89777
Clang import; GotoStmt, LabelStmt
2020-01-20 19:07:10 +01:00
Daniel Marjamäki
6722ee9d3f
test/bug-hunting: add --clang option to the juliet testing
2020-01-20 18:53:40 +01:00
Daniel Marjamäki
3ccd369cf5
Clang import; CaseStmt
2020-01-20 17:38:54 +01:00
Daniel Marjamäki
d635ea4b7f
Clang import; SwitchStmt
2020-01-20 14:24:03 +01:00
Daniel Marjamäki
dea6cc3b76
Clang import; FloatingLiteral
2020-01-20 14:10:43 +01:00
versat
0cf82d6d45
cppcheck.cpp: Fix reserved name "stderr"
...
Using "stderr" as variable name results in build errors on Windows.
2020-01-20 11:12:23 +01:00
Daniel Marjamäki
9bc43fca1d
Fixed crash when printing out ValueFlow debug output
2020-01-20 08:11:57 +01:00
Daniel Marjamäki
8ac2cdd9ff
Clang import; If there are syntax errors then abort analysis
2020-01-19 17:30:57 +01:00
Daniel Marjamäki
0eccffe8e3
--clang; require that --cppcheck-build-dir. output files are needed.
2020-01-19 12:33:17 +01:00
Daniel Marjamäki
7d4bd57cc5
Clang import; Fix crash
2020-01-19 09:45:47 +01:00
Daniel Marjamäki
84bb024662
Refactoring; Reuse variable typeSize
2020-01-19 09:17:38 +01:00
Daniel Marjamäki
a6ab986217
ExprEngine; In divbyzero report rhs token because that has better location
2020-01-19 09:16:02 +01:00
Daniel Marjamäki
16981f0813
ExprEngine; Fix FP for BailoutValue
2020-01-19 09:10:50 +01:00
Daniel Marjamäki
3d1cb87a11
Clang import; range for
2020-01-18 19:23:37 +01:00
Daniel Marjamäki
36a67c7022
Clang import; fixed ValueType::typeSize calls
2020-01-18 17:32:59 +01:00
Daniel Marjamäki
cefd7fb33f
Fix testrunner
2020-01-18 12:29:03 +01:00
Daniel Marjamäki
269d21e972
Clang import; Better array handling in sizeof()
2020-01-18 11:55:50 +01:00
Daniel Marjamäki
b905547c76
Clang import; Better sizeof/type handling
2020-01-18 11:07:36 +01:00
Daniel Marjamäki
f7a30fc99f
Rename Verification => Bughunting
2020-01-18 07:25:57 +01:00
Rikard Falkeborn
0bb98aeef9
Fix 9577 (endless recursion in Valueflow::bifurcate()) ( #2492 )
...
Ensure bifurcate() does not recurse endlessly where a variable is
initialized recursively, or a variable is initialized as x(0) or x{0}
followed by a recursive assignment (for example int x(0); x = x / 1;).
The first case is solved by bailing out if there initialization is done
using x(0) or x{0}, the second by adding a missing depth argument to a
recursive call.
2020-01-17 03:17:26 +01:00
Daniel Marjamäki
bc39cd73f0
Clang import; fix wrong 'sizeof' import
2020-01-17 03:15:08 +01:00
Daniel Marjamäki
272fbfeb74
ExprEngine; Fix Z3 usage for floats
2020-01-16 19:35:05 +01:00
Daniel Marjamäki
bc737be0b5
ExprEngine; OLD_Z3 => NEW_Z3
2020-01-16 18:59:47 +01:00
Dmitry-Me
01e0a61ebe
Break loops earlier
2020-01-16 18:37:10 +03:00
Daniel Marjamäki
76a048a2c1
Bug hunting; 'hide' the uninitialized variables checking, I need to focus on division by zero and clang import
2020-01-15 21:06:00 +01:00
Daniel Marjamäki
9507fccfc1
ExprEngine: Quick hacks for old Z3 compatibility
2020-01-15 19:46:00 +01:00
Daniel Marjamäki
52d72b6ffc
ExprEngine; Fix crash
2020-01-15 18:35:55 +01:00
Daniel Marjamäki
446e7c3c0e
ExprEngine; Fix fp in edgevalue
2020-01-15 17:51:34 +01:00
Daniel Marjamäki
c79ec9e956
ExprEngine: sizeof()
2020-01-15 15:24:36 +01:00
Daniel Marjamäki
5ac0eb100c
Bug hunting; avoid crash when argument is NULL
2020-01-15 07:15:47 +01:00
Daniel Marjamäki
7820b5dbcc
Rename 'Verification' to 'Bug hunting'
2020-01-14 21:17:07 +01:00
Daniel Marjamäki
dfbf347912
Clang import; Better type
2020-01-13 17:56:30 +01:00
Daniel Marjamäki
a17ded3862
Clang import; handle {} that is not a scope better
2020-01-13 13:16:02 +01:00
Daniel Marjamäki
066e43cce3
Clang import; InitListExpr
2020-01-13 12:44:35 +01:00
Daniel Marjamäki
bd41b3d713
Clang import; Fixed function arguments in SymbolDatabase
2020-01-13 05:52:46 +01:00
Daniel Marjamäki
9f3df5d630
Clang import; CompoundAssignOperator
2020-01-12 18:41:46 +01:00
Daniel Marjamäki
ae7ff940e6
Clang import; minor tweaks
2020-01-12 18:05:45 +01:00
Daniel Marjamäki
1e207e42c5
CppCheck: Try to handle '"' properly in split()
2020-01-12 17:13:26 +01:00
Daniel Marjamäki
f4f4377fbf
Clang import; Constructor arguments, ExprWithCleanups
2020-01-12 16:49:02 +01:00
Daniel Marjamäki
47e186864b
Clang import; Set function pointer properly
2020-01-12 15:15:21 +01:00
Daniel Marjamäki
fd1809590c
Token: Write function() in ast debug output
2020-01-12 15:04:25 +01:00
Daniel Marjamäki
0e75f16510
verificationUninit: ignore bailout values until it's less noisy
2020-01-12 14:52:15 +01:00
Daniel Marjamäki
1bad69923c
astyle formatting
...
[ci skip]
2020-01-12 13:35:39 +01:00
Daniel Marjamäki
166402b5cf
verificationUninit: Avoid some false positives for 'bailout' values
2020-01-12 13:35:09 +01:00
Daniel Marjamäki
88429382b7
Verification; Avoid obvious verificationUninit false positives during bailout
2020-01-12 11:53:49 +01:00
Daniel Marjamäki
55ea06354b
ExprEngine: BailoutValue is uninitialized
2020-01-12 10:42:20 +01:00
Daniel Marjamäki
e78438e990
astyle formatting
...
[ci skip]
2020-01-12 10:32:47 +01:00
Daniel Marjamäki
7704f6578f
Verification; Fix struct member false negative
2020-01-12 10:29:03 +01:00
Rikard Falkeborn
c6e74f4c10
Mathlib: Fix value of suffixed binary integer literal ( #2487 )
2020-01-12 08:11:12 +01:00
Daniel Marjamäki
668212ac2f
SymbolDatabase: Type lookup for clang type strings
2020-01-11 21:24:15 +01:00
Daniel Marjamäki
cde757bcd3
Clang import; Type fixes
2020-01-11 18:39:59 +01:00
Daniel Marjamäki
abc51afcf1
Clang import; parse clang ast type with ValueType::parseDecl
2020-01-11 18:07:57 +01:00
Daniel Marjamäki
ba244be2d6
Clang import; getType()
2020-01-11 16:49:30 +01:00
Daniel Marjamäki
aa090a8b45
Clang import; addTypeTokens for function return type
2020-01-11 16:40:22 +01:00
Daniel Marjamäki
f7f5f10de4
Clang import; Tweaked IfStmt (Clang 3.8 compatibility)
2020-01-11 16:15:18 +01:00
Daniel Marjamäki
05a34142aa
Clang import; forward class declaration
2020-01-11 16:02:25 +01:00
Daniel Marjamäki
380cc78077
Clang; Run ValueFlow
2020-01-11 14:00:41 +01:00
Daniel Marjamäki
6b983a9587
Revert ValueFlow changes, there was unexpected problems in testrunner
2020-01-11 13:11:19 +01:00
Daniel Marjamäki
052eaba632
Clang; run ValueFlow analysis
2020-01-11 13:04:51 +01:00