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

494 Commits

Author SHA1 Message Date
Matthew Brown
7b6061efe3 Add section on template covariance 2019-12-19 10:36:14 +00:00
Valentin Udaltsov
bb52c4ce75 Update callable_types.md (#2482)
Spread operator must be a suffix in callables
2019-12-19 00:28:04 +00:00
Matthew Brown
fb85b81908 Add note about using the Phar 2019-12-18 15:35:18 +00:00
Leo Cavalcante
1bc2bb6386 Update PhpStorm usage (#2410)
There is a new option that defaults to Artifact. It should be Executable.
Windows can't figure out that the PHP interpreter will run a shell script that then calls  PHP (not sure if this even works on Unix)
And added a PHP bin dir example for Wins
2019-12-04 13:36:30 -05:00
Matthew Brown
6ce6ad4483
Add note about Shepherd 2019-12-03 09:53:37 -05:00
Brown
af5f83602e Break out more specific possibly defined offset errors 2019-11-11 09:59:56 -05:00
Bruce Weirdan
79acbadfad Added InvalidParent issue (#2320)
Refs vimeo/psalm#2304
2019-11-11 00:21:43 -05:00
ADmad
065653c58f Fix param name in example (#2317) 2019-11-09 16:26:06 -05:00
Jáchym Toušek
f2c82fa212 Add support for Iterator<X> type (#2285)
* Add support for Iterator<X> type

* Fix tests
2019-10-30 18:00:27 +00:00
Matthew Brown
4ee037923a
add link to lists 2019-10-11 09:58:34 -04:00
Matthew Brown
f25fe29c73
Add documentation for lists 2019-10-11 09:56:46 -04:00
Matthew Brown
79f2f4197a
Fix typo 2019-09-26 16:20:42 -04:00
Brown
cf799d0926 Fix #2173 - remove @var annotations automatically 2019-09-26 15:08:05 -04:00
Matthew Brown
9c629414a7 Fix #2138 - complain when inheriting from immutable interfaces without annotation 2019-09-21 22:52:30 -04:00
Brown
c5ef2516b5 Fix #2150 - add detection for unnecessary @var annotations
And also remove them from codebase
2019-09-19 11:59:43 -04:00
Matthew Brown
9ad6c36d9b
Conditionally verify that array offsets exist (#2147)
* Check array offsets idea

* Clean up some issues

* Add a few light fixes

* Add docs
2019-09-18 14:21:06 -04:00
SignpostMarv
943705ce0e load an xdebug stub when required, re: vimeo/psalm#2118 (#2133)
* load an xdebug stub when required, re: vimeo/psalm#2118

* correcting case sensitivity of XDebug to Xdebug

* only load the Xdebug stub when needed
2019-09-14 10:13:39 -04:00
Jacob Dreesen
34d98f9f42 Fix description of @psalm-external-mutation-free (#2110) 2019-09-09 14:52:30 -04:00
Brown
56c884845f Static methods inside @psalm-immutable class should be permitted
Fixes #2109
2019-09-09 10:38:55 -04:00
Matthew Brown
f8b8f35c03 Add docs for @psalm-pure 2019-09-08 15:25:12 -04:00
Matthew Brown
5d08c47e4b Add docs for immutable ideas 2019-09-08 15:21:30 -04:00
Matthew Brown
51e552665e Fix #2061 - add config to allow suppression of string increment issues 2019-09-01 17:49:37 -04:00
Matthew Brown
dee2cf3281 Detect use of static inside pure function 2019-08-31 21:31:53 -04:00
Matthew Brown
6d07663d70 Annotate method getters more accurately 2019-08-30 16:40:32 -04:00
lhchavez
3e5f6b16b7 Add documentation for the <globals> project setting (#2068)
This change exposes the documentation for the <globals> project setting.
2019-08-25 23:47:39 -04:00
Markus Staab
51bf0b4001 document psalter --allow-backwards-incompatible-changes=false option (#2056) 2019-08-25 23:47:06 -04:00
Brown
95c61db513 Add a PossibleRawObjectIteration issue 2019-08-20 12:06:02 -04:00
Matthew Brown
2a5e0d8f39 Fix #1444 - track unused suppressions 2019-08-18 14:27:50 -04:00
lhchavez
c98c160907 Allow explicitly-annotated mixed assignments (#2030)
This change makes it possible to assign mixed expressions to variables
if an annotation is explicitly added to the variable. This allows the
use of `call_user_func` without needing to suppress issues.

Fixes: #1374
2019-08-17 11:22:43 -04:00
Matthew Brown
5c1b4d5a2a
Fix underscore 2019-08-16 22:28:31 -04:00
Matthew Brown
476f9ae353
Fix type links 2019-08-16 22:27:58 -04:00
Matthew Brown
88e8f105e0
Remove code from links 2019-08-16 22:24:11 -04:00
Matthew Brown
fafb7ee7e1
Remove thing that needn't be code 2019-08-16 22:21:17 -04:00
Matthew Brown
8228a0f9a5
Add more descriptive text for InvalidDocblockParamName 2019-08-15 10:52:24 -04:00
Brown
b5614d03f8 Add detection for unused function calls 2019-08-13 13:15:23 -04:00
Matthew Brown
89416c6f4f
AddWord 2019-08-13 09:24:50 -04:00
Matthew Brown
b53446e11d
Add documentation for findUnusedVariables and findUnusedCode 2019-08-13 09:24:20 -04:00
Matthew Brown
7c6b1581d3 Add warnings about uninitialised properties to mixed as well 2019-08-11 00:22:28 -04:00
Matthew Brown
85c9b6bb44
Add documentation for automatically removing UnusedVariable 2019-08-09 11:40:46 -04:00
Brown
04c12a36fe Fix docs example for impurity 2019-08-07 15:39:51 -04:00
Matthew Brown
b2c0993cdc Add framework for taint analysis to Psalm
Ref #611
2019-08-04 10:37:36 -04:00
Chad Burrus
7ded79bb27 typo fix : "you" -> "your" (#1976) 2019-07-30 13:22:26 -04:00
Matthew Brown
90854c4094 Fix broken behaviour when analysing interface test methods 2019-07-28 19:44:36 -04:00
Mikko Pesari
82e79aae20 Fix ignoreExceptions tags (#1966) 2019-07-24 07:50:40 -04:00
Matthew Brown
3df248eea2 Add concept of purity to functions and methods 2019-07-18 01:31:48 -04:00
Roland Franssen
e58660f38b Add docs for optional ObjectLike (#1942)
* Add docs for optional ObjectLike

ref #634

* Update plugins_type_system.md

* Use better letters
2019-07-17 22:54:01 -04:00
Barney Laurance
94f934627c Work in progress - resolve directories from config file location (#1904)
* Add resolveFromConfigFile config option

Treats all paths as relative to the location of the config file, not
the current working directory of the process.

This commit just changes psalm, further commits will be needed to
apply the change to psalter and the LSP server.

* Copy asset xml files into project root for testing, delete during teardown

Needed since paths are now resolved relative to the position of the
file.

Not sure why I only saw a test failre for 1.xml - would have expected it
for all eight files.

* Fix following rebase

* Move psalm --init handly code above working directory setting code

If there's no psalm.xml yet we can't use the location of psalm.xml to
set our working directory

* Move Psalm version output code above working directory resolution

Working directory doesn't need to be known to output version constant

* Rely on new config file based working directory in end to end test

* Dont use rely on config dir for --alter - not currently working

* Fix code style error

* Add failing test for supporting config without `resolveFromConfigFile="true"`

* Don't treat config directory as a path to check

* Document resolveFromConfigFile setting
2019-07-06 12:21:39 -04:00
Tyson Andre
220513c5f2 Fix typos with codespell (#1870) 2019-06-28 13:59:09 -04:00
Brown
6a95aeb7e2 Fix 404 2019-06-27 17:35:24 -04:00
Brown
0d3f5af18c Break out docblock_type_syntax.md into separate files 2019-06-27 17:00:26 -04:00
Dave Liddament
af1decf30c Add missing links to documentation (#1858)
Not sure how index for docs are generated. The hope is this should fix #1857
2019-06-27 14:36:27 -04:00
Ivan
5bb28cc493 fix typo (#1819) 2019-06-20 09:05:22 -04:00
Matthew Brown
4823e35f8e
Add rename namespace command 2019-06-19 19:49:42 -04:00
Matthew Brown
f06cd85ad0
Fix link 2019-06-19 14:21:07 -04:00
Matthew Brown
51e31ba9c9
Add separate file for adding_assertions 2019-06-19 14:19:40 -04:00
Matthew Brown
95fc208ce3
Break out assertion syntax into separate file 2019-06-19 14:19:14 -04:00
Matthew Brown
d0e84f1b88
remove slash 2019-06-19 01:39:11 -04:00
Matthew Brown
9ad6e7c024
Remove a word 2019-06-19 01:24:14 -04:00
Matthew Brown
0cd8e71368
Fix formatting 2019-06-19 01:23:49 -04:00
Matthew Brown
a46dddde4b
Add newline 2019-06-19 01:21:29 -04:00
Matthew Brown
74a96a95d0
Add assertion syntax docs (#1810)
* Create assertion_syntax.md

* Add more

* Add more details

* Add link to assertions
2019-06-19 01:09:46 -04:00
Matthew Brown
5a64e97f0f Fix #1793 - warn on deprecated function 2019-06-15 12:09:15 -04:00
mattdfloyd
6f6054f36d Update refactoring.md 2019-06-14 13:07:58 -04:00
Matthew Brown
305c40839a
Remove phpdoc note 2019-06-09 18:05:28 -04:00
Matthew Brown
d4186e4530
Add PHPDoc note 2019-06-09 18:04:00 -04:00
Matthew Brown
7a14e87e78
Add line breaks 2019-06-09 17:45:41 -04:00
Matthew Brown
bbacba4acf
Improve atomic type intro 2019-06-09 17:41:06 -04:00
Matthew Brown
0443bfc41e
Add better preamble about atomic types 2019-06-09 17:37:29 -04:00
Matthew Brown
28b0895ffb
Push union type info to bottom 2019-06-09 17:35:38 -04:00
Matthew Brown
f898bb1f2c
Remove probably-confusing explanation of union types 2019-06-09 17:31:26 -04:00
Matthew Brown
30b1b0a65c
Indent other types 2019-06-09 17:20:13 -04:00
Matthew Brown
71a184312a Improve punctuation 2019-06-09 15:48:08 -04:00
Matthew Brown
5d47dc5769 Add more obvious examples 2019-06-09 15:43:52 -04:00
Matthew Brown
c3d4acf6fe Add link 2019-06-09 15:34:19 -04:00
Matthew Brown
61102998d1 Organise atomic type page better 2019-06-09 15:32:26 -04:00
Matthew Brown
bc49787d69 Add more information about class-string 2019-06-09 15:22:26 -04:00
Matthew Brown
9c18dfed43 Fix char 2019-06-09 15:20:15 -04:00
Matthew Brown
2fd24c4765 Fix underscores 2019-06-09 15:18:06 -04:00
Matthew Brown
344164816f Break apart atomic type docs, adding listing 2019-06-09 15:16:55 -04:00
Matthew Brown
5592335a7c
Remove " 2019-06-09 09:16:43 -04:00
Matthew Brown
017ddd590a
Add better English 2019-06-09 01:41:31 -04:00
Matthew Brown
c6ffa7b55a Change paths 2019-06-09 01:07:17 -04:00
Matthew Brown
a2f444f1b9 Fix link 2019-06-09 01:05:03 -04:00
Matthew Brown
7a1a728cee Move docs into subfolders 2019-06-09 00:54:13 -04:00
Matthew Brown
8ff960af9e
Removed newline 2019-06-08 16:35:26 -04:00
Matthew Brown
21431caaca
Add preamble about templated types 2019-06-08 16:34:37 -04:00
Brown
b00d51b7db Allow misplaced required params so Psalm still inspects the code 2019-06-07 09:25:12 -04:00
Matthew Brown
e486b25173
Fix typo 2019-06-04 08:50:50 -04:00
Matthew Brown
856180ac2a
Add MissingParamType fix documentation 2019-06-04 08:45:01 -04:00
Matthew Brown
8968488fe4
Fix coercion config 2019-05-31 19:59:47 -04:00
Matthew Brown
909f5cee08
Change version constraint 2019-05-29 23:50:24 -04:00
Barney Laurance
04ef20da1f Add error message when psalter asked to work beyond its abilities; allow fixing all issues and output list of fixable issues (#1687)
* Oputput error message when asked to fix non-fixable issue

* Document ability to fix function PossiblyUndefinedGlobalVariable

* Add --issues=all option to fix all possible issues

* Add --list-supported-issues option to psalter

* Fix psalm issues

* Add newline to end of psalter help output

* Adjust messages output from psalter

* Use fwrite(STDERR, instead of die( for issue list related errors in psalter

* Restore missing exits in psalter
2019-05-27 10:05:15 -04:00
Matthew Brown
7601921ecf
Add a word 2019-05-21 23:06:50 -04:00
Matthew Brown
ee3dfba8ab
Add documentation for all 19 hooks
Fixes #1582
2019-05-16 14:32:44 -04:00
Matthew Brown
e75ee77938
Added default name 2019-05-16 14:17:40 -04:00
Barney Laurance
8f129f828b Document intersection and no-return types in docblock syntax
Also removed spaces from union type example.
2019-05-15 19:16:15 -04:00
Brown
4a434d9a2f Add separate issue for undefined classes in docblocks 2019-05-15 18:41:26 -04:00
Barney Laurance
7f4173efc5 Fix typo in docs 2019-05-14 19:30:39 -04:00
Barney Laurance
f4c754737f psalm-internal: Prevent use of @psalm-internal without @internal 2019-05-14 18:54:16 -04:00
Barney Laurance
31ae10fb00 psalm-internal - document usage of @internal and @psalm-internal tags 2019-05-14 18:54:16 -04:00
Brown
30cbcb6c36 Add ImplementedParamTypeMismatch issue
Fixes #1633
2019-05-14 15:44:46 -04:00
Jonathan H. Wage
ecb7a6c069 Add support for absolute plugin paths. 2019-05-05 16:44:36 -04:00
Jonathan H. Wage
db227dab06 Fix link to Plugins that currently 404s 2019-05-02 17:49:34 -04:00
Brown
0e4c8ce482 Split apart TypeCoercion issues, allowing more granular issue filtering 2019-04-25 18:02:19 -04:00
Ryan McCue
91be079ca6 Link to human-readable package list 2019-04-21 08:42:35 -04:00
Matthew Brown
29b70442b1 Add documentation for unused method/property removal/ 2019-04-20 17:54:17 -04:00
Dave Liddament
53e2a0e671 FIX remove extra space in markdown 2019-04-18 18:18:16 -04:00
bugreportuser
4a931770be Added doc for onlyGlobalScope 2019-04-16 22:42:45 -04:00
Matthew Brown
b00aa848e4 Split up plugins guide 2019-04-14 15:21:41 -04:00
Matthew Brown
5374211fc1
Add link to how Psalm represents types 2019-04-14 15:13:47 -04:00
Matthew Brown
7eab5cf6df Few small improvements 2019-04-14 15:12:16 -04:00
Matthew Brown
2a862040c1 Add more documentation 2019-04-14 15:12:16 -04:00
Robert Hickman
7b5e3c88e3 fix markdown error 2019-04-14 15:12:16 -04:00
Robert Hickman
a1cbf41a0e fix markdown error 2019-04-14 15:12:16 -04:00
Robert Hickman
28ecccb364 added plugins type system documentation 2019-04-14 15:12:16 -04:00
Brown
af4d10cb63 Fix #1499 - use TraitMethodSignatureMismatch when dealing with trait methods 2019-03-29 14:09:06 -04:00
Matthew Brown
dd7596ea64
Update title 2019-03-29 00:06:40 -04:00
bugreportuser
976c2c5ef3 Add an error for throws in global scope 2019-03-24 23:03:37 -04:00
Tyson Andre
2e6a2f14ed Fix typos in psalm with codespell's dictionary 2019-03-24 23:01:20 -04:00
Matthew Brown
9f7f7074ef
Add index to readme 2019-03-20 11:49:17 -04:00
Matthew Brown
41f0034185
Delete index.md 2019-03-20 11:48:20 -04:00
Matthew Brown
12b5d05a86
Update and rename introduction.md to README.md 2019-03-20 11:35:55 -04:00
Matthew Brown
b6d0f89d52
Fix typo 2019-03-19 22:40:27 -04:00
Matthew Brown
6f9945cc09
Change name 2019-03-19 22:39:42 -04:00
Matthew Brown
a8f9885021
Add introduction 2019-03-19 22:39:14 -04:00
Matthew Brown
60504f6c7b
Separate intro 2019-03-19 22:37:26 -04:00
Matthew Brown
41fe05277a
Add explanation of what Psalter does 2019-03-19 19:47:49 -04:00
Matthew Brown
d1f3a757aa
Put fixing on a new line 2019-03-19 18:38:11 -04:00
Matthew Brown
cf10e5b764
Improve index 2019-03-19 18:37:39 -04:00
Matthew Brown
86fecc3ecf
Add link for docblock type syntax 2019-03-19 17:12:35 -04:00
Matthew Brown
8201a2c65c
Add not to make clear you can use object-like arrays yourself 2019-03-19 15:29:28 -04:00
Matthew Brown
d55bd8ac65
Remove formatting that mkdocs doesn't recognise 2019-03-19 15:18:22 -04:00
Matthew Brown
336a79336f
Made indentation clearer maybe? 2019-03-19 15:12:08 -04:00
Matthew Brown
aaa1f17e52
Remove typing arrays 2019-03-19 14:08:58 -04:00
Matthew Brown
d13560f4ef
Add docblock type syntax reference 2019-03-19 13:55:55 -04:00
Matthew Brown
b8b6bf06d7
Add detailed breakdown of supported types 2019-03-19 13:54:36 -04:00
Matthew Brown
6748e5240c
Add follow on from installation 2019-03-19 12:08:22 -04:00
Matthew Brown
5f517f7055
Remove info 2019-03-19 12:02:49 -04:00
Matthew Brown
5d8e0b5036
Add s 2019-03-19 12:02:24 -04:00
Matthew Brown
5cf2cdbf76
Change version reqs 2019-03-19 12:02:12 -04:00
Matthew Brown
a62287ce61
Remove code 2019-03-19 11:54:08 -04:00
Matthew Brown
94ab35da97
Improve plugins page 2019-03-19 11:21:31 -04:00
Matthew Brown
472ab29d74 Add PossiblyInvalidCast for more refined checks 2019-03-17 17:10:51 -04:00
Brown
b3a59d2638 Fix #1435 - prevent classes extending interfaces 2019-03-07 11:16:40 -05:00
Brown
bd372e93af Add config flags for findUnusedVariables and findUnusedCode 2019-03-05 15:45:09 -05:00
Matthew Brown
cdae79b9fe Fix unnecessary params in Psalm codebase 2019-02-23 11:31:33 -05:00
Brown
3deea3980d Add checks for unitialized properties
Fixes #1328
2019-02-13 13:32:19 -05:00
Jacob Dreesen
d4b318faf9 Fix XML node name in the docs 2019-02-12 17:47:02 -05:00
Jacob Dreesen
59ed1c5327 Fix typo 2019-02-12 17:46:26 -05:00
Bruce Weirdan
c310a2dd86 Update docs/templated_annotations.md
Co-Authored-By: SignpostMarv <me@signpostmarv.name>
2019-02-11 18:39:19 -05:00
SignpostMarv
c3f8285eed adjusting header depth to reflect separate document 2019-02-11 18:39:19 -05:00
SignpostMarv
634c480dce splitting templated docs as per discussion in #1323 2019-02-11 18:39:19 -05:00
SignpostMarv
04815f160e stripping trailing whitespace 2019-02-11 18:39:19 -05:00
SignpostMarv
e0c610b75a shifting link to sub-section as per discussion in #1323 2019-02-11 18:39:19 -05:00
SignpostMarv
cfa8844cec updating link 2019-02-11 18:39:19 -05:00
SignpostMarv
c66802c2fa creating sub-section for using psalm
creating sub-section for using psalm alongside entry for psalter
2019-02-11 12:08:29 -05:00
SignpostMarv
3986e34c3c linking all docs in index for ease-of-discovery
further to my earlier tweet about searching for things in the psalm docs, just linking up a few of the unlinked docs.
2019-02-11 12:08:29 -05:00
Bruce Weirdan
1b20d9ab57 Added example of psalm --init run
Refs #1312
2019-02-10 20:40:16 -05:00
Matthew Brown
c58100e3af Fix #1313 - don’t allow mixed function calls 2019-02-10 16:15:52 -05:00
Matthew Brown
652b6eb8f2
Fix int|string return 2019-02-05 17:08:47 -05:00
Matthew Brown
eb070a0959 Put tag on newline 2019-02-05 14:01:36 -05:00
Matthew Brown
18684bb0d4 Add a couple of small edits 2019-02-05 14:01:36 -05:00
SignpostMarv
6c9076b101 adding doc blurb about template tag re-use, with example employing something other than a key-value pair type, using https://getpsalm.org/r/43d8b85bc4 2019-02-05 14:01:36 -05:00
SignpostMarv
deb85c3cf9 adding doc blurb about template tag order in reference to https://mobile.twitter.com/psalmphp/status/1092573808622485504 2019-02-05 14:01:36 -05:00
Tyson Andre
6ae2ee809c Fix typos in issues.md
Detected by codespell and LanguageTool.
2019-02-04 09:57:02 -05:00
Bruce Weirdan
a8799c5167 Converted list to sections
This allows to link to specific settings.
2019-02-03 14:28:47 -05:00
Matthew Brown
836d3d1528
Added more robust templating section 2019-01-29 23:26:37 -05:00
Brown
fcc9d1a979 Fix #1244 and fix #1243 - add template-extends checks 2019-01-25 15:31:17 -05:00
Matthew Brown
262ba9bdec
Added new LSP features. 2019-01-25 11:32:17 -05:00
Brown
cd0a7441d9 Add warnings for extended template param counts off 2019-01-24 17:55:03 -05:00
Matthew Brown
279912cb55 Add documentation for @param-out 2019-01-20 12:50:47 -05:00
Viktor Szépe
f6a00011be Fix config link in docs 2019-01-19 16:02:08 -05:00
Matthew Brown
bd9f2ec546 Add separate issue type for undefined interface method 2019-01-13 13:07:53 -05:00
Matthew Brown
8ab5fae484 Add function casing example plugin 2019-01-07 09:34:16 -05:00
Matthew Brown
195cb289ed Add float-checking plugin, and support for custom plugin issues 2019-01-07 08:38:56 -05:00
Matthew Brown
214fd7d461 Add DuplicateFunction issue
Fixes #49
2019-01-06 16:40:44 -05:00
Matthew Brown
b081256f39
Add section on using a baseline 2019-01-03 08:58:54 -05:00
Matthew Brown
6480b69db4
Update ALE info 2019-01-03 07:25:14 -05:00
Matthew Brown
6af3345b72
Fixed documentation about loops 2019-01-03 06:47:10 -05:00
Brown
2b4b55fd33 Add support for @return no-return
Fixes #1155
2019-01-02 17:05:39 -05:00
Matthew Brown
2304ad23b9
Added more info about class strings 2019-01-02 14:20:04 -05:00
Matthew Brown
a74c0c86ca
Add link to type manual 2019-01-02 13:56:43 -05:00
Brown
1d300ec342 Fix #1150 2019-01-02 11:18:22 -05:00
Andrii Dembitskyi
2162144234 Fix link in docs to example echo plugin 2019-01-01 18:43:15 +01:00
Brown
fb848d62e9 Add checks for if (count($a)) and if (count($a) [operator] [number]) 2018-12-19 16:15:19 -05:00
Matthew Brown
ea89a6ba29 Revert "First pass"
This reverts commit 9ed047234f.
2018-12-19 08:45:14 -05:00
Matthew Brown
9ed047234f First pass 2018-12-19 01:59:14 -05:00
Matthew Brown
b32000fa05 Fix #689 - add checks for @internal annotations 2018-12-01 18:37:49 -05:00
Matthew Brown
23fe4b3591
Add breaks 2018-11-30 19:01:24 -05:00
Matthew Brown
d3826e42c8
Adding a file to document the complicated things in life 2018-11-30 19:00:55 -05:00
Aidan Woods
10931d2d68 Fix config option typo 2018-11-24 11:19:46 -05:00
Tyson Andre
951e28d608 Fix typos noticed in docs 2018-11-15 21:54:25 -05:00
Matthew Brown
695f37e6c8
Add detail to ALE linter 2018-11-13 15:28:39 -05:00
Brown
06974221df Change DependencyFinderVisitor name to ReflectorVisitor and update docs 2018-11-13 14:09:43 -05:00
Bruce Weirdan
a338e76ef6 Plugin interface segregation (#1076)
* Split Plugin into PluginApi\Hook\* interfaces

* dropped Psalm\Plugin

* updated docs

* s/PluginApi/Plugin/g
2018-11-12 11:20:59 -05:00
Matthew Brown
8b0f2579a5 Update plugin docs 2018-11-12 11:20:59 -05:00
Bruce Weirdan
052d4f6217 Plugin loading (#855)
* add ability to load plugins by class names

- Plugins need to implement `__invoke(PluginFacade $psalm):void` method
- Plugins are enabled by adding `<pluginClass
class="Qualified\Class\Name"/>`
- `PluginFacade` provides a single point of contact with Psalm, so that
plugins cannot become coupled to Psalm internals

* added `psalm-plugin` cli tool to manage plugins

Available commands:
 `psalm-plugin list` - lists available and enabled plugins
 `psalm-plugin enable 'Plugin\Class\Name'` - enables plugin (modifies `psalm.xml`)
 `psalm-plugin disable 'Plugin\Class\Name'` - disables plugin (modifies `psalm.xml`)

Plugin installation:
 `composer install plugin-vendor/plugin-package-name`

Plugin authoring:
 Plugins are identified by package `type` field, which should contain
 `psalm-plugin` string.
 `extra.pluginClass` should refer to the name of the class implementing
 `__invoke(PluginFacade $psalm):void` function

Todo:
 - better config file search
 - better output for `psalm-plugin`
 - better formatting for modified xml file
 - composer skeleton project for plugins
 - ability to refer to plugins by package name (cli only)
 - composer plugin to (optionally) enable plugin upon installation
 - documentation on plugin installation and authoring
 - interfaces for plugin dependencies
 - interface for plugin entry point
 - migration path for legacy plugins

* documented previously undocumented plugin methods

* split legacy plugin registration into a wrapper class

also added `PluginApi` namespace and `RegistrationInterface`

* reuse psalm's config search algorithm

* enable/disable plugins by composer package name

* allow specifying alternative config file name

* whitelist PluginApi namespace

three times, but well, it works now

* interface for plugin entry points

* psalm-plugin as a symfony console app

* fixed errors found by psalm

* suppressed false positive UnusedMethods

* cs fix

* better psalm-plugin output

* don't leave empty `plugins` node to avoid old schema violation

* removed junk file that shouldn't be there

* cs fix

* fixed phpunit failure (constant redefinition)

* work around missing docblock in on symfony console

* php 7.0 compatibility

* allow `pluginClass` child elements as plugin configuration

* decouple console commands from undelying implementation

- introduce PluginListFactory
- add `PluginList::enable(string $class)` and `PluginList::disable(string $class)`

* PluginList tests

* ComposerLock test

* droppped debugging statement

* added part of console command tests

* added tests for EnableCommand

* added DisableCommand tests

* ignore unused args

* ConfigFile test

* disable travis cache in attempt to fix builds

* nah, that didn't work

* update for upstream changes

* rebase fixes

* namespaced `extra` entry for entry point

* s/PluginFacade/PluginRegistrationSocket/g

* Added $config parameter to PluginEntryPointInterface::__invoke()

* cs fixes

* entry point interface php7.0 compatibility

* cleaned up old cruft

- dropped todos I'm not going to pursues
- locked entry point to be a class implementing entry point interface

* fixed legacy plugins docs

* Added RegistrationInterface::registerHooksFromClass()

It mimics the way old plugins were registered in Psalm\Config, so
handler classes extending Psalm\Plugin should be fully compatible with
it.

Since Psalm\Plugin-style plugin registration was moved to
RegistrationSocket, LegacyPlugin now only load file-based plugins, so it
was renamed to FileBasedPluginAdapter.

* Converted EchoChecker plugin to composer-based format

- Its subfolder is registered as a local composer package in the root
composer.json, so it's directly installable with
	```
	composer require psalm/echo-checker-plugin
	```
- Migration is trivial: drop the plugin into a separate folder, then add
simple composer.json and the entry point class.

* Updated docs

* Don't reject hook handlers that inherit handling methods

* strip void return type in stub file
2018-11-10 23:23:36 -05:00
Tyson Andre
6ba76e1589 Fix wording nits in documentation 2018-10-27 13:05:49 -04:00
Matthew Brown
f8b213bb48
Add line break 2018-10-25 13:31:04 -04:00
Matthew Brown
4be2e77dfa
Update ALE info 2018-10-25 13:30:37 -04:00
Brown
4ae218fdea Format list properly 2018-10-23 18:31:49 -04:00
Brown
c6f00c07e1 Improve formatting 2018-10-23 17:46:05 -04:00
Brown
93ce245767 Capitalise editors 2018-10-23 17:37:48 -04:00
Brown
09ebb2857f Turn urls into links 2018-10-23 17:35:42 -04:00
Brown
68786b1698 Add link to language server doc 2018-10-23 17:30:36 -04:00
Brown
fc72ac05e4 Add VS Code requirement 2018-10-23 17:27:11 -04:00
Brown
eac28d4291 Add note about new PR 2018-10-23 16:55:07 -04:00
Brown
9ee7b9a1a1 Update VS Code support 2018-10-23 16:52:53 -04:00
Brown
3ca53d4435 Improve formatting of PHPStorm settings 2018-10-23 11:21:32 -04:00
Brown
6e529da5c1 Fix link 2018-10-23 11:20:30 -04:00
Brown
0a3f8d152d Fix PHPStorm instructions 2018-10-23 11:19:27 -04:00
Brown
bb81bbde6d Improve emacs LSP code 2018-10-23 10:20:31 -04:00
Matthew Brown
a1b277869b
Fix name 2018-10-22 11:58:53 -04:00
Brown
6af3a226c4 Add docs for language server support 2018-10-19 17:51:07 -04:00
Tyson Andre
e0dda676ed nit: Fix return type in docs/supported_annotations.md 2018-10-18 17:21:32 -04:00
Dave Liddament
af149bd4dc ADD extra documentation about psalm-assert
Maybe this will be obvious to others, but it probably took me about 3 hours to realise this was possible. Hopefully this doc update will save others time too.
2018-10-11 15:54:37 -04:00
Matthew Brown
afebefba19 Switch from --cache-results to --diff-methods flag 2018-10-07 00:42:25 -04:00
Matthew Brown
265157d814
Add a note about using threads 2018-09-30 16:05:42 -04:00
Matthew Brown
04f78771b5 Add section about running faster builds 2018-09-30 11:34:51 -04:00
Matthew Brown
890412b557 Add support back for parser errors 2018-09-30 11:34:51 -04:00
Matt Brown
4d4e84e6e9 Add specific ForbiddenEcho issue if a config flag is set 2018-09-18 17:08:32 -04:00
Matt Brown
cb63f4f70f Add support for checking DeprecatedTrait and DeprecatedConstant 2018-08-10 13:25:25 -04:00
Tyson Andre
06abf52d94 Fix typos detected by misspell (#924)
Both of initiali[sz]e were used, z was more common.
2018-08-02 00:40:51 -04:00
Tyson Andre
9b7ca80fa4 nit: fix typo in docs (#917)
https://www.vocabulary.com/dictionary/parenthesis
2018-07-24 16:56:51 -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
896790d30c Add documentation for recently-added features 2018-06-20 00:33:32 -04:00
Matthew Brown
bec227fbc2
Added description of ignoreFiles directive 2018-06-07 13:37:54 -04:00
Matthew Brown
c4f3bd1558 Add docs for @psalm-assert annotations 2018-06-03 23:38:06 -04:00
Matthew Brown
b5cb2b34a2 Fix #380 - don’t complain about legitimate (if archaic) self calls 2018-06-03 19:11:07 -04:00
Alexey Kopytko
185877276c Update dealing_with_code_issues.md (#780) 2018-05-30 07:08:15 -04:00
Matt Brown
2d6eab85fa Fix doc example syntax 2018-05-24 14:33:41 -04:00
Matt Brown
e2153db3dc Add more info to typing guidelines 2018-05-24 14:31:55 -04:00
Matt Brown
bc17d23788 Fix mixed empty checks 2018-05-08 16:34:08 -04:00
Matt Brown
c0729a02cd Fix remaining issues with logic checks 2018-05-07 14:52:45 -04:00
Matt Brown
383f706d6b Add docs for usePhpDocMethodsWithoutMagicCall 2018-04-26 19:19:35 -04:00
rightfold
5c908da55a Check that __clone, __construct, __destruct signatures omit return types
PHP complains when you have a return type declared for these three methods.
2018-04-21 16:04:03 -04:00
Matthew Brown
2b34c1d315 Add extra level 8 containing PHP autoload landmines 2018-04-19 01:03:28 -04:00
Matt Brown
aa3ea9c14c Add a 7th level with even more permissive checks 2018-04-18 15:31:00 -04:00
Matt Brown
5a2f6ff0e0 Fix #624 - change some innaccurate issue names 2018-04-17 14:07:02 -04:00
Matt Brown
6ac2d22f76 Add TOC back to index 2018-04-17 11:29:26 -04:00
Matthew Brown
a03dd6502c Specify what config levels do 2018-04-15 12:17:07 -04:00
Matthew Brown
ad051dcf6d
Improve installation instructions 2018-04-15 10:56:43 -04:00
Matthew Brown
3dad2ecb97
Fix formatting for mkdocs 2018-04-15 10:51:21 -04:00
Matthew Brown
d07644191e Remove artificial table of contents 2018-04-15 10:26:03 -04:00
Matt Brown
21b74ae725 Turn useAssertForType on by default (was off) 2018-04-13 17:35:56 -04:00
Matthew Brown
6519748837
Make class-string annotation more clear 2018-04-11 23:55:39 -04:00
Matthew Brown
8337b37179
Added documentation for callable syntax 2018-04-11 15:06:18 -04:00
Matthew Brown
f15c26d7f4 Change how type impossibilities are treated to improve message types 2018-04-10 01:27:26 -04:00
Matthew Brown
3fe9a0606e Fix #654 - warn about MixedArgument when inferredType property does not exist
And handle str_replace more leniently when args unknown
2018-04-07 15:16:46 -04:00
Matthew Brown
ea6875a556 Add description of referencedClass and referencedMethod 2018-03-21 11:56:43 -04:00