Matthew Brown
f27bd50abe
Add RedundantCondition issue, replacing FailedTypeResolution ( #344 )
...
* Group changes
* Don’t worry about vars defined before exiting
* Fix issues with vars defined in conditionals
* Add failing test
* Only add failed reconciliation flag if nothing could be salvaged
* Avoid notice when removing clauses
* Improve handling of loops
* Fix evaluation of binary op expressions
* Remove unset vars from outer context after loop
* Ignore RedundantCondition in some more configs
2017-11-28 00:46:41 -05:00
Matt Brown
8b0d99e28b
Fix extending of core classes that do bad things
2017-11-27 11:43:06 -05:00
Matthew Brown
afcbc113c9
Fix #228 , fix #336 by improving checking of inherited signatures
2017-11-26 16:03:17 -05:00
Matthew Brown
c86e73ddb6
Always keep track of referenced var ids
...
which we can use for analysis elsewhere
2017-11-24 12:17:28 -05:00
Matthew Brown
4312ef380b
Fix issues found by improved Psalm checks
...
cc @TysonAndre, found with RedundantCondition checks
2017-11-24 12:10:30 -05:00
Matthew Brown
df06c64b3e
Allow suppression of InvalidToString
2017-11-21 21:53:12 -05:00
Matthew Brown
e3b688b06d
Fix #316 - self resolves to proper class
2017-11-21 21:50:39 -05:00
Matthew Brown
942bc0a663
Add new MixedTypeCoercion issue, fixes #320
2017-11-19 13:42:48 -05:00
Matthew Brown
440db3be89
Fix #313 - correctly analyse closure self return types
2017-11-16 20:06:00 -05:00
Matthew Brown
160a95a8bf
Fix too-long line
2017-11-13 21:21:54 -05:00
Matt Brown
7e8ae33d56
Fix #288 - get rid of MethodSignatureMismatch issues where PHP doesn’t worry
2017-11-13 16:31:33 -05:00
Tyson Andre
e2dd3db70f
Fix phpdoc in psalm's codebase referring to missing params. ( #273 )
...
Also, don't use `@return self` in __construct, it returns void.
2017-11-08 23:32:22 -05:00
Matthew Brown
765d82548d
Remove more dead code
2017-11-08 23:27:51 -05:00
Tyson Andre
b3505cfbef
Get rid of unused variables in psalm's codebase ( #272 )
...
* Remove unused variables
* Fix more unused variables
* Fix remaining detected undefined variables
Other 20 detected undefined variable warnings were false positives.
2017-11-08 23:14:27 -05:00
Matt Brown
8b7d82ddf6
Fix #2 - suppress errors for single lines
2017-10-26 18:19:19 -04:00
Matt Brown
c850ef644d
Add PossiblyFalseReference and PossiblyFalseArgument issues
...
Useful for catching error cases
2017-10-23 11:47:00 -04:00
Matthew Brown
6b4bd47ddb
Fix #181 and #225 - resolve problems with self in comments/return statements
2017-10-07 10:22:52 -04:00
Matthew Brown
1cc13bdeeb
Prevent TNamedObject from having a leading slash
2017-10-06 23:35:16 -04:00
Matthew Brown
e42e590442
Add more descriptive exception messages
2017-09-20 08:43:54 -04:00
Matthew Brown
9a3cb742cb
Refactor docblock manipulation and add tests for it
2017-09-16 12:45:20 -04:00
Matthew Brown
9f9e8a1b30
Improve API for inference
2017-09-03 20:52:54 -04:00
Matthew Brown
a725009181
Only say we could not infer param type if we’re actively looking
2017-09-02 18:26:19 -04:00
Matthew Brown
73694ab04e
Suggest types when complaining of untype params
...
Ref #204
2017-09-02 18:15:52 -04:00
Matthew Brown
8aabcbce35
Introduce UntypedParam warnings when functions are missing param types
2017-09-02 11:18:56 -04:00
Matt Brown
c626b7d68a
Fix #200 - allow mapping of more callable strings, and callable arrays
2017-08-14 19:30:11 -04:00
Matt Brown
396d214e3c
Throw exception when function storage is missing
2017-08-08 14:45:47 -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
Matthew Brown
2c1a0b197e
Remove param typehint
2017-07-26 23:47:29 -04:00
Matt Brown
dbb1bf2e73
Add addSuppressedIssue API method back
2017-07-26 16:09:09 -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
c7b0f6685f
Make Psalm a bit faster
2017-07-08 21:19:16 -04:00
Matthew Brown
91bdd65588
Fix #179 - check for abstract method instantiations
2017-06-30 10:24:47 -04:00
Matt Brown
5220df4837
Fix #177 - treat return type as nullable due to try
2017-06-29 10:33:54 -04:00
Matt Brown
f49d167a49
Add tracking from where a trait was included
2017-06-21 14:22:52 -04:00
Matt Brown
f4338c38e7
Fix #148 - suppress InvalidDocblock where appropriate
2017-06-13 14:00:41 -04:00
Matthew Brown
81223c45e0
Fix #166 - return instead of looping infinitely
2017-06-05 21:46:04 +01:00
Matthew Brown
8c0aced195
Add specific check for return type parse issue ref #165
2017-05-29 20:58:49 -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
96e3ad02fc
Remove blank line
2017-05-21 13:52:06 -04:00
Matthew Brown
92e184086f
Fix #158 - prevent using resource in return type
2017-05-21 13:48:17 -04:00
Matthew Brown
7532e32b9d
Fixed spacing and use statement formatting
2017-05-19 00:48:26 -04:00
Matt Brown
052624fa94
Fix issue calculating inherited parent property mutations
2017-05-12 19:15:08 -04:00
Matt Brown
53b81ac2e1
Fix pass-by-ref
2017-05-10 14:05:26 -04:00
github@muglug.com
20d4831f67
Improve return type ignore_nullable inference
2017-05-10 14:03:51 -04:00
Matt Brown
d7e2c5ee3c
Don’t emit InvalidReturnType when we don’t care about nullability
2017-05-10 13:52:24 -04:00
Matt Brown
39ece995b6
Add @psalm-ignore-nullable-return annotation
2017-05-10 12:36:11 -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
8d46c65815
Only make non-null if inside constructor
2017-04-14 23:26:58 -04:00
Matt Brown
ed356bfbd0
Don’t mistake same-named functions for old-style constructors
...
Fixes #131
2017-04-10 11:03:19 -04:00
Matt Brown
5b34163d8d
Add ability to insert suppressed issues on functions
2017-03-31 11:21:34 -04:00
Matt Brown
d06a199d25
Fix #121 - simplify all parameter types
2017-03-30 11:44:38 -04:00
Matthew Brown
caf72bda52
Shave off a little extra time by caching file_checker refs
2017-03-19 23:30:20 -04:00
Matthew Brown
fc4a72d905
Store reflected variadic function parameters
2017-03-19 18:31:19 -04:00
Matthew Brown
e687887ba3
Emit an InvalidReturnType when it should contain null, and introduct LessSpecificReturnType
2017-03-18 12:18:17 -04:00
Matthew Brown
9b41bc9b37
Add slower (but more accurate) loop checks
2017-03-14 20:14:25 -04:00
Matt Brown
f9f38f283e
Emit issue when property type is not defined
2017-03-02 12:19:18 -05:00
Matthew Brown
5cd1b6735f
Add even more references in docblocks
2017-03-01 22:27:52 -05:00
Matt Brown
6d1f557ca4
Add docblock type location
2017-03-01 18:36:04 -05:00
Matt Brown
864d242f13
Improve labelling of referencing expressions
2017-03-01 11:56:36 -05:00
Matthew Brown
d9433c9491
Add way to find all references to a given class or method in the codebase
2017-02-27 01:30:44 -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
fa3b292fd4
Fix #101 - restrict the values of pass-by-ref variables
2017-02-23 00:25:28 -05:00
Matthew Brown
12cb72ae4b
Prevent recursion when checking for initialisations
2017-02-22 00:51:34 -05:00
Matthew Brown
4348888b3e
Prevent error when no params are given
2017-02-21 01:56:43 -05:00
Matthew Brown
e61ea17db5
Move FileChecker functionality into separate, better-contained classes
2017-02-18 13:41:27 -05:00
Matthew Brown
81e24de76f
Fix invalid NullPropertyFetch warning
2017-02-12 18:06:18 -05:00
Matthew Brown
3f0a87f6fe
Add more specific __toString error issue
2017-02-12 13:26:24 -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
Matthew Brown
deb11c9402
Change some errors from InvalidReturnType to MoreSpecificReturnType
2017-02-11 18:25:44 -05:00
Matt Brown
32d85e20da
Remove unused vars
2017-02-10 19:10:13 -05:00
Matt Brown
c0a6fc9125
Fix #90 - add genericised stubs for common array functions
2017-02-10 18:12:59 -05:00
Matthew Brown
8ffd45407c
Add support for namespaced templates
2017-02-10 00:14:44 -05:00
Matthew Brown
4a82c0a09a
Add support for nested types in templates
2017-02-09 22:57:23 -05:00
Matthew Brown
5e8a40a5a1
Merge pull request #94 from vimeo/template-tags
...
Add support for templating
2017-02-09 20:51:23 -05:00
Matthew Brown
98b0ed280c
Add support for templating
2017-02-09 20:35:17 -05:00
Matthew Brown
41f7dc4a52
Fix #93 - fix MethodSignatureMismatch checks on builtin class methods
2017-02-09 17:49:13 -05:00
Matthew Brown
6934b8ee45
Do not emit signature error for constructors
2017-02-08 21:19:47 -05:00
Matthew Brown
64cbe005f3
Remove more false positives
2017-02-08 02:23:41 -05:00
Matthew Brown
cedb70b0b4
Reduce false positives for unused variables
2017-02-08 01:59:49 -05:00
Matthew Brown
cdcacc395d
Rename DeadCode to UnusedVariable, UnusedMethod and UnusedClass
2017-02-08 00:28:26 -05:00
Matthew Brown
65ef5ba8b7
Improve native understanding of docblock-less variadics
2017-02-07 22:02:46 -05:00
Matt Brown
f4857eb0dd
Make dead code check emit an issue
2017-02-07 18:18:33 -05:00
Matt Brown
6b2bb7d917
Store first code location for all variables in a statement list
2017-02-07 18:09:12 -05:00
Matthew Brown
01beb97413
Fix #87 - array types from docblocks can be reasoned about safely
2017-02-03 22:07:14 -05:00
Matthew Brown
0fbf8b5619
Remove more dead code
2017-02-02 00:45:23 -05:00
Matthew Brown
d3abc0011d
Fix #80 - add dead code checks via command line
2017-01-31 23:24:33 -05:00
Matt Brown
8c68861cc3
Fix #81 - interface inheritance checks were broken
2017-01-30 18:38:23 -05:00
Matthew Brown
4114456bf4
Key off lowercase classname and reduce dead code false positives
2017-01-30 00:26:17 -05:00
Matthew Brown
2e4aa3d3b1
Do not suggest mixed types
2017-01-27 22:44:52 -07:00
Matthew Brown
c868781731
Fix multiline docblock issue reporting issue
2017-01-27 22:24:25 -07:00
Matthew Brown
6714e28f5d
Fix line numbers for return typehints
2017-01-27 19:09:40 -07:00
Matthew Brown
a35f2e0792
Don’t unset $this when calculating scope changes
2017-01-27 18:54:27 -07:00
Matthew Brown
63801c38c0
Make location of constructor error more specific
2017-01-26 23:32:03 -07:00
Matthew Brown
6bcc763414
Fix #3 by checking inside __constructor calls for initialisations
2017-01-26 23:23:12 -07:00
Matthew Brown
7e7743d6fb
Do not complain about missing void return types if config set
2017-01-25 17:07:28 -07:00
Matthew Brown
15e8c1b904
Fix simplifyUnionType so classes with __toString aren’t confused with string
2017-01-25 17:01:01 -07:00
Matthew Brown
58aee6340d
Remove var_dump (shame on me)
2017-01-23 15:17:35 -07:00
Matthew Brown
df1d6abd7c
Make brand-new return types more accurate
2017-01-23 15:16:13 -07:00
Matt Brown
c1e62a09e7
Merge suppressed issues with source’s issues
2017-01-19 17:58:08 -05:00
Matt Brown
c0898aa6e5
Fix issue where inferred return type contained subclasses
2017-01-17 12:51:09 -05:00
Matt Brown
6b47741528
Remove extraneous check
2017-01-17 11:20:28 -05:00
Matt Brown
dae7718ae8
Support array_combine types and introduce a MoreSpecificReturnType issue
2017-01-17 11:17:49 -05:00
Matthew Brown
bc668e2c7a
Change variadic docblock param to match language syntax
2017-01-17 01:14:43 -05:00
Matthew Brown
693811abed
Allow non-array docblock typehints for variadic params
2017-01-17 00:26:40 -05:00
Matthew Brown
3cdb1753d5
Update to the more accurate TypeChecker::isContainedBy
2017-01-16 20:00:51 -05:00
Matthew Brown
2e2f2f4ffb
Add new suppressable error for missing closure return types
2017-01-16 01:22:36 -05:00
Matthew Brown
ce89ac4986
Fix #50 - asserting about docblock types no longer causes error
2017-01-15 17:52:01 -05:00
Matthew Brown
9b06b672ba
Fix #54 - register function constants when function is invoked
2017-01-15 16:43:49 -05:00
Matthew Brown
4fd46fe2c8
Fix #59 - make functions aware of just-defined constants
2017-01-15 15:58:40 -05:00
Matthew Brown
1bf2139149
Fix #58 - treat callmap args correctly when evaluating variadic
2017-01-15 13:17:11 -05:00
Matthew Brown
03141e41c2
Move string-stored types into named classes
2017-01-15 10:22:05 -05:00
Matt Brown
fbbef2c320
Fix #45 - add issue when optional param used before required
2017-01-13 13:40:20 -05:00
Matt Brown
c181f47364
Fix #35 and #40 by improving method signature checks
2017-01-13 12:03:22 -05:00
Matthew Brown
5f54a9571c
Fix deep project checks
2017-01-12 01:03:48 -05:00
Matthew Brown
56be346191
Add back mutation checks
2017-01-11 21:37:53 -05:00
Matthew Brown
f318c52876
Improve function rechecking
2017-01-09 00:31:23 -05:00
Matthew Brown
03c5ea3cef
Store all class keys lowercased
2017-01-09 00:14:39 -05:00
Matthew Brown
306e600e3a
Do not check param types on visit
2017-01-08 22:00:23 -05:00
Matthew Brown
17329015dc
Discriminate between checking, visiting and analyzing in method names
2017-01-07 15:09:47 -05:00
Matthew Brown
694da2cabd
Simplify a lot of APIs
2017-01-07 14:35:07 -05:00
Matthew Brown
6ee69e547f
Do more to separate out processing steps
2017-01-06 01:07:11 -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
4c3e714253
Add a check for duplicated params
2017-01-02 01:20:47 -05:00
Matthew Brown
93c1366bd8
Tighten up what array assignments can happen
2017-01-02 01:07:44 -05:00
Matthew Brown
882c8a8d0c
Add better checking of property array assignments
2017-01-02 00:08:35 -05:00
Matthew Brown
846cc59d5f
Add support for checking closure return types
2016-12-31 10:51:42 -05:00
Matthew Brown
393297786d
Fix issues with single-letter classes
2016-12-31 00:14:00 -05:00
Matthew Brown
ee4a3882a7
Check method defaults to see whether they match
2016-12-30 23:40:32 -05:00
Matthew Brown
bc01169910
Fix debug end results
2016-12-30 18:28:43 -05:00
Matthew Brown
c65a0bf181
Move function static arrays into FileStorage
2016-12-30 18:08:07 -05:00
Matthew Brown
92fe58b97c
Shift storage from static arrays to dedicated ClassLikeStorage objects
2016-12-30 12:41:14 -05:00
Matthew Brown
2bf515be5f
Check return types of functions in namespaces
2016-12-28 19:57:18 -05:00
Matthew Brown
324b7b4801
Support old-style namespaced constructors
2016-12-27 01:06:05 +00:00
Matthew Brown
b6eea4e812
Fix #20 - emit an issue when param is missing a type or param
2016-12-25 11:32:21 +00:00
Matthew Brown
c55870e26c
Allow generic TypeChecker::isContainedBy checks
2016-12-24 18:28:43 +00:00
Matthew Brown
dfa089f8df
Remove functionality that overlaps with phpcs FunctionCommentSniff
2016-12-23 22:48:36 +00:00
Matthew Brown
1e96cea2c5
Check for nulls in parameter calls
2016-12-23 20:06:20 +00:00
Matthew Brown
e79dded17b
Fix #19 - InvalidDocblock errors have proper casing now
2016-12-19 22:02:00 +00:00
Matthew Brown
9746c8972f
Fix MixedAssignment errors
2016-12-17 00:48:31 -05:00
Matt Brown
6755c8724a
Add tests for M* issues, fixing bugs along the way
2016-12-16 18:56:23 -05:00
Matt Brown
1d804cde66
Expand scope of property checks
2016-12-14 19:19:25 -05:00
Matthew Brown
592ee98efc
Fix bugs discovered by adding more tests
2016-12-11 23:40:46 -05:00
Matthew Brown
562f71b21f
Add TypeDoesNotContainType issue and fix those issues in Psalm code
2016-12-11 13:48:11 -05:00
Matthew Brown
12b5097fba
Fix function casing when checking regular functions
2016-12-10 13:20:41 -05:00
Matt Brown
b3106c68bb
Fix #6 - raise error with erroneous __toString
2016-12-09 12:48:02 -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