1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-14 10:17:33 +01:00
Commit Graph

1583 Commits

Author SHA1 Message Date
Matthew Brown
e0fa3adb6f Split up CallChecker to speed up Psalm 2018-01-28 18:29:38 -05:00
Matthew Brown
ed5245bc47 Go easy on unknown invocations 2018-01-28 18:13:38 -05:00
Matthew Brown
44b8b22995 Improve checks for unused variables and params 2018-01-28 17:28:34 -05:00
Matthew Brown
4a672fade8 Add a couple of optimisations suggested by Scrutinizer 2018-01-28 17:26:09 -05:00
Matthew Brown
8b740110f4 Remove more ? from docblocks 2018-01-28 17:07:09 -05:00
Matthew Brown
7ce053bd8a Make docblocks sligtly more phpdoc-compatible 2018-01-28 16:52:57 -05:00
Matthew Brown
eb2870562b Remove last two that Psalm found 2018-01-28 16:06:42 -05:00
Matthew Brown
8799b856cb Add a couple more unused code locations 2018-01-28 13:50:41 -05:00
Matthew Brown
0cf8bb435f Remove more unused code found by Psalm 2018-01-28 13:46:18 -05:00
Matthew Brown
8fd0b120df Fix test config loading 2018-01-28 12:46:58 -05:00
Matthew Brown
dd32452d90 Remove more dead code found by Psalm 2018-01-28 12:43:19 -05:00
Matthew Brown
59cdc5494f Remove unused list vars 2018-01-28 12:29:14 -05:00
Matthew Brown
f628187de9 Remove dead code found by improved Psalm checks 2018-01-28 12:01:51 -05:00
Matt Brown
2d8468cb49 Allow interface to extend travserable and pass iterable test 2018-01-26 14:08:45 -05:00
Matt Brown
576f835858 Exit early if key does not exist 2018-01-26 13:56:53 -05:00
Matt Brown
a2d11cce51 Fix static/self return type handling 2018-01-26 13:51:00 -05:00
Matt Brown
b333e90fee Fix casing of duplicate interface method check 2018-01-26 12:00:02 -05:00
Matt Brown
1320b6dd54 Fix #472 - inherit interface method docblocks if defined just once 2018-01-26 11:50:29 -05:00
Matt Brown
5e0a8c4339 Inherit correct self return type 2018-01-26 10:59:30 -05:00
Matt Brown
62401f15fd Prevent finding unused classes and methods when multithreaded 2018-01-25 15:40:01 -05:00
Matt Brown
75fd14c492 Fix long line 2018-01-25 14:19:22 -05:00
Matt Brown
450618cc35 Treat do expression as statements plus loop 2018-01-25 13:46:17 -05:00
Matt Brown
1a2d13ae32 Ignore falsable issues from core functions 2018-01-25 13:07:36 -05:00
Matt Brown
d67f1e3c28 Fix #252 - allow custom vendor directory 2018-01-25 11:32:54 -05:00
Matt Brown
cf7c5c2a0d Fix #470 - follow vendor directory symlinks 2018-01-25 11:07:16 -05:00
Matt Brown
127c743906 Fix #471 - assign static class const to mixed 2018-01-25 10:47:15 -05:00
Matthew Brown
ea28ee709d Improve unused variable detection slightly 2018-01-25 01:04:26 -05:00
Matt Brown
543872f186 Allow @psalm-ignore-falsable-return annotation
Downgrades issues around use of current(), reset(), end() etc.
2018-01-24 18:52:58 -05:00
Matt Brown
f46cf729bb Allow null checks against preg_replace and related 2018-01-24 17:07:03 -05:00
Matt Brown
b0f3992f36 Remove stopOnFirstError config option, because it hasn’t worked for a while
Fixes #248
2018-01-24 16:22:54 -05:00
Matt Brown
93ac3eaadb Fix #213 by evaluating switch statements better 2018-01-24 16:15:53 -05:00
Matt Brown
24cbe6a52a Fix #466 - initialize variable 2018-01-24 13:52:34 -05:00
Matt Brown
e905fc2660 Prevent offset if key doesn’t exist 2018-01-24 13:50:33 -05:00
Matt Brown
f0ee7203ec Copy over infinite loop protection 2018-01-24 13:38:53 -05:00
Matt Brown
445b128a50 Fix recursion in static calls too 2018-01-24 13:26:24 -05:00
Matt Brown
72a4f148ff Prevent infinite loops when analysing private functions that call each other 2018-01-24 13:11:23 -05:00
Matt Brown
0018dee5e3 Fix single file checks 2018-01-24 12:00:10 -05:00
Matthew Brown
78e34c0548 Ignore nonexistent static class constants 2018-01-24 00:17:20 -05:00
Matthew Brown
b06cfd025a Allow continue inside case statement as alias for break
Fixes #464
2018-01-24 00:01:08 -05:00
Matt Brown
dea5d92e9b Add support for static::class 2018-01-23 15:46:14 -05:00
Matt Brown
c0fda0ef1e Allow instanceof static checks 2018-01-23 14:46:46 -05:00
Matt Brown
31e57dbdfa Add generic support for current on array 2018-01-23 14:20:37 -05:00
Matt Brown
abf561bb7d Improve Psalter return type additions 2018-01-23 12:03:18 -05:00
Matthew Brown
507007a2bf Add DeprecatedInterface and emit DeprecatedClass in more places
Fixes #463
2018-01-23 09:09:43 -05:00
Matthew Brown
fdadcd3a70 Fix implemented interface checks for self/static 2018-01-23 01:32:16 -05:00
Matt Brown
e249c27308 Don’t update return types to null 2018-01-22 18:00:19 -05:00
Matt Brown
e58e824af3 Make sure replacements only happen when called for 2018-01-22 13:54:32 -05:00
Matthew Brown
bfb31bb669 Lowercase folder name 2018-01-22 02:08:06 -05:00
Matthew Brown
2994d1e339 Add tests for reference checks 2018-01-21 23:42:57 -05:00
Matthew Brown
e8487e86f0 Make sure else/elseif roots are at the if declaration 2018-01-21 22:05:57 -05:00
Matthew Brown
0fcba8547c Make the ordering for file manipulations strict as possible 2018-01-21 22:01:02 -05:00
Matthew Brown
dea1d58b2a Fix #461 - allow multiple replacements at the same location 2018-01-21 21:24:22 -05:00
Matthew Brown
68b00ea49a Add automatic fix for PossiblyUndefinedVariable 2018-01-21 16:24:20 -05:00
Matthew Brown
bc9761f6c9 Create Codebase out from ProjectChecker 2018-01-21 13:45:33 -05:00
Matthew Brown
e05a7c00cc Break FileScanner out from FileChecker 2018-01-21 12:44:46 -05:00
Matthew Brown
f4a9306eee Add descriptive comments about storage performance 2018-01-21 10:53:17 -05:00
Matthew Brown
9b6b03ff9f Create Config before ProjectChecker, and remove test-specific code from FileChecker 2018-01-21 10:22:04 -05:00
Matthew Brown
67ef894ecc Add extra trait test 2018-01-21 00:32:45 -05:00
Matthew Brown
92e43b8fa0 Add a few optimisations 2018-01-20 21:22:33 -05:00
Matthew Brown
799aef628e Fix type assignment checks 2018-01-20 11:48:16 -05:00
Matthew Brown
5200ffa214 Do not crash on intersection type method lookup 2018-01-20 01:04:15 -05:00
Matt Brown
9f2a0847a4 Fix #453 - catch bad objectlike type when analysing docblock 2018-01-19 16:06:30 -05:00
Matt Brown
6ce4aa19e4 Fix formatting in examples 2018-01-18 17:41:14 -05:00
Matt Brown
4b4e09277c Fix #450 - add checks for duplicate array keys
And fix the embarassing errors in tests
2018-01-18 17:16:50 -05:00
Tyson Andre
77b41f4e9f Bring phpdoc @param up to date 2018-01-18 16:07:48 -05:00
Scott
0d4bf94017 Return an empty string on magic __toString method
We can't throw exceptions here, due to engine constraints.
2018-01-17 18:33:02 -05:00
Scott
2bab66855b Specify delimiter in preg_quote
```
PHP Warning:  preg_match(): Unknown modifier 't' in /home/scott/project-redacted/vendor/vimeo/psalm/src/Psalm/Checker/Statements/Block/IfChecker.php on line 166
```
2018-01-17 18:15:13 -05:00
Matt Brown
a253ca68bc Allow array_filter to inspect closure bodies 2018-01-17 16:07:46 -05:00
Matt Brown
2212d7c032 Reinstate $this type after parent call
Fixes #444
2018-01-17 11:00:58 -05:00
Matthew Brown
2b122cb80e Fix compact call back 2018-01-15 21:01:29 -05:00
Matthew Brown
1d16f1e352 Update the callmap from Phan 2018-01-15 20:21:08 -05:00
Matthew Brown
14e7b75dbb Fix bad formatting for ibase_query 2018-01-15 15:27:46 -05:00
Matthew Brown
26945acce6 Move ClassLikeChecker::analyze into ClassChecker and InterfaceChecker 2018-01-14 13:08:24 -05:00
Matthew Brown
bd6e4a09bd Refactor to break up too-large-files 2018-01-14 12:09:40 -05:00
Matthew Brown
e402ae978a Fix Array_ items nullability 2018-01-13 18:33:32 -05:00
Matthew Brown
2a38bec5bc Fix style 2018-01-13 02:08:53 -05:00
Matthew Brown
f3bfb089ad Don’t investigate property mutations if they’re not visible 2018-01-13 01:52:46 -05:00
Matthew Brown
95553ffc0e Fix by ref method location 2018-01-13 01:25:13 -05:00
Matthew Brown
5b45909d6f Use better method for determining by-reference status of functions 2018-01-13 01:15:00 -05:00
Matthew Brown
6e6c20b968 Remove unused property 2018-01-13 00:45:28 -05:00
Matthew Brown
d61829adde Allow the use of property docblocks without all docblocks 2018-01-13 00:32:20 -05:00
Matthew Brown
5d9ebd06d6 Don’t check classes after extension_loaded call 2018-01-12 23:47:36 -05:00
Matthew Brown
db7b80d391 Fix ArrayIterator::setOffset param type 2018-01-12 23:46:11 -05:00
Matthew Brown
573260b16d Don’t warn about null array access if we’re ignoring null issues 2018-01-12 18:04:11 -05:00
Matt Brown
21eafd8bfc Fix #352 with a mixed copout if the use is passed by reference 2018-01-12 12:33:26 -05:00
Matthew Brown
7fa541e39b Allow reference-returning functions to be passed as arguments of byref functions 2018-01-11 23:18:13 -05:00
Matt Brown
4ea1eb3e2c Fix #436 - get the right location for stubbed functions before analysing their calls 2018-01-11 17:39:12 -05:00
Matt Brown
2120d258a4 Fix formatting of return type adder 2018-01-11 15:50:58 -05:00
Matthew Brown
49981f63c6 Be less alarmist info issues, colour-wise 2018-01-10 23:29:46 -05:00
Matthew Brown
fb9f20f4b8 Find unused properties with dead code checks
Fixes #424
2018-01-10 23:29:18 -05:00
Matt Brown
d93906243d Fix incorrect missing return type 2018-01-10 13:04:37 -05:00
Matt Brown
72848477c2 Add all Possibly* issues to more lenient config
And add granularity to InvalidPropertyAssignment* issues
2018-01-10 10:56:43 -05:00
Matthew Brown
75daea5f04 Fix #382 - improve reserved word checks 2018-01-10 00:07:47 -05:00
Matthew Brown
6b68da0e4d Always check typehints for bad classes 2018-01-09 22:46:55 -05:00
Matthew Brown
89af8f2c2c Fix #434 - preserve formatting when replacing docblocks 2018-01-09 22:33:36 -05:00
Matt Brown
27e47365e3 Fix #422 - be better about checking isset call variables 2018-01-09 19:33:39 -05:00
Matt Brown
9d63faf544 Fix SplFixedArray::toArray return type 2018-01-09 17:14:13 -05:00
Matt Brown
3b5ddb8dc2 Reduce use of __toString and remove profiling 2018-01-09 15:44:31 -05:00
Matt Brown
edde8930af Speed up Psalm by caching result of Union::getId 2018-01-09 15:05:48 -05:00
Matt Brown
1a048040bf Move IssueBuffer finish logic into the command line 2018-01-09 11:49:10 -05:00
Matt Brown
916ae930e2 Use properly-cased version of class name 2018-01-09 10:49:29 -05:00
Matthew Brown
3f3c1380ee Fix erroneous error about no parent when analysing trait call 2018-01-09 09:22:23 -05:00
Matthew Brown
c6ee617cd0 Prevent generic objects from appearing in typehints 2018-01-09 00:35:26 -05:00
Matthew Brown
de269f969b Void return types shouldn’t magically become null ones 2018-01-09 00:29:43 -05:00
Matthew Brown
f44ed22063 Fix null return 2018-01-08 20:12:24 -05:00
Matt Brown
914a352146 Do not fail on a null type here 2018-01-08 18:41:50 -05:00
Matt Brown
27db90dd1e Fix bad fix 2018-01-08 18:30:30 -05:00
Matt Brown
faee4f6a0d Fix issue with return type of null 2018-01-08 18:28:55 -05:00
Matt Brown
b373d6093a Be more lenient with nullable docblock types, allow no return statements 2018-01-08 17:17:49 -05:00
Matt Brown
65bd144cec Remove typehint 2018-01-08 11:05:29 -05:00
Matt Brown
be779382d1 Fix #428 - remove from_docblock on reconciled types 2018-01-08 10:32:58 -05:00
Matthew Brown
c28b804633 Fix potential filtering of non-zero keys 2018-01-08 01:38:25 -05:00
Matthew Brown
8ababf1537 Allow assertions on mixed vars 2018-01-08 00:14:02 -05:00
Matthew Brown
8e4f8fabe3 Fix getenv calls
Fixes #386
2018-01-08 00:09:22 -05:00
Matthew Brown
bb41b92789 Filter forumulae to remove assertions on unknowable things 2018-01-07 23:59:25 -05:00
Harrison Heck
78346b3400 Fix method call missing object. 2018-01-07 23:49:26 -05:00
Matthew Brown
66fa081488 Fix issue with nullable types going into docblock 2018-01-07 18:06:31 -05:00
Matthew Brown
fe96868e27 Add documentation 2018-01-07 17:25:23 -05:00
Matthew Brown
e8ad6a477e Fix missing docblocks 2018-01-07 17:25:23 -05:00
Matthew Brown
693c7a81fa Improve tracking of docblock types 2018-01-07 17:25:23 -05:00
Matthew Brown
39685e1be6 Collapse Issue inheritance and rename new issues 2018-01-07 17:25:23 -05:00
Matthew Brown
5d259dbd1e Fix single line detection bug (found by Psalm!) 2018-01-07 17:25:23 -05:00
Matthew Brown
aa3f60bad1 Fix style issues 2018-01-07 17:25:23 -05:00
Matthew Brown
77b6b397fc Handle comments in area where return type should be 2018-01-07 17:25:23 -05:00
Matthew Brown
29b09f9633 Continue after param replacement 2018-01-07 17:25:23 -05:00
Matthew Brown
d096d812cb Fix local namespacing of root-level classes 2018-01-07 17:25:23 -05:00
Matthew Brown
dc053e699b Fix resolution of same-namespaced classes 2018-01-07 17:25:23 -05:00
Matthew Brown
05d2c3dcb8 Fix differ to only use available commands 2018-01-07 17:25:23 -05:00
Matthew Brown
456a2ebaaa Add --dry-run option 2018-01-07 17:25:23 -05:00
Matthew Brown
0e67aae21b Allow updating of params 2018-01-07 17:25:23 -05:00
Matthew Brown
5bae869dc6 Break file manipulation out into Psalter 2018-01-07 17:25:23 -05:00
Matt Brown
796a3c5066 Fix style issues 2018-01-07 17:25:23 -05:00
Matt Brown
928b01a7c7 Find and fix code issues where functionality is available 2018-01-07 17:25:23 -05:00
Matt Brown
53d8c7ba52 Fix issue ideas 2018-01-07 17:25:23 -05:00
Matthew Brown
93fcaf38ef Fix type regex to allow for spaces after nullable 2018-01-06 22:11:33 -05:00
Matt Brown
a76fde5b98 Break out mismatching param/return type issues from InvalidDocblock 2018-01-05 12:11:12 -05:00
Matt Brown
45eaea1ed9 Flesh out callmap type 2018-01-05 11:50:27 -05:00
Matthew Brown
2ebf6a0ef5 Allow non-lethal method signature mismatches to be suppressed 2018-01-05 01:04:07 -05:00
Matthew Brown
40587292a5 Don’t warn about wider child param types 2018-01-05 00:55:48 -05:00
Matthew Brown
3de584cbc1 Add more specific argument for ReflectionObject 2018-01-05 00:54:48 -05:00
Matthew Brown
51edeead84 Fix invalid Reflection methods 2018-01-05 00:26:51 -05:00
Matthew Brown
6f5a214365 Allow param redefinition, but complain if it differs to parent class 2018-01-05 00:19:35 -05:00
Matthew Brown
c9173c7da3 Add more specific issues for falsable/nullable invalid return types 2018-01-04 21:36:16 -05:00
Matthew Brown
6cff92d813 Don’t worry about invalid closure docblocks 2018-01-04 20:35:43 -05:00
Matthew Brown
a8ac9d4fdc Flesh out return types before comparing 2018-01-04 20:13:09 -05:00
Matthew Brown
eefa4f925f Improve Reflection class method return types 2018-01-04 20:13:09 -05:00
Matthew Brown
5995de0c9f Fix possible nullref 2018-01-04 19:31:12 -05:00
Matthew Brown
6e7bab58c4 Be better about inherited core method arg types 2018-01-04 18:58:03 -05:00
Matthew Brown
db7abc2b90 Add more debug output when using reflection/composer classmap 2018-01-04 14:13:54 -05:00
Matthew Brown
12aef22f05 Fix issue where byref differences would not be highlighted 2018-01-04 14:01:17 -05:00