1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-15 19:07:00 +01:00
Commit Graph

2007 Commits

Author SHA1 Message Date
Matthew Brown
e419a8fe01 Exit early when there’s an issue in block-level elements
Fixes #550
2018-03-03 13:20:41 -05:00
Matthew Brown
9fd009a61d Add more debug output for composer classmaps 2018-03-03 12:15:22 -05:00
Matt Brown
276c1a785d Allow underscores to be ignored by UnusedParam checks 2018-03-02 11:32:34 -05:00
Matt Brown
e8b4559a6b Support level 6 and fix docs 2018-03-02 11:09:55 -05:00
Matthew Brown
2cec81ebfe
Fix #537 - misleading --init documentation 2018-03-02 10:58:12 -05:00
Matthew Brown
d94abc42e8 Fix array location 2018-03-02 08:38:16 -05:00
Matthew Brown
ee6a9b98fb Allow arrays to be called (ugh) 2018-03-02 00:49:53 -05:00
Matthew Brown
154341577d Give expected/actual argument counts 2018-03-02 00:07:19 -05:00
Matthew Brown
799e81bc96 Improve callable issue message 2018-03-02 00:03:07 -05:00
Matthew Brown
6fbd8753d5 Fix $function_id when checking for method existence 2018-03-01 23:52:11 -05:00
Matthew Brown
cc19f50c04 Prevent missing classes from confounding callable arg checks 2018-03-01 23:43:52 -05:00
Matthew Brown
6660aa8a00 Fix #548 - check array_map/array_filter args for param matches 2018-03-01 23:33:21 -05:00
Matt Brown
2846e549dd Fix #546 - allow iterable phpstorm generics 2018-03-01 11:19:23 -05:00
Matt Brown
80864b1ce8 Don’t be concerned about unused params named $_
Fixes #540
2018-02-27 11:39:26 -05:00
Matt Brown
1f358e36ef Fix #544 - remove possibly assigned try vars from catch initialisations 2018-02-27 11:25:27 -05:00
Matthew Brown
115e647c3c Fix #543 - register static vars properly so their references can be caught 2018-02-26 19:32:26 -05:00
Matt Brown
30c6aa5c68 Add missing spaces 2018-02-26 11:09:17 -05:00
Matt Brown
93b714d7c8 Fix #541 - make array_map on object-like more accurate 2018-02-26 11:01:30 -05:00
Matt Brown
9d165bee7b Fix generic return type for array_map
Ref #541
2018-02-26 10:39:48 -05:00
Matthew Brown
63b473966d Fix phpcs warning 2018-02-25 12:14:35 -05:00
Matthew Brown
42965bff65 Bust Psalm statements cache when upgrading Psalm version 2018-02-25 11:35:43 -05:00
Matthew Brown
2be2769008 Don’t adhere to assert rules with ored truths 2018-02-25 11:30:45 -05:00
Matthew Brown
47cb74ddd1 Fix issue where namespaced function could be treated as root 2018-02-25 11:13:00 -05:00
Matthew Brown
956972b4a4 Fix #539 - evaluate global variable usage 2018-02-25 10:43:54 -05:00
Matt Brown
ad3fe0974f Fix indentation 2018-02-23 15:41:07 -05:00
Matt Brown
441506ad6f Fix #216 - scan assert* functions for assertions, then apply to current context 2018-02-23 15:39:33 -05:00
Matthew Brown
cb1fd308f6 Don’t rescan files when afterVisitClassLike plugin method is active 2018-02-22 22:52:22 -05:00
Matthew Brown
8f2ef50947 Ensure that ClassLikeStorage exists when running plugin method 2018-02-22 22:35:48 -05:00
Matthew Brown
6d658ef934 Fix #535 - always run afterVisitClassLike plugin if given 2018-02-22 22:22:31 -05:00
Matt Brown
95642aafb4 Fix #339 - when a class is also in the callmap, use the user-defined behaviour 2018-02-22 13:42:34 -05:00
Matt Brown
39cdd00094 Add extra level for starter configs 2018-02-22 12:25:05 -05:00
Matt Brown
25400e8010 Simplify logic to avoid Psalm bug 2018-02-22 11:57:15 -05:00
Matt Brown
1f7d95dde0 Add better typing rules for generic objects 2018-02-22 11:20:03 -05:00
Matt Brown
09d708981a Add mixed checks to property __set calls 2018-02-21 19:34:21 -05:00
Matt Brown
5471b89391 Make array coercion an error 2018-02-21 18:59:31 -05:00
Matt Brown
a81c73301b Warn early if the file being analysed has not been properly scanned 2018-02-21 13:54:11 -05:00
Matt Brown
316dd78e6a Fix #509 - don’t complain about a missing param type when system parent has one 2018-02-21 11:57:52 -05:00
Matt Brown
e04c4f866c Fix #524 - prevent fatal error when checking stubbed function from namespace 2018-02-21 11:32:52 -05:00
Matt Brown
9dce508689 Always rescan traits 2018-02-20 13:20:31 -05:00
Matt Brown
cd60786ced Always use class file path in the cache key to prevent duplicate clashes 2018-02-20 10:56:18 -05:00
Matthew Brown
295207896b Remove test file 2018-02-20 09:04:30 -05:00
Matthew Brown
ec74b82587 Fix #532 - register anonymous classes declared in file too 2018-02-20 09:02:51 -05:00
Matthew Brown
d10212b393 Fix perpetual diff builds 2018-02-19 23:36:36 -05:00
Tyson Andre
cdcec69536 Support the pylint output format
This is a compact output format that is easy to write scripts that parse.
(And errors fit on a single line)

- E.g. jenkins violation plugin works reliably with pylint.

The multi-line details are deliberately omitted.
An application can output 'console' to stdout and to
a pylint file at the same time.

Files with the extension .pylint will use this format.

Document the emacs and pylint output formats in `psalm --help`

An optional followup task would be to create unique issue codes,
I don't have any use cases for that.
2018-02-19 22:35:48 -05:00
Matthew Brown
a99e89495b Add end line/column data for LSP support 2018-02-19 18:16:09 -05:00
Matthew Brown
04a1583783 Fix bad iterator 2018-02-19 17:01:55 -05:00
Tyson Andre
7aeacebba4 Fix possible typos in comments and issue messages 2018-02-19 15:35:13 -05:00
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
61b13b68cf Fix #376 - support turkish lowercase 2018-02-17 22:11:42 -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
Matthew Brown
078becb0b7 Fix cache clearing 2018-02-07 20:15:56 -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
5a4b240dc8 Prevent class references from being checked when running multithreaded 2018-01-25 15:36:02 -05:00
Matt Brown
d0de1ea641 Only check class references if we have all available data 2018-01-25 15:11:44 -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
d8a78a7086 Prevent Psalter from running on more than one path at a time 2018-01-21 22:14:29 -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
Matthew Brown
516e7105c1 Add space 2018-01-18 08:35:45 -05:00
medains
76c13fa27f Ensure static analysis picks up the correct type of bool 2018-01-18 08:35:45 -05:00
medains
3bb9ee1a94 Store and restore STDIN blocking state after processing file list
Fixes #443
2018-01-18 08:35:45 -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