Tyson Andre
d9a142ac7d
Fix incorrect strpos argument order ( #287 )
...
Detected via static analysis
2017-11-11 21:48:43 -05:00
Matthew Brown
4f2a200b45
Fix #283 - add more refined PossiblyUndefinedMethod check
2017-11-11 14:53:35 -05:00
Matt Brown
59265ef2bf
Fix #276 - fix false positive in magic call
2017-11-10 18:08:26 -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
490e78e136
Add isset check for safety
2017-11-06 15:42:39 -05:00
Matt Brown
97de8f7684
Allow Psalm to check static call LHS vars
2017-11-06 15:37:49 -05:00
Matt Brown
b163c296ff
Fix templated return types in traits
2017-11-02 15:07:39 -04:00
Matthew Brown
51280c1670
Allow byref args of socket_select to pass through unchanged
2017-10-28 16:26:45 -04:00
Matthew Brown
24980cd7d7
Constrain user-defined functions and methods
2017-10-28 16:05:35 -04:00
Matthew Brown
45df0292b1
Never constrain by-ref array variables
2017-10-28 15:33:29 -04:00
Matthew Brown
bee14d184f
Add better check for property
2017-10-28 15:17:32 -04:00
Matthew Brown
30acb9e3b7
Improve array function byref understanding by hard-coding rules
2017-10-28 13:56:29 -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
483b4c75f3
Fix #223 - array_map with too few args should have issue
2017-10-07 10:33:19 -04:00
Matthew Brown
391696bc83
Use a blacklist, not a whitelist
2017-09-16 13:28:33 -04:00
Matthew Brown
3a8efec728
Add error for pass by reference
2017-09-16 13:16:21 -04:00
Matthew Brown
995e92a8c3
Remove empty if block
2017-09-14 00:36:38 -04:00
Matthew Brown
2a4a6fc490
Exit early if checking iterable for methods
2017-09-14 00:32:14 -04:00
Matt Brown
d1807cfb95
Improve checks for switch types
2017-09-11 11:58:11 -04:00
Matthew Brown
9f9e8a1b30
Improve API for inference
2017-09-03 20:52:54 -04:00
Matthew Brown
6531e3bfb8
Throw exception if impossible state is reached
2017-09-02 18:22:44 -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
1cc63fe718
Ignore leading slash in array_map methods
2017-08-30 13:45:41 -04:00
Matthew Brown
622217b708
Fix #205 - add file references at analysis stage too
2017-08-22 12:38:38 -04:00
Matt Brown
3075f16308
Ignore static, self and parent in callable class names
2017-08-18 17:02:15 -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
d6e2e786db
Ignore self calls as well
2017-08-11 19:09:15 -04:00
Matt Brown
a7baa7e928
Support callable checks on inline-defined functions
2017-08-11 19:05:04 -04:00
Matt Brown
13d98b803d
Check that callable string class exists first
2017-08-11 18:48:58 -04:00
Matt Brown
17a900ab54
Add ability to detect invalid callable functions
2017-08-11 18:30:58 -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
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
d8654b8389
Slow down Psalm by checking parent initialisations too
2017-06-30 01:24:45 -04:00
Matthew Brown
bc35f88859
Fix issue with $this instanceof checks in traits
2017-06-23 00:39:37 -04:00
Matthew Brown
93e7486d5e
Reduce line length
2017-05-26 20:17:56 -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
0fdf281896
Add support for @deprecated classes
2017-05-25 00:34:39 -04:00
Matthew Brown
44b4d04e0a
Fix #95 - emit issue on private constructor calls
2017-05-24 23:55:54 -04:00
Matthew Brown
8f317cd8a2
Fix #133 - emit issue when calling no-constructor class with args
2017-05-24 23:11:40 -04:00
Matthew Brown
4fd46e1752
Improve formatting
2017-05-24 22:07:49 -04:00
Matthew Brown
7532e32b9d
Fixed spacing and use statement formatting
2017-05-19 00:48:26 -04:00
github@muglug.com
9ff8736e53
Add the means to ignore PossiblyNull* errors from the type itself
2017-05-09 16:38:58 -04:00
Matthew Brown
c9b9b29cf4
Fix all phpcs issues
2017-05-04 21:57:26 -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
007442fdd0
Fix possibly-private error
2017-04-15 21:10:49 -04:00
Matthew Brown
f67e92023b
Add support for intersection types
...
Fixes #140
2017-04-15 20:36:40 -04:00
Matthew Brown
ce6ca58291
Fix #114 - add optional Hack-like checks calls
2017-04-14 21:32:14 -04:00
Matthew Brown
32efdfd0f7
Fix #129 - emit PossiblyNullFuntionCall when encountering such a thing
2017-04-08 11:38:06 -04:00
Matthew Brown
2d454d6e10
Fix #130 - check class exists before checking for __invoke
2017-04-08 11:15:17 -04:00
Matthew Brown
a985fd9324
Add PossiblyInvalidArgument for closure param type checks
2017-04-08 09:47:03 -04:00
Matthew Brown
64361ad2c3
Add more descriptive message to PossiblyInvalidArgument issue
2017-04-08 09:43:58 -04:00
Matthew Brown
c663062816
Add PossiblyUndefinedArgument issue to cope with #126
2017-04-08 09:28:02 -04:00
Matthew Brown
b3a454cf5b
Create new InvalidMethodCall issue for calling methods on non-objects
2017-04-08 09:20:32 -04:00
Matt Brown
f011197090
Fix #124 - don’t check array_filter closures when >2 args passed
2017-04-07 18:30:15 -04:00
Matt Brown
14bb967c7d
Warn when doing === comparisons on incompatible types
2017-04-06 14:53:45 -04:00
Matt Brown
fe43c4e37f
Fix #122 - allow multiple types of filtering
2017-04-03 12:36:49 -04:00
Matthew Brown
c33e66813a
Move type algebra functionality to separate checker
2017-03-18 13:37:00 -04:00
Matt Brown
ae0ca9553f
Remove training wheels
2017-03-13 12:02:28 -04:00
Matt Brown
f9f38f283e
Emit issue when property type is not defined
2017-03-02 12:19:18 -05:00
Matthew Brown
18b5617443
Prevent duplicate lookup of functionstorage
2017-03-02 00:00:31 -05:00
Matthew Brown
5cd1b6735f
Add even more references in docblocks
2017-03-01 22:27:52 -05:00
Matt Brown
864d242f13
Improve labelling of referencing expressions
2017-03-01 11:56:36 -05:00
Matt Brown
518184f388
Don’t do a full class check where not necessary
2017-02-28 11:00:32 -05:00
Matt Brown
4f597a4068
Fix references
2017-02-27 16:38:43 -05:00
github@muglug.com
07c9cfb848
Check template typeof class references
2017-02-27 16:35:24 -05:00
Matt Brown
729954573b
Allow generics to work even if variables not checked
2017-02-27 11:07:44 -05:00
Matt Brown
ac1a45f129
Fix erroneous error message
2017-02-27 10:53:32 -05:00
Matt Brown
7baf942eaa
Prevent false positives after extract call
2017-02-27 10:52:43 -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
Matthew Brown
12cb72ae4b
Prevent recursion when checking for initialisations
2017-02-22 00:51:34 -05:00
Matthew Brown
9579460c59
Fix #97 - is_callable shouldn’t prevent evaluation of calls to existing functions
2017-02-16 20:51:53 -05:00
Matthew Brown
32dd5d5512
Be better about dealing with byref args when not checking functions
2017-02-15 01:47:03 -05:00
Matthew Brown
1001e03f8a
Prevent empty typeof types
2017-02-12 19:51:48 -05:00
Matthew Brown
4f43a7eccb
Fix possible nullref
2017-02-12 19:31:35 -05:00
Matthew Brown
1d09616e9d
Prevent template types from leaking when no generics are provided
2017-02-12 19:26:23 -05:00
Matthew Brown
2f2b487236
Fix #96
2017-02-12 12:31:39 -05:00
Matthew Brown
f32fabd798
Remove dead code
2017-02-11 19:30:06 -05:00
Matthew Brown
35e4b380cc
Add collection of PossiblyNull* issues
2017-02-11 17:55:08 -05:00
Matthew Brown
14c487d3e6
Always supply default template params as return type
2017-02-10 22:51:47 -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
4a82c0a09a
Add support for nested types in templates
2017-02-09 22:57:23 -05:00
Matthew Brown
98b0ed280c
Add support for templating
2017-02-09 20:35:17 -05:00
Matthew Brown
585cf91ef0
If using assertions for type, count as a soft type check
2017-02-08 22:17:16 -05:00
Matthew Brown
cedb70b0b4
Reduce false positives for unused variables
2017-02-08 01:59:49 -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
0fbf8b5619
Remove more dead code
2017-02-02 00:45:23 -05:00
Matthew Brown
ec65f31aaa
Improve dead code analysis and fix errors found
2017-02-02 00:20:58 -05:00
Matthew Brown
d3abc0011d
Fix #80 - add dead code checks via command line
2017-01-31 23:24:33 -05:00
Matthew Brown
1ece3071f9
Add reference counting for methods and remove dead code
2017-01-29 23:44:05 -05:00
Matthew Brown
d978966db4
Fix #37 - check parent calls for staticness
2017-01-29 22:13:53 -05:00
Matthew Brown
a9203b63f8
Allow phan-like use of assert
2017-01-28 15:17:14 -05:00
Matthew Brown
199686c4db
Add back local vars when descending into method call
2017-01-28 03:55:19 -07:00
Matthew Brown
6bcc763414
Fix #3 by checking inside __constructor calls for initialisations
2017-01-26 23:23:12 -07:00
Matthew Brown
894b25487f
Fix #71 - prevent instantiation of abstract classes
2017-01-20 00:10:10 -05:00
Matt Brown
7116585e85
Be more robust when ignoring UndefinedClass errors
2017-01-19 11:45:25 -05:00