Matt Brown
a0fbac347e
Prevent features pre-php-8
2020-10-14 17:09:56 -04:00
Matt Brown
724b25b918
Change control_flow_graph to data_flow_graph
2020-10-13 17:28:12 -04:00
Matt Brown
516141a380
Rename ControlFlowGraph to more appropriate DataFlowGraph
2020-10-13 16:49:03 -04:00
Matt Brown
1ae9a6127e
Fix #4315 - prevent crash when setting unknown property in finally
2020-10-13 08:32:26 -04:00
Matt Brown
bb7d7132f7
Do arithmetic for preg_split arguments
2020-10-12 20:26:02 -04:00
Matt Brown
b08d70f977
Fix #4252 - fix xml generation
2020-10-12 18:39:26 -04:00
orklah
62e79fb7ea
param types ( #4313 )
2020-10-12 15:46:47 -04:00
orklah
10f2966dcb
return types ( #4311 )
...
* return types
* remove willReturn for void methods
2020-10-12 15:02:52 -04:00
Matt Brown
fcfa746ba8
Fix #4310 - prevent literal class check on union
2020-10-12 14:45:11 -04:00
Matt Brown
d16c0de872
Add slash
2020-10-12 14:32:44 -04:00
Matt Brown
464795d86c
Fix #4309 - improve reuse of callmap callable inference
2020-10-12 13:46:43 -04:00
Matt Brown
7195275993
Fix #4299 - only allow unpacking for the zeroeth-indexed element
2020-10-08 09:51:27 -04:00
Matt Brown
e9b520d72d
Ignore precondition issues in loop
2020-10-07 20:24:50 -04:00
Matt Brown
3b19913b44
Unbreak CI
2020-10-07 18:50:30 -04:00
Matt Brown
a9c145a725
Convert numeric literal strings to their int/float equivalents for numeric operations
2020-10-07 18:06:41 -04:00
Matt Brown
443025eab8
Fix addition of int and string type
2020-10-07 18:01:41 -04:00
Matt Brown
8b7657f379
Fix #4297 - use correct property id for each different MissingConstructor error
2020-10-07 17:54:00 -04:00
Matt Brown
c8d4bafb85
Improve accuracy of messages
2020-10-07 17:26:37 -04:00
Matt Brown
c2108e89db
Warn about impossible/redundant conditions in RHS of ||
2020-10-07 17:04:01 -04:00
Matt Brown
595b8178e0
Improve error message
2020-10-07 15:36:31 -04:00
Matt Brown
54ec83c5ee
Use better locations for errors
2020-10-07 13:53:35 -04:00
Matt Brown
639ae61284
Always check LHS of or condition before applying to RHS
2020-10-07 13:40:09 -04:00
Matt Brown
26a674dcb4
Improve message even more
2020-10-07 12:41:36 -04:00
Matt Brown
8f188877ae
Improve language further
2020-10-07 12:34:28 -04:00
Matt Brown
95ec310807
Clarify names
2020-10-07 12:24:36 -04:00
Matt Brown
f49884a30d
Fix bug
2020-10-07 12:04:54 -04:00
Matt Brown
f655b97330
Simplified even more
2020-10-07 12:00:53 -04:00
feek
8d2db4e673
feature: universal object crates ( #3948 )
...
* feature: universal object crates
* docs: document universal object crate config option
Co-authored-by: Matthew Brown <github@muglug.com>
2020-10-07 09:56:21 -04:00
Matt Brown
377dc8da8f
4.x - change/remove some default config values
2020-10-05 10:08:41 -04:00
Matt Brown
fb604bfacb
4.x - move class constants into their own storage object
2020-10-05 09:50:32 -04:00
Matt Brown
ea47548dd0
4.x - Prevent AfterFunctionCallAnalysisInterface from rewriting return types
2020-10-04 23:39:20 -04:00
Matt Brown
939297484c
4.x - rename TFn to TClosure
2020-10-04 23:32:01 -04:00
Matt Brown
549b200aa7
Remove mixed assignment issue
2020-10-04 17:53:26 -04:00
Matt Brown
ec3501b244
Ensure PHP 8 continuation of 7.4 method signature features
2020-10-03 23:34:29 -04:00
Matt Brown
127e66df65
Elevate trait mismatch issues in PHP 8.0
2020-10-03 22:59:43 -04:00
Matt Brown
1a11897849
4.x - add support for the nullsafe operator
2020-10-03 20:21:52 -04:00
Matt Brown
6a91c2f70e
Fix @no-named-arguments more
2020-10-02 21:09:37 -04:00
Matt Brown
009b33b17d
Support @no-named-args when calling in PHP 8
2020-10-02 20:58:51 -04:00
Matt Brown
5a94043a7f
Unbreak gettype support
2020-10-02 20:33:35 -04:00
Matt Brown
63a11bae15
4.x - Support named arguments
...
Ref #4089
2020-10-02 20:27:01 -04:00
Matt Brown
5bcd1bbb75
4.x - add support for get_debug_type function
...
Ref #4089
2020-10-02 19:15:47 -04:00
Matt Brown
74934ffdbb
4.x - rename GetClassT to TDependentGetClass
2020-10-02 18:47:23 -04:00
Matt Brown
c9e47450a7
Fix #4266 - prevent OOM when analysing closure unioned with invokable class
2020-10-02 00:47:42 -04:00
Matt Brown
35081c0d21
Ensure catch variables are marked as used
2020-09-30 13:51:02 -04:00
Matt Brown
fc001cdf65
Treat func_get_args as using function params
2020-09-30 13:08:01 -04:00
Matt Brown
14efde286f
4.x - refactor unused variable detection
...
This turns unused variable detection into an explicit control-flow problem, where before we had a more simplistic mark-and-sweep algorithm
2020-09-30 12:28:13 -04:00
Matt Brown
169b2b7023
Fix analysis when there’s a break in a loop after a reassignment
2020-09-30 00:04:07 -04:00
Brown
19f88a2e31
Add improvements from unused variable checks
2020-09-28 00:45:02 -04:00
Brown
1afbce82ca
Ensure loop marks vars as possibly assigned
2020-09-27 17:50:48 -04:00
Bruce Weirdan
d9776aa710
Fixes crash due to class/filename mismatch ( #4247 )
...
Introduced in 56cddd16bf
2020-09-26 13:31:38 -04:00
Brown
4f28b38556
Fix unused var in finally false-positive
2020-09-25 10:20:22 -04:00
Brown
c17bacd682
Prevent duplicate switch return types
2020-09-25 09:45:20 -04:00
Brown
d52d7ef6aa
Add extra loops for more reliable analysis
2020-09-25 00:59:58 -04:00
Brown
da65a4327f
Move taint graph functionality into its own object
2020-09-25 00:37:40 -04:00
orklah
83ca918824
preg_split can't take null in limit ( #4236 )
...
* preg_split can't take null in limit
* fix wrong type in preg_split
2020-09-22 13:46:37 -04:00
orklah
37a2f8a33d
unused use statements ( #4228 )
2020-09-22 01:10:46 -04:00
Brown
3593a120f3
Add missing = true
2020-09-22 01:10:11 -04:00
orklah
250fa8e42d
misc changes ( #4227 )
...
* misc changes
* misc changes
2020-09-22 00:44:31 -04:00
Brown
275c6bf4e7
Propagate has_returned flag
2020-09-22 00:43:13 -04:00
Brown
3015aca2df
Fix fudging var
2020-09-21 16:23:44 -04:00
Brown
b501db6dd2
Skip currently-failing undefined variable test
2020-09-21 16:01:14 -04:00
Brown
cdb2b5caf6
Be a little bit more robust in finally handling
2020-09-21 15:37:10 -04:00
Brown
3e0f449163
Detect more issues inside finally block
2020-09-21 15:16:19 -04:00
Brown
fe94ae0603
Make sure to union try-set vars
2020-09-21 14:33:34 -04:00
Brown
7bd1c43be1
Don’t forget control actions
2020-09-21 11:18:30 -04:00
Brown
56cddd16bf
Rename TaintGraph to ControlFlowGraph because it’s about to do more
2020-09-20 23:59:52 -04:00
Brown
70b8c8c0e4
Revert StatementsAnalyzer change
2020-09-20 21:01:59 -04:00
Brown
ef612ea598
Fix tests
2020-09-20 20:58:34 -04:00
Brown
0f6a271858
Improve file-based suppression of taints
2020-09-20 19:37:25 -04:00
Brown
5c23a3d7b3
Localise taint analysis better
2020-09-20 19:26:49 -04:00
Brown
2968b3b065
Add to StatementsAnalyzer taint object instead of Context
2020-09-20 18:42:21 -04:00
Brown
abb9502921
Rename Taint object to TaintGraph
2020-09-20 18:27:02 -04:00
orklah
de16308f2e
useless comparison ( #4223 )
...
* remove unused code
* fix wrong fix
2020-09-20 13:01:27 -04:00
orklah
24a38f21ce
Use array destructuring when possible ( #4221 )
...
* list usage
* fix inversion
2020-09-20 12:55:38 -04:00
orklah
1a1b88bb5e
add visibilities to constants ( #4219 )
2020-09-20 12:54:46 -04:00
Brown
ef3cf67f50
Fix #4198 - make analysis of class-string property assignments more robust
2020-09-20 09:18:35 -04:00
orklah
cb7065ae07
replace deprecated methods with their equivalent ( #4217 )
2020-09-20 08:56:49 -04:00
orklah
a9a364e363
Misc improvements ( #4216 )
...
* misc changes
* fix CI
2020-09-20 08:55:28 -04:00
orklah
b19f0a7034
Remove empty() and use strict comparison when safe ( #4211 )
...
* replace empty usage with stricter checks
* use strict comparison when safe
* replace is_null with === null for consistency
2020-09-19 18:26:51 -04:00
Brown
1ac527bbf1
Meke staticy methods properly static
2020-09-19 18:24:36 -04:00
Brown
0ae436d335
Fix a couple of false-positive redundant conditions
2020-09-19 18:12:14 -04:00
Brown
f973937aec
Fix #4209 - allow hinting arrow function return type
2020-09-19 14:59:19 -04:00
orklah
191495328a
Fix errors in return types ( #4189 )
...
* FunctionLikeAnalyzer::verifyReturnType returns void
* ArrayFunctionArgumentsAnalyzer::checkArgumentsMatch returns void
* AssertionFinder::scrapeAssertions can't return null
2020-09-16 17:35:55 -04:00
Brown
dda013dc2e
Only refine for matching closure union members
...
Ref #4136
2020-09-15 09:40:27 -04:00
Brown
02b725f8a2
Add back suppression
2020-09-14 11:02:04 -04:00
Brown
1df3c9365c
Fix template check
2020-09-14 10:00:09 -04:00
Brown
77e84b3817
Fix a few more things
2020-09-13 23:28:31 -04:00
Brown
c4450b930c
Fix various things
2020-09-13 22:39:03 -04:00
Brown
249903e18a
Fix style issues
2020-09-13 21:45:07 -04:00
Brown
56bae3b587
Add check for strpos dictionaries
...
Ref #4070
2020-09-13 21:42:44 -04:00
Brown
8f8dbfbd72
Fix #4122 - detect yield in function arguments
2020-09-13 17:13:26 -04:00
Brown
f180fb23bc
Fix #4178 - always detect missing property types
2020-09-13 16:50:50 -04:00
Bruce Weirdan
689027c92d
Support multiple issue types in @psalm-suppress
( #4179 )
...
* Accept multiple issue names in `@psalm-suppress`
Fixes vimeo/psalm#1575
* Accept multiple issue types on statement docblocks as well
* Proper highlighting of individual issues in compound suppressions
2020-09-13 16:41:14 -04:00
Bruce Weirdan
cd110c7e2f
Added @psalm-stub-override
for classlikes and methods ( #4177 )
...
Fixes vimeo/psalm#1252
2020-09-13 16:40:31 -04:00
orklah
da47588f91
replace return;
by return null;
in every non-void method, add return null;
when mising, add return types, remove redundant phpdoc ( #4176 )
2020-09-13 16:39:06 -04:00
Brown
ded9237176
Fix bad error flagging
2020-09-13 16:38:32 -04:00
Brown
9ed09d2679
Fix #4127 - improve error message for unused closure var
2020-09-12 17:03:11 -04:00
ygottschalk
5b0c9b1a28
added array-size max constraint to greater check ( #4175 )
...
added a few unit tests
2020-09-12 16:13:13 -04:00
Brown
09d22cb05c
Fix #4169 - add appropriate bounds check
2020-09-12 11:33:26 -04:00
Toshiyuki Goto
ad437c5265
Workaround to PhpScoper group use bug in Box ( #4174 )
2020-09-12 11:24:40 -04:00