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

223 Commits

Author SHA1 Message Date
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