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
Matthew Brown
0fbf8b5619
Remove more dead code
2017-02-02 00:45:23 -05:00
Matthew Brown
bf042772bd
Get config constants after autoload script
2017-02-01 14:56:10 -05:00
Matthew Brown
a0711de023
Update config key to be more accurate ref #85
2017-02-01 10:13:37 -05:00
Matthew Brown
eeccf791ad
Add unused method & unused class analysis ref #80
2017-01-31 20:47:16 -05:00
Matt Brown
004fd42062
Fix #83 - add support for stubbing
2017-01-31 19:21:33 -05:00
Matthew Brown
cc500e8228
Eliminate dead code
2017-01-30 00:25:16 -05:00
Matthew Brown
1ece3071f9
Add reference counting for methods and remove dead code
2017-01-29 23:44:05 -05:00
Matthew Brown
a9203b63f8
Allow phan-like use of assert
2017-01-28 15:17:14 -05:00
Matthew Brown
7e7743d6fb
Do not complain about missing void return types if config set
2017-01-25 17:07:28 -07:00
Matt Brown
875717bb96
Fix #63 by adding directory separators
2017-01-17 22:10:21 -05:00
Matthew Brown
4073986844
Merge pull request #65 from Fleshgrinder/feature/auto-creation-of-cache-directory
...
Auto-create cache directory
2017-01-16 18:39:48 -05:00
Matthew Brown
b3726c9de5
Use getcwd() for the project’s base, not the config file parent directory
2017-01-16 18:33:04 -05:00
Richard Fussenegger
42fee8d3a6
Auto-create cache directory
...
Signed-off-by: Richard Fussenegger <fleshgrinder@users.noreply.github.com>
2017-01-16 21:58:35 +01:00
Matthew Brown
69e185eb17
Use absolute cache directory paths everywhere ref #63
2017-01-16 15:32:03 -05:00
Matthew Brown
98454f8644
Remove anti-windows exception
2017-01-16 14:17:47 -05:00
Matthew Brown
e3a9cb98c3
Add extra issue for invalid clone and fix issue reporting;
2017-01-16 12:59:09 -05:00
Matthew Brown
856870cf37
Fix #62 - die quickly and explicitly if files cannot be located
2017-01-16 11:41:57 -05:00
Matthew Brown
f614944b63
Add predefined functions to avoid throwing errors
2017-01-15 20:11:02 -05:00
Matthew Brown
f4676dae1d
Fix #60 - use sys_get_temp_dir() for cache dir unless user-supplied
2017-01-15 17:20:54 -05:00
Matthew Brown
df941bd575
Improve resilience of typechecker::isContainedBy
2017-01-05 00:14:34 -05:00
Matthew Brown
7609ca02c0
Fix #32 by evaluating all class references in files lazily
2017-01-04 23:42:58 -05:00
Matthew Brown
93c1366bd8
Tighten up what array assignments can happen
2017-01-02 01:07:44 -05:00
Matthew Brown
e662c420b7
Add schema to verify new config format against
2016-12-29 22:11:10 -05:00
Matthew Brown
685eaeb4fe
Reimagine XML schema, fixes #21
2016-12-29 20:10:06 -05:00
Matthew Brown
b79ce904d2
Fix #23 - allow exclusion in projectFiles
2016-12-29 18:33:03 -05:00
Matthew Brown
749735a3ec
Update config file API still further
2016-12-29 10:24:10 -05:00
Matthew Brown
ff466b7992
Change config API
2016-12-29 08:42:39 -05:00
Matthew Brown
1007d1682c
Fix mixed operand issues
2016-12-24 18:29:11 +00:00
Matthew Brown
c51d8f5220
Implement MixedOperand and InvalidOperand issues
2016-12-24 18:29:11 +00:00
Matthew Brown
9a32b5fd40
Hide Mixed* issues under a totallyTyped config flag
2016-12-18 19:17:39 -05:00
Matthew Brown
9746c8972f
Fix MixedAssignment errors
2016-12-17 00:48:31 -05:00
Matt Brown
6ee8d473a0
Fix support for includeFiles
2016-12-14 12:53:11 -05:00
Matt Brown
154d023a9d
Add more robust config testing
2016-12-14 12:28:38 -05:00
Matt Brown
ce3b24bf5f
Fix #8 - defer always to call map if function not user-defined
2016-12-09 12:07:47 -05:00
Matthew Brown
39d08cd4b4
Add method to set custom error level programatically
2016-12-08 22:37:59 -05:00
Matt Brown
af1a932655
Make code location more accurate
2016-12-06 18:27:22 -05:00
Matthew Brown
c0a3211f66
Support disabling file includes via the config
2016-12-06 16:41:42 -05:00
Matthew Brown
23334700f6
Add config option to determine whether or not to use a property default value for its type
2016-12-04 18:43:07 -05:00
Matthew Brown
4f95c67e1c
Emit issues for null/mixed array access
2016-11-21 19:07:56 -05:00
Matthew Brown
55a3ffa773
Add missing return types
2016-11-20 23:45:10 -05:00
Matthew Brown
5a9f99c24e
Fix namespacing issues in PHP 5.6
2016-11-20 21:49:06 -05:00
Matthew Brown
7df4d74a7b
Fix Psalm errors
2016-11-04 21:14:04 -04:00
Matthew Brown
ea4daa7b7e
Move cache dir into better config
2016-11-04 17:47:11 -04:00
Jon Ursenbach
27c2db1d1d
PSR-2
2016-11-02 17:50:54 -04:00
Matthew Brown
34af24a2b4
Add all the properties
2016-11-01 00:39:41 -04:00
Matthew Brown
604c875d0c
Fix more errors caught by Psalm
2016-10-30 12:46:18 -04:00
Matthew Brown
bd173f8840
Fix #21 - stopOnFirstError now handled properly
2016-10-23 23:32:17 -04:00
Matthew Brown
ce95275878
Fix more Psalm bugs found by Psalm
2016-10-23 12:24:53 -04:00
Matthew Brown
ca3dfe6e39
Fix Psalm errors in Psalm
2016-10-15 00:12:57 -04:00
Matthew Brown
f68280488c
Remove custom error levels
2016-10-09 17:55:21 -04:00
Matthew Brown
49baa62224
Fix doblocks and invalid refs
2016-10-03 11:38:59 -04:00
Matthew Brown
8c5adf477a
Add support for key/value array typing
2016-09-09 16:21:49 -04:00
Matthew Brown
47f66bf4dd
Add support for exposing errors in external files
2016-08-31 23:12:35 -04:00
Matthew Brown
0e68179bb4
Pass in the right context
2016-08-24 00:22:38 -04:00
Matthew Brown
7d1a106fd5
Big file reorg with ClassLikeChecker as new ClassChecker
2016-08-13 14:20:46 -04:00
Matthew Brown
7a1cded329
Add better class visibiity checks
2016-08-07 12:23:29 -04:00
Matthew Brown
d254bc0aa2
Improve type checking of properties
2016-08-06 20:27:13 -04:00
Matthew Brown
81c72f2900
Evaluate parent classes proper-like
2016-08-05 15:11:20 -04:00
Matthew Brown
bff796ceb7
Add TooManyArguments to default suppressed list
2016-07-30 19:54:53 -04:00
Matthew Brown
6b3fe14f1e
Allow specification of custom autoloaders
2016-07-26 15:03:43 -04:00
Matthew Brown
7701a2ec23
Change config filename
2016-07-25 18:39:36 -04:00
Matthew Brown
df28d24803
Change name to Psalm
2016-07-25 18:37:44 -04:00