Matt Brown
414057e281
Fix #938 - allow forbiddenFunctions to be specified in the config
2018-09-18 16:42:51 -04:00
Matt Brown
add7c14b44
Fix #965 - invalidate cache when changing plugins
2018-09-04 15:28:03 -04:00
Matt Brown
17ea48eda4
Add ability to pretend that a file has declare(strict_types=1)
2018-08-29 15:10:56 -04:00
Matt Brown
2599d8bd62
Allow some folders to be excluded from type stats collection
2018-08-24 17:46:13 -04:00
Matthew Brown
d41a9a8dcc
Fix #806 - allow specification of functions and static methods that exit
2018-07-12 23:26:08 -04:00
Tyson Andre
a3b1bebb5b
Fix misuse of preg_quote ( #869 )
...
1. Variable ids can contain slashes or dots, e.g. for `${'my/var'} = 2`
or psalm's local representation of properties or array indexes
(I forget which)
2. preg_quote's escape character should **always** be the same as the
pattern starting character.
Using DIRECTORY_SEPARATOR will fail to escape '/' on windows.
2018-07-06 19:16:31 -04:00
Matt Brown
4a4d091c02
Fix #858 - scan files before autoloading them
2018-07-03 11:17:52 -04:00
Matthew Brown
16e270f0ee
Improve loading of stub file and autoload file information
...
Ref #849
2018-06-30 15:29:37 -04:00
Matt Brown
89cc63846f
Improve handling of autoloaded files
...
Fixes #848
2018-06-29 15:28:45 -04:00
Matthew Brown
e1d922e9df
Add support for ignoredExceptions
2018-06-22 01:26:10 -04:00
Matthew Brown
e3ae1bf26f
Fix #15 - check for uncaught throws if config flag is set
2018-06-22 01:13:49 -04:00
Matthew Brown
3670f066bb
Improve dead code detection
2018-06-16 20:01:41 -04:00
Matt Brown
f030f4f40d
Allow docblock types to be merged with param default ones
2018-06-07 12:23:21 -04:00
Matthew Brown
53bfafa02a
Make sure that ignoreFiles files never appear in errors
2018-06-04 00:15:28 -04:00
Matthew Brown
55fdef250e
Add config to allow hoisting constants to the top of a file
2018-06-01 09:07:22 -04:00
Matthew Brown
ee9fef050a
Add support for function checking plugins
2018-05-31 22:00:11 -04:00
Matt Brown
68dbe509a8
Fix #731 - report issues in files required by the source
2018-05-30 12:23:53 -04:00
Matthew Brown
c217849737
Improve handling of projects that use include/require heavily
2018-05-22 23:39:01 -04:00
Matthew Brown
b0733254bb
Use individual type objects for each string ( #757 )
...
* Experiment with individual types for each string
* Fix bunch of errors
* Fix a few more issues
* Fix a whole bunch of bugs
* Fix most remaining bugs
* Fix isset warnings
* Fix psalm errors in psalm
* Limit big string size
* Fix falsiness of ints
* Fix issue with type widening, allowing value set in nested if to be altered
* Don’t complain if type is mixed
* Add skipped-for-now test
* Add specific test to address issue
2018-05-18 11:02:50 -04:00
Matthew Brown
a33d52d935
Add support for referencedProperty error restrictions
2018-05-11 00:07:41 -04:00
Matthew Brown
da6209276f
Allow ability to memoize empty method calls based on config
2018-04-28 13:05:43 -04:00
Matthew Brown
1c7568e612
Fix #642 - allow @method to override existing methods
...
behind usePhpDocMethodsWithoutMagicCall="true"
2018-04-21 23:08:08 -04:00
Matthew Brown
8b50cdf315
Fix #632 - add support for @method annotations when method can’t be found
2018-04-21 22:44:54 -04:00
Matthew Brown
da69e60cf3
Don’t error on existing Psalm configs cc @ostrolucky
2018-04-21 19:05:26 -04:00
Matt Brown
a25a989c12
Prepare v2 dev release
2018-04-19 17:29:07 -04:00
Radosław Kowalewski
eab7f7b68b
Suppress MixedArgument
2018-04-14 10:45:05 -04:00
Radosław Kowalewski
88bf8e284c
Configuration fallback to psalm.xml.dist file
...
Closes vimeo/psalm#644
2018-04-14 10:45:05 -04:00
Matt Brown
21b74ae725
Turn useAssertForType on by default (was off)
2018-04-13 17:35:56 -04:00
Matt Brown
8fdd827e0d
Fix scope leaking from autoloader
2018-04-13 10:32:08 -04:00
Matthew Brown
75e59f29ea
Check as many autoloaded files as possible
...
and ignore reflected function docblocks - fixes #629
2018-03-30 20:03:56 -04:00
Matthew Brown
5384f193d1
Allow class and method issues to be suppressed by their identifiers
...
Ref #603
2018-03-20 22:36:03 -04:00
Bruce Weirdan
a1f481d8a2
commented out code cleanup
2018-03-08 19:14:06 -05:00
Bruce Weirdan
12488ea8ed
dropped commented out code, added file_exists() checks for stubs
2018-03-08 19:14:06 -05:00
Bruce Weirdan
32884774e4
build psalm.phar using humbug/box
2018-03-08 19:14:06 -05:00
Matt Brown
d185253396
Don’t throw exception if classloader hasn’t been set
2018-03-06 17:30:54 -05:00
Matt Brown
357ad1aa82
Add config flags to allow stricter class invocation checks
2018-03-06 11:20:59 -05:00
Matthew Brown
9d48585b0e
Fix #552 - fix path that stubs are loaded from
2018-03-03 19:05:15 -05:00
Matthew Brown
6458aa2e91
Remove unused methods
2018-03-03 15:29:13 -05:00
Matthew Brown
b90a58533b
Fix tests and return types
2018-03-03 15:25:35 -05:00
Matthew Brown
ade9e03c85
Use composer autoloader for class resolution where possible
2018-03-03 15:19:05 -05:00
Matthew Brown
9fd009a61d
Add more debug output for composer classmaps
2018-03-03 12:15:22 -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
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
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
affcaebc3d
Use classes, not full method ids, for plugin execution
2018-02-11 22:49:19 -05:00
Matthew Brown
e862e4ddb1
Make all plugin methods static
...
cc @TysonAndre
2018-02-11 20:56:34 -05:00
Matt Brown
fc58655963
Make logic more Psalm-compatible
2018-02-06 13:52:59 -05:00
Matthew Brown
8e0998e081
Break apart the Codebase class
2018-02-03 18:56:54 -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
dd32452d90
Remove more dead code found by Psalm
2018-01-28 12:43:19 -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
b0f3992f36
Remove stopOnFirstError config option, because it hasn’t worked for a while
...
Fixes #248
2018-01-24 16:22:54 -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
9b6b03ff9f
Create Config before ProjectChecker, and remove test-specific code from FileChecker
2018-01-21 10:22:04 -05:00
Tyson Andre
77b41f4e9f
Bring phpdoc @param
up to date
2018-01-18 16:07:48 -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
fb9f20f4b8
Find unused properties with dead code checks
...
Fixes #424
2018-01-10 23:29:18 -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
c9173c7da3
Add more specific issues for falsable/nullable invalid return types
2018-01-04 21:36:16 -05:00
Matthew Brown
8da23605bb
Add unqualifier plugin test to remove unnecessary namepaces
2018-01-02 09:46:50 -05:00
Matthew Brown
cc81d78dfd
Add code replacement api to allow Psalm to update arbitrary parts of the codebase
...
Fixes #264
2018-01-02 09:46:50 -05:00
Matthew Brown
72b127e061
Allow plugins to be run via the command line
2018-01-02 09:46:50 -05:00
Matthew Brown
5afe3b10fa
Scan compoer autoload files before any sweep of code
2018-01-01 11:47:03 -05:00
Matthew Brown
8efc939a5f
Move Psalm execution code into PHP file that Psalm can analyse
2017-12-29 17:02:56 -05:00
Matthew Brown
becce4ae36
Use composer classmap where available to remove need for reflection of vendor classes
2017-12-28 00:56:10 +01:00
Matthew Brown
942bc0a663
Add new MixedTypeCoercion issue, fixes #320
2017-11-19 13:42:48 -05:00
Matthew Brown
1a39224abc
Fix issues that improved array checks found
2017-11-19 12:14:02 -05:00
Matthew Brown
b618bd798d
Add new issues for missing required files
2017-10-29 14:39:23 -04:00
Matthew Brown
295792d550
Fix #235 - add psalm.xml option to support igbinary serializer
2017-10-15 12:38:47 -04:00
Matt Brown
8f9fdcb637
Create storage for plugins before scanning
2017-08-08 11:03:45 -04:00
Matthew Brown
4175295113
Isolate where we load static storage objects ( #195 )
...
* Move FileChecker::$storage calls to provider
* Add ClassLikeStorageProvider
* Use ClassLikeStorageProvider everywhere
* Move storage arrays into providers
2017-07-29 15:05:06 -04:00
Matt Brown
76ba419330
Group unused tests together
2017-07-25 17:04:58 -04:00
Matthew Brown
e29dd140e3
Refactor scanning and analysis, introducing multithreading ( #191 )
...
* Add failing test
* Add visitor to soup up classlike references
* Move a whole bunch of code into the visitor
* Move some methods back, move onto analysis stage
* Use the getAliases method everywhere
* Fix refs
* Fix more refs
* Fix some tests
* Fix more tests
* Fix include tests
* Shift config class finding to project checker and fix bugs
* Fix a few more tests
* transition test to new syntax
* Remove var_dump
* Delete a bunch of code and fix mutation test
* Remove unnecessary visitation
* Transition to better mocked out file provider, breaking some cached statement loading
* Use different scheme for naming anonymous classes
* Fix anonymous class issues
* Refactor file/statement loading
* Add specific property types
* Fix mapped property assignment
* Improve how we deal with traits
* Fix trait checking
* Pass Psalm checks
* Add multi-process support
* Delay console output until the end
* Remove PHP 7 syntax
* Update file storage with classes
* Fix scanning individual files and add reflection return types
* Always turn XDebug off
* Add quicker method of getting method mutations
* Queue return types for crawling
* Interpret all strings as possible classes once we see a `get_class` call
* Check invalid return types again
* Fix template namespacing issues
* Default to class-insensitive file names for includes
* Don’t overwrite existing issues data
* Add var docblocks for scanning
* Add null check
* Fix loading of external classes in templates
* Only try to populate class when we haven’t yet seen it’s not a class
* Fix trait property accessibility
* Only ever improve docblock param type
* Make param replacement more robust
* Fix static const missing inferred type
* Fix a few more tests
* Register constant definitions
* Fix trait aliasing
* Skip constant type tests for now
* Fix linting issues
* Make sure caching is off for tests
* Remove unnecessary return
* Use emulative parser if on PHP 5.6
* Cache parser for faster first-time parse
* Fix constant resolution when scanning classes
* Remove test that’s beyond a practical scope
* Add back --diff support
* Add --help for --threads
* Remove unused vars
2017-07-25 16:11:02 -04:00
Matthew Brown
4a590000a6
Fix whitespace issue
2017-06-26 20:14:58 -04:00
Matthew Brown
678b6113d5
Fix #127 - allow Psalm to analyse composer autloaded files
2017-06-26 20:13:10 -04:00
Matthew Brown
f9b16c9a2d
Explicitly cast mock class to string
2017-06-13 00:51:16 -04:00
Matthew Brown
22a716f4da
Improve formatting of phpdocs
2017-05-26 20:16:18 -04:00
Matthew Brown
d6909193ea
Add additional formatting changes
2017-05-26 20:05:57 -04:00
Matthew Brown
4fd46e1752
Improve formatting
2017-05-24 22:07:49 -04:00
Matthew Brown
754a4d9950
Allow Psalm to be run outside of the directory it's installed in ( #154 )
...
* Add --root option when not running Psalm from root directory
* Add informative error when running Psalm outside of its project directory
* Add better message in help
* Fix autoloader precedence
2017-05-04 14:25:58 -04:00
Jon Ursenbach
f65c618b2e
PSR-2 adjustments and adding PHPCS checks into the Travis config. ( #149 )
...
* PSR-2 adjustments and adding PHPCS checks into the Travis config.
* Reverting some CallChecker changes and no longer casting vars to null.
2017-04-28 00:31:55 -04:00
Matthew Brown
ce6ca58291
Fix #114 - add optional Hack-like checks calls
2017-04-14 21:32:14 -04:00
Matthew Brown
a89018d9ae
Only warn about issues in files that we’re trying to scan
2017-03-24 18:34:46 -04:00
Matt Brown
cbb8252125
Don’t be sensitive to casing differences in file paths
2017-02-27 12:02:13 -05:00
Matthew Brown
cd5f727d2e
Collect explicit references to classes/methods
2017-02-26 23:09:18 -05:00
Matt Brown
0049e4deb4
Fix #105 and also the issues found in its wake
2017-02-23 19:36:51 -05:00
Matthew Brown
45577f123c
Don’t add Symony and Composer to predefined (Reflectable) classes
2017-02-21 02:07:43 -05:00
Matthew Brown
f32fabd798
Remove dead code
2017-02-11 19:30:06 -05:00
Matthew Brown
8ff6634e7b
Add issue for possibly unused variables in public/private methods
...
also changed a lot of access
2017-02-11 18:56:38 -05:00
Matt Brown
c0a6fc9125
Fix #90 - add genericised stubs for common array functions
2017-02-10 18:12:59 -05:00
Matt Brown
34980fc718
Remove dead code and fix config.xsd
2017-02-07 18:27:28 -05:00
Matt Brown
ba4f47a41c
Config for caching file hashes during run
2017-02-02 12:39:39 -05:00