Matthew Brown
82fe241831
Add included files when scanning cached storage
2018-02-19 15:17:28 -05:00
Matthew Brown
d8b9bcba4d
Normalise file path for cache
2018-02-19 12:06:13 -05:00
Matthew Brown
724e72af58
Don’t get statements from cache if file hasn’t changed
2018-02-19 11:53:30 -05:00
Matthew Brown
634375ae94
Make igbinary the default serializer
...
Fix #484 and fix #527
2018-02-19 11:14:07 -05:00
Matthew Brown
81fd016120
Fix #193 - allow caching of storages
2018-02-19 00:27:39 -05:00
Tyson Andre
aea3779c96
Fix unused imports in psalm, wrong param order doc comments ( #523 )
...
(Some of the imports appear as strings elsewhere in the same file)
2018-02-18 17:55:11 -05:00
Matthew Brown
ec5c9c862c
Add missing file
2018-02-17 20:45:09 -05:00
Matthew Brown
59dc239c89
Fix #522 - prevent interface instantiation
2018-02-17 18:53:02 -05:00
Matthew Brown
108ca54867
Fix #516 - make sure --find-references-to doesn’t output missing references
2018-02-17 17:45:30 -05:00
Matthew Brown
a0e88cb16f
Fix #518 - improve dead code detection to cover variable method calls
2018-02-17 17:23:57 -05:00
Matthew Brown
b041797cd0
Fix #519 - warn about variable calls on non-objects
2018-02-17 17:16:22 -05:00
Matthew Brown
af1155239e
Fix bug when assigning nested arrays with variable offsets
2018-02-17 12:32:19 -05:00
Matthew Brown
c87204acbf
Don’t check for unused vars when checking for initialiasations
...
Fixes #517
2018-02-17 12:02:31 -05:00
Matthew Brown
09f86ceee7
Introduce MissingDependency issue, separate from UndefinedClass
...
Ref #511
2018-02-17 11:36:20 -05:00
Matthew Brown
88ca7d2fa7
Fix #515 - make Psalm aware of variable array keys
2018-02-17 11:24:08 -05:00
Matthew Brown
f56edd3c04
Fix issue found by better analysis
2018-02-17 11:21:45 -05:00
Matthew Brown
7940268a13
Fix #512 - check for undefined constant in param default
2018-02-15 20:27:42 -05:00
Matthew Brown
a6b54a3607
Fix #513 - make sure numeric is treated like a number
2018-02-15 19:50:50 -05:00
Matt Brown
279b0bc16e
Fix #511 - check all class references for missing dependencies
2018-02-14 13:34:16 -05:00
Matt Brown
be75c143d4
Fix #510 - check that constructor parent classes and interfaces exist
2018-02-14 11:21:43 -05:00
Matt Brown
d0a2258806
Fix #508 - make sure trait missing property checks happen on correct file
2018-02-12 10:46:45 -05:00
Matthew Brown
affcaebc3d
Use classes, not full method ids, for plugin execution
2018-02-11 22:49:19 -05:00
Matthew Brown
f159cd5146
Add declaring/appearing method ids to method check plugin
2018-02-11 21:07:19 -05:00
Matthew Brown
e862e4ddb1
Make all plugin methods static
...
cc @TysonAndre
2018-02-11 20:56:34 -05:00
Matthew Brown
f17ba65731
Fix #438 - assign both sides of by-ref vars to mixed
2018-02-11 10:39:21 -05:00
Matthew Brown
217233472c
Fix #457 - fix objectlike property isset check
2018-02-10 23:30:40 -05:00
Matthew Brown
24416feb62
Improve handling of unset calls with possibly undefined variables
2018-02-10 10:30:08 -05:00
Nicky Robinson
8e77ff1ce9
Throw error if magic getter or setter called for undefined property or invalid type specified with annotations ( #500 )
...
* Fix path to psalm
* If a magic getter or setter is used to access a property on a class
that is not defined but a `@property` annotation for the property
exists, throw an error. If no `@property` annotation exists, it's not
an error because you're allowed to make magic getters and setters do
crazy things.
Fixes #480
* Move logic to a better place to avoid duplicate checks
* Move logic into function
* Remove some nesting
* Check psalm-seal-properties and property type correctly
2018-02-09 19:37:09 -05:00
Matt Brown
55c12cd01c
Add a bit of documentation
2018-02-09 17:51:49 -05:00
Tyson Andre
eb69d55b29
Update documentation of void types in CallMap ( #504 )
...
The empty string is treated more like mixed
2018-02-09 00:31:25 -05:00
Matthew Brown
40efa9e8aa
Fix #503 - make sure mixed array type is set for MixedMethodCall
2018-02-08 23:22:29 -05:00
Matt Brown
283e0a6af2
Migrate class constant handling into codebase classes
2018-02-08 18:18:34 -05:00
Matt Brown
6f7903716d
Move property lookup api into codebase class
2018-02-08 18:14:28 -05:00
Matt Brown
78cc1786c8
Don’t check newly-scoped vars in conditional
2018-02-08 14:46:06 -05:00
Matt Brown
30ca2ad65f
Fix issues with mixed assignments inside loop
2018-02-08 14:02:32 -05:00
Matt Brown
72675cb5a0
Be more rigorous about atomic docblock type reconciliation
2018-02-08 13:01:39 -05:00
Matthew Brown
6955f77e2e
Fix #493 - add support for multiple @var lines per docblock
2018-02-07 23:33:31 -05:00
Matthew Brown
24e03edefa
Fix #485 when return type is a generator
2018-02-07 22:29:32 -05:00
Matthew Brown
1ae58f0386
Fix #501 - allow analysis to continue after bad constant check
2018-02-07 20:26:26 -05:00
Matt Brown
7f4be858c2
Fix #498 - add better issue type for docblock contradiction
2018-02-07 15:20:47 -05:00
Matt Brown
685ea29ebe
Move asserted var creation after conditional reconciliation
2018-02-07 14:13:57 -05:00
Matt Brown
b4281748bc
Remove redundant code found by Psalm
2018-02-07 13:57:45 -05:00
Tyson Andre
7bfd782d90
Make call map types slightly more specific (manually) ( #495 )
...
* Make call map types slightly more specific (manually)
* Address review comments
2018-02-07 10:17:18 -05:00
Tyson Andre
c7f3a3c445
Make types in the call map more specific ( #496 )
...
fix a few incorrect types.
2018-02-06 23:46:22 -05:00
Matthew Brown
1288915aba
Change number return type to numeric
...
cc @TysonAndre
2018-02-06 22:22:50 -05:00
Matthew Brown
970ceab396
Check loop context var exists
...
This can happen if the parent has been reassigned
2018-02-06 21:03:36 -05:00
Tyson Andre
0bc7ac11f1
Improve callmap with information from docs.php.net ( #494 )
...
* Update CallMap.php with information from docs.php.net
* Undo possibly inaccurate information from docs.php.net
* Fix bug in ReflectionMethod::invoke*() signature
http://php.net/manual/en/reflectionmethod.invoke.php had a misleading
method signature description section
2018-02-06 20:50:32 -05:00
Matt Brown
1df4c3d196
Add DocblockTypeContradiction to find possible issues with docblock types
...
Fixes #491
2018-02-06 18:44:53 -05:00
Matt Brown
fc58655963
Make logic more Psalm-compatible
2018-02-06 13:52:59 -05:00
Matt Brown
1d46124bab
Fix issues found by detecting docblock type inconsistencies
2018-02-06 13:40:28 -05:00
Matt Brown
4b87612bb4
Add better issue message for bad array offset
...
Fixes #492
2018-02-06 11:27:01 -05:00
Matt Brown
d88eadbb0e
Fix #486 - skip first reconciliation in loop checker for do stmts
2018-02-06 11:07:52 -05:00
Matthew Brown
beb4993736
Add more text feedback when running from command line
2018-02-06 01:11:33 -05:00
Matt Brown
8747d78c39
Suppress RedundantCondition when analysing first loop of do
...
Ref #486
2018-02-05 17:29:13 -05:00
Tyson Andre
5ac01abbe5
Fix a few signatures of Iterator classes for void
...
This was done automatically via sed.
Other types can be added in separate PRs
2018-02-05 17:16:49 -05:00
Matt Brown
5d25edf80c
Deal with overlapping docblock types and typehints better
2018-02-05 16:57:33 -05:00
Matt Brown
2e443dce85
Revert "Fix private constructor check"
...
This reverts commit 684eb7923b
, because it introduces more problems than it solves
2018-02-05 15:53:39 -05:00
Matt Brown
684eb7923b
Fix private constructor check
2018-02-05 13:06:03 -05:00
Matthew Brown
0c23c59820
Improve formatting of end message
2018-02-04 12:34:22 -05:00
Matthew Brown
e6c0fbf3b8
Create PropertyMap handler class
2018-02-04 12:34:08 -05:00
Matthew Brown
473a174f23
Memoise type tokenisation and move functions to more logical locations
2018-02-04 12:23:32 -05:00
Matthew Brown
7d6dc7252a
Allow methods that extend nullable callmap methods to not return a value
2018-02-04 09:22:24 -05:00
Matthew Brown
645602a38e
Properly namespace @property types
2018-02-03 23:10:22 -05:00
Matthew Brown
77a0720b65
Break up Populator method
2018-02-03 20:03:31 -05:00
Matthew Brown
8e0998e081
Break apart the Codebase class
2018-02-03 18:56:54 -05:00
Matthew Brown
e5bc0e6129
Fix #431 - report invalid return types before invalid nullable/falsable ones
2018-02-02 19:08:10 -05:00
Matthew Brown
c05baf47ce
Fix more Reflection return types
2018-02-02 16:35:40 -05:00
Matthew Brown
b771658821
Fix Reflector::export return types in callmap
2018-02-02 15:28:39 -05:00
Matthew Brown
861d907845
Add more information to TooMany/TooFewArguments issues
...
Fixes #481
2018-02-02 11:26:55 -05:00
Matthew Brown
08c1d65ad2
Fix docblock overriden method return type
2018-02-01 09:24:57 -05:00
Matthew Brown
d8fb14e6f7
Fix incorrect template types being passed through
2018-02-01 01:52:20 -05:00
Matthew Brown
8d2baf584e
Fix #479 - allow PhpStorm generic syntax behind a config flag
2018-02-01 01:10:27 -05:00
Matthew Brown
fb300baa6d
Move a bunch of code into Codebase
2018-02-01 00:50:01 -05:00
Matthew Brown
cf8734a480
Add support for generic classes
2018-01-31 23:27:25 -05:00
Matthew Brown
de9b90297a
Allow inheriting functions with nullable signatures to return void
2018-01-31 19:24:34 -05:00
Matt Brown
3d6bb23e28
Add stats breakdown for files
2018-01-31 17:09:09 -05:00
Matt Brown
fc805a926e
Add code coverage message at the end of a scan
2018-01-31 16:08:52 -05:00
Matt Brown
b2b2572e4d
Fix #478 - allow is_a checks with string arg
2018-01-30 16:45:29 -05:00
Matthew Brown
6c38b2fdfe
Fix #348 - don’t warn about a little contravariance
2018-01-29 22:29:49 -05:00
Matt Brown
c7b2ae4e0e
Fix do while nullability issue
2018-01-29 17:18:03 -05:00
Matt Brown
5200a25efa
Fix #477 - make sure that isset applies to property object
2018-01-29 15:47:25 -05:00
Matt Brown
8ad863614c
Don’t add unnecessary space between paras
2018-01-29 13:42:04 -05:00
Matt Brown
4099bf24ce
Make sure new $class args are always evaluated
2018-01-29 12:22:50 -05:00
Matt Brown
66c8637b5b
Fix unused code checks for possibly undefined vars
2018-01-29 12:13:44 -05:00
Matthew Brown
6bfb27165d
Check property defaults again
2018-01-28 21:43:26 -05:00
Matthew Brown
3482ee3b39
Split UntypedParam into MissingParamType and MissingClosureParamType
2018-01-28 20:03:47 -05:00
Matthew Brown
1c34dbe289
Fix erroneous treatment of finally blocks after return in try
...
Fixes #473
2018-01-28 19:02:31 -05:00
Matthew Brown
b68611c156
Fix #474 - change text colour of info text
2018-01-28 18:44:58 -05:00
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