1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-13 09:47:29 +01:00
Commit Graph

1645 Commits

Author SHA1 Message Date
Matthew Brown
e8ad6a477e Fix missing docblocks 2018-01-07 17:25:23 -05:00
Matthew Brown
693c7a81fa Improve tracking of docblock types 2018-01-07 17:25:23 -05:00
Matthew Brown
39685e1be6 Collapse Issue inheritance and rename new issues 2018-01-07 17:25:23 -05:00
Matthew Brown
5d259dbd1e Fix single line detection bug (found by Psalm!) 2018-01-07 17:25:23 -05:00
Matthew Brown
aa3f60bad1 Fix style issues 2018-01-07 17:25:23 -05:00
Matthew Brown
77b6b397fc Handle comments in area where return type should be 2018-01-07 17:25:23 -05:00
Matthew Brown
29b09f9633 Continue after param replacement 2018-01-07 17:25:23 -05:00
Matthew Brown
d096d812cb Fix local namespacing of root-level classes 2018-01-07 17:25:23 -05:00
Matthew Brown
dc053e699b Fix resolution of same-namespaced classes 2018-01-07 17:25:23 -05:00
Matthew Brown
05d2c3dcb8 Fix differ to only use available commands 2018-01-07 17:25:23 -05:00
Matthew Brown
456a2ebaaa Add --dry-run option 2018-01-07 17:25:23 -05:00
Matthew Brown
0e67aae21b Allow updating of params 2018-01-07 17:25:23 -05:00
Matthew Brown
5bae869dc6 Break file manipulation out into Psalter 2018-01-07 17:25:23 -05:00
Matt Brown
796a3c5066 Fix style issues 2018-01-07 17:25:23 -05:00
Matt Brown
928b01a7c7 Find and fix code issues where functionality is available 2018-01-07 17:25:23 -05:00
Matt Brown
53d8c7ba52 Fix issue ideas 2018-01-07 17:25:23 -05:00
Matthew Brown
93fcaf38ef Fix type regex to allow for spaces after nullable 2018-01-06 22:11:33 -05:00
Matt Brown
a76fde5b98 Break out mismatching param/return type issues from InvalidDocblock 2018-01-05 12:11:12 -05:00
Matt Brown
45eaea1ed9 Flesh out callmap type 2018-01-05 11:50:27 -05:00
Matthew Brown
2ebf6a0ef5 Allow non-lethal method signature mismatches to be suppressed 2018-01-05 01:04:07 -05:00
Matthew Brown
40587292a5 Don’t warn about wider child param types 2018-01-05 00:55:48 -05:00
Matthew Brown
3de584cbc1 Add more specific argument for ReflectionObject 2018-01-05 00:54:48 -05:00
Matthew Brown
51edeead84 Fix invalid Reflection methods 2018-01-05 00:26:51 -05:00
Matthew Brown
6f5a214365 Allow param redefinition, but complain if it differs to parent class 2018-01-05 00:19:35 -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
6cff92d813 Don’t worry about invalid closure docblocks 2018-01-04 20:35:43 -05:00
Matthew Brown
a8ac9d4fdc Flesh out return types before comparing 2018-01-04 20:13:09 -05:00
Matthew Brown
eefa4f925f Improve Reflection class method return types 2018-01-04 20:13:09 -05:00
Matthew Brown
5995de0c9f Fix possible nullref 2018-01-04 19:31:12 -05:00
Matthew Brown
6e7bab58c4 Be better about inherited core method arg types 2018-01-04 18:58:03 -05:00
Matthew Brown
db7abc2b90 Add more debug output when using reflection/composer classmap 2018-01-04 14:13:54 -05:00
Matthew Brown
12aef22f05 Fix issue where byref differences would not be highlighted 2018-01-04 14:01:17 -05:00
Stéphane Bour
9b2cfdc669 fix: add preserve_keys on array_reverse function 2018-01-03 21:57:11 -05:00
Matt Brown
24c69a9a7c Allow all DateTime/DateTimeImmutable methods to return static 2018-01-03 10:53:45 -05:00
Matt Brown
ff5b2ce799 DateTimeImmutable::add/sub return static
Fixes #419
2018-01-03 10:35:22 -05:00
Matthew Brown
8a8253ac4c Fix indentation 2018-01-02 21:23:48 -05:00
Matt Brown
13931766ce Add PHP 7.2-compatibility for Psalm development 2018-01-02 19:55:07 -05:00
Matt Brown
e6aae2f2e2 Fix issue assigning string-typed properties without a string cast 2018-01-02 18:01:59 -05:00
Matt Brown
310f91ea81 Warn when methods with typehints don’t return for all codepaths 2018-01-02 16:57:40 -05:00
Matt Brown
fdff250c4a Preserve keys when merging arrays 2018-01-02 12:59:22 -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
81cfe09fae Improve reporting of classlike locations in docblocks 2018-01-01 20:04:03 -05:00
Matthew Brown
a1247aeb60 Remove unused var 2018-01-01 12:13:32 -05:00
Matthew Brown
7418d6685f Add PossibyInvalidFunctionCall, emitted when function call may not be valid 2018-01-01 12:00:02 -05:00
Matthew Brown
5afe3b10fa Scan compoer autoload files before any sweep of code 2018-01-01 11:47:03 -05:00
Matthew Brown
72a2a80619 Fix reference PackageVersions class 2018-01-01 10:01:04 -05:00
Matthew Brown
1608463b09 Strip leading slashes from generic object classes on creation 2017-12-31 21:17:39 -05:00
Matthew Brown
290cf396d4 Remove unnecessary suppression 2017-12-31 13:12:19 -05:00
Matthew Brown
921d0ad75c
Look for dead code in every Psalm build (#417) 2017-12-30 09:51:01 -05:00
Matthew Brown
2d24f9e99d Don’t complain about unused variables when they’re passed by reference 2017-12-30 09:30:02 -05:00
Matthew Brown
752e99ad2e Reduce PossiblyUnusedParam false positives 2017-12-30 08:47:00 -05:00
Matthew Brown
c0e923acb9 Update get_defined_functions to more recent signature 2017-12-29 22:57:02 -05:00
Matthew Brown
f81642c1eb Fix location of function param vars 2017-12-29 21:28:21 -05:00
Matthew Brown
37a3c0a81e Avoid checking classes named Null, because PHP will complain
Ref #415
2017-12-29 19:45:32 -05:00
Matthew Brown
086b314df8 Cut down on interface PossiblyUnusedMethod reports 2017-12-29 19:38:01 -05:00
Matthew Brown
875bb8c072 Improve dead code detection, reducing false positives for params 2017-12-29 17:27:16 -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
0b58ee425d Fix trait method evaluation order 2017-12-29 11:26:28 -05:00
Matthew Brown
c38cf9b672 Migrate type reconciliation code to its own class 2017-12-29 10:55:53 -05:00
Tim van Dijen
4d0e775346 openssl_encrypt and _decrypt can return false (#414) 2017-12-29 04:26:53 +01:00
Matthew Brown
81efe28f79 Fix #403 by complaining about return values in void functions 2017-12-28 21:49:03 +01:00
Matthew Brown
b96ab18d4b Improve throw issue message 2017-12-28 21:35:25 +01:00
Matthew Brown
b8c349166e Add InvalidCatch and InvalidThrow to prevent erroneous exceptions
Fix #411 and fix #412
2017-12-28 20:40:28 +01:00
Matthew Brown
dd0f046aee
Fix #410 - make sure anything inside a catch statement is treated as Throwable (#413) 2017-12-28 01:49:36 +01: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
57592aca41 Fix #409 - PropertyNotSetInConstructor can be suppressed at the property level 2017-12-27 12:27:59 +01:00
Matthew Brown
e2e1094ec6 Fix #407 - improve treatment of array_merge unpacked args 2017-12-23 02:09:58 +01:00
Matthew Brown
ec92b40ed3 If class checking fails for storage reasons, don’t quit analysis 2017-12-23 01:26:08 +01:00
Matthew Brown
58c7aa74b4 Prevent recursion when analysing constructor property assignments 2017-12-23 01:01:59 +01:00
Matthew Brown
2f5b05887b Promote CircularReference from exception to issue 2017-12-22 18:56:59 +01:00
Matthew Brown
c5ea5178e1 Remove unnecessary issue type 2017-12-22 16:09:56 +01:00
Matthew Brown
84260c5edc Prohibit array pass by ref 2017-12-22 15:21:23 +01:00
Matthew Brown
714d0678b1 Fix file analysis after realpath fix 2017-12-19 13:08:47 -05:00
Matthew Brown
68a4f30e96 Fix realpath return type
Fixes #405
2017-12-19 12:55:43 -05:00
Matthew Brown
abc9c051a9 Improve analysis of constant arrays 2017-12-19 09:48:01 -05:00
Matthew Brown
035f528581 Make sure that combining false with false simplifies to false 2017-12-19 00:06:05 -05:00
Matthew Brown
53d887d356 Make sure nested lists get some sort of assignments 2017-12-18 23:13:18 -05:00
Matthew Brown
45fc9fd5d9 Check LHS of property when RHS is variable 2017-12-18 22:35:03 -05:00
Matthew Brown
0e6006deda Fix #328 and allow single-entry object-like shorthand 2017-12-18 22:07:52 -05:00
Matthew Brown
ab3b8a0cf2 Make array{a:string} a subtype of array<string, string>
cc @weirdan
2017-12-18 20:08:45 -05:00
Matthew Brown
17edb2bbe6
Add better understanding of arrays with keyed integer offsets (#400)
* Add tests for keyed integer assignemnt

* First pass to get keyed integer assignment working

* Fix array assignment to object-like with different key type

* Improve treatment of objectlikes for callable and iterable comparisons

* Fix array assignment to strings and addition

* Convert expression to CNF

* Do better at merging property types

* Fix array_rand key type
2017-12-18 18:47:17 -05:00
Matt Brown
72da8f655a Don’t stop analysis after mixed method call 2017-12-18 11:05:53 -05:00
Matt Brown
597ed0ed12 Fix #401 - don’t panic when checking generator against other types 2017-12-18 10:58:46 -05:00
Matthew Brown
4b0cee6142 Only complain about redundant conditions if there’s one negated clause 2017-12-18 00:47:36 -05:00
Matthew Brown
4ff26cdd8f Fix RedundantCondition complaint when examining CNF queries 2017-12-18 00:39:00 -05:00
Matthew Brown
2ec09b26d2 Clone all types on assignment 2017-12-17 23:22:26 -05:00
Matthew Brown
3b7c84f484 Detect instances where loop invariants are invalidated
Fixes #389
2017-12-17 10:58:03 -05:00
Matthew Brown
c1ce543e81 Make sure to clear previously inferred types when rechecking trait statements
Fixes #399
2017-12-17 01:06:12 -05:00
Matthew Brown
ad67256be0 Remove more methods never called 2017-12-16 10:59:04 -05:00
Matthew Brown
2011b8fb8f Remove dead code 2017-12-16 10:51:04 -05:00
Matt Brown
8ca5fbefea Invalidate clauses when assigning root vars 2017-12-15 17:34:21 -05:00
Matt Brown
3b4a7a97bc Don’t treat callmap scalar types as any sort of filtering mechanism
Fixes #393 and fixes #394
2017-12-15 16:48:06 -05:00
Tyson Andre
d0fe5e3127 Don't convert standalone false/true to bool in combineTypes (#396)
Fixes #392
2017-12-15 16:36:42 -05:00
Tyson Andre
e2e86beee7 Fix a possibly undefined variable seen when issue is suppressed (#391) 2017-12-15 12:07:34 -05:00
Tyson Andre
136d48f77c Support @property-read and @property-write as new tags. (#317)
In combination with `@psalm-seal-properties`, this can be used to
have in-depth checking of magic properties.
2017-12-14 14:22:27 -05:00
Matt Brown
52c414f1d2 Fix return {expr} checks for void functions 2017-12-14 12:50:02 -05:00
Matt Brown
d440e4bbb1 Keep going after seeing a type coercion 2017-12-14 11:33:18 -05:00
Matt Brown
b319f54ff6 Fix issue with equality of scalar types not from docblock 2017-12-14 11:23:20 -05:00
Matthew Brown
dc65c14bc4 Fix properties fetches with self 2017-12-13 22:29:38 -05:00
Matthew Brown
34c133d5d0 Add for post conditions to assignment map analysis 2017-12-13 22:04:37 -05:00
Matthew Brown
298ee214e9 Only allow variables greater than a number to be non-null 2017-12-13 20:48:01 -05:00
Matthew Brown
e63441af1e Make sure $a > 0 removes null from $a
Fixes #186
2017-12-13 20:06:19 -05:00
Matthew Brown
e55fe2f158 Don’t complain about possibly undefined vars when calling unset
Fixes #139
2017-12-13 19:46:58 -05:00
Matt Brown
dd11a792fd Add trailing commas 2017-12-13 15:57:10 -05:00
Matt Brown
4b8c242f5d Create fake get_class/gettype statements where necessary 2017-12-13 15:56:05 -05:00
Matthew Brown
5f22203bd1 Fix #385, fix return type of sodium function 2017-12-12 02:10:17 -05:00
Matt Brown
51a2f12bbf Only update inner loop vars that have changed given preconditions 2017-12-11 12:03:50 -05:00
Matt Brown
301e393e37 Remove resource and callable from falsy checks 2017-12-11 11:32:14 -05:00
Matthew Brown
146cb12277 Refine function arguments if they match non-docblock equivalents 2017-12-10 21:14:30 -05:00
Matthew Brown
46feaaf1c6 Don’t run try/catch analysis twice 2017-12-10 20:21:21 -05:00
Matthew Brown
a2d5bc59ad Get rid of undefined variable issues 2017-12-10 18:34:22 -05:00
Matthew Brown
db72ef29d8 Fix type reassignment in catches 2017-12-10 18:09:38 -05:00
Matthew Brown
f8207fe490 Improve handling of try/catch blocks, suppressing RedundantCondition where necessary
Fixes #355
2017-12-10 17:36:33 -05:00
Matthew Brown
a413e0496a Fix #361 by terminating analysis if loop statements have issues 2017-12-10 16:22:45 -05:00
Matthew Brown
31ce716647 Widen empty array checks 2017-12-10 16:17:27 -05:00
Matthew Brown
c95af0bb57 Fix issue with assigning empty type 2017-12-10 14:56:51 -05:00
Matthew Brown
7fb1b476c7 Sort results from multi-threaded execution 2017-12-10 11:22:36 -05:00
Matthew Brown
a345ec49a1 Fix is_bool checks on true vars 2017-12-09 16:05:31 -05:00
Matthew Brown
42dcd136ca Improve treatment of true and fix #369 2017-12-09 15:51:38 -05:00
Matthew Brown
13f290038a Improve RedundantCondition checks and add true type
Fixes #383
2017-12-09 14:53:39 -05:00
Matt Brown
bfccdb417f Pass through ignore_nullable_issues flag when verifying return statements 2017-12-07 16:08:09 -05:00
Matt Brown
eca7351472 Add return-level issues as well as function-level ones
Fixes #379
2017-12-07 15:50:25 -05:00
Matthew Brown
2a7b48ce5f Add support for infinite loops
Fixes #381
2017-12-06 23:46:41 -05:00
Matt Brown
6c84fecce9 Always update the parent context from the loop context
Fixes #377
2017-12-06 19:20:24 -05:00
Matthew Brown
e08b11b144 Improve TemplateChecker 2017-12-06 01:05:51 -05:00
Matthew Brown
0eedad4f6a Add UndefinedGlobalVariable issue and asssociated Possibly... one 2017-12-06 00:56:00 -05:00
Matthew Brown
a87a1f0dc9 Make sure undeclared array offset vars have type mixed
Fixes #360
2017-12-06 00:35:41 -05:00
Matthew Brown
df90d72ad1 Emit return type errors at the function itself, not its parent
Fixes #363
2017-12-06 00:11:05 -05:00
Matthew Brown
59b50bdcdd Add proper types for magic constants
Fixes #362
2017-12-06 00:05:01 -05:00
Matthew Brown
52fc81e4ab Remove need for a __toString return type
Fixes #364
2017-12-05 23:47:50 -05:00
Matt Brown
d10898b853 Remove code that only caused pain 2017-12-05 16:54:24 -05:00
Matt Brown
e2b1b24dbf Fix empty checks, make them more like isset checks
Fixes #372
2017-12-05 12:14:10 -05:00
Matt Brown
98085b2267 Fix #371 - improve handling of do statements broken in loop refactor 2017-12-05 11:05:10 -05:00
Matthew Brown
a8a1489a8f Fix closure naming convention so it doesn’t confuse method id checks 2017-12-05 01:47:49 -05:00
Matt Brown
83c65d4b2d Add DOMNodeList::item to callmap 2017-12-04 11:59:16 -05:00
Matt Brown
1f57881310 Break out PossiblyNullArrayOffset and NullArrayOffset from InvalidArrayOffset 2017-12-04 11:20:31 -05:00
Gerrit Addiks
de09bd846c Fixes #367; Added missing declaration for var_comment variable in ForEachChecker (#368) 2017-12-04 08:50:59 -05:00
Matthew Brown
8abd77c70f Revert to from_docbblock status of outer loop 2017-12-04 00:13:46 -05:00
Matthew Brown
0134d7bf5c Keep track of referenced loop vvars 2017-12-03 23:50:51 -05:00
Matthew Brown
69ca6bd0a0 Get LHS clauses of && expression after evaluation 2017-12-03 18:33:54 -05:00
Matthew Brown
02dcb2be95 Get or LHS clauses after evaluating statements 2017-12-03 18:22:25 -05:00
Matthew Brown
f5ca4b1c52 Also remove var from clauses when updating 2017-12-03 17:36:50 -05:00
Matthew Brown
6843dfb7fc Remove from_docblock status if we make a successful method call 2017-12-03 17:21:20 -05:00
Matthew Brown
7d003c5bc1 Fix erroneous treatment of or clauses in if statements 2017-12-03 16:25:52 -05:00
Matthew Brown
181d1bb129 Don’t complain about redundant conditions for possibly undefined vars 2017-12-03 15:00:59 -05:00
Matthew Brown
cb4691fb44 Always set templated types as being from docblocks 2017-12-03 13:22:06 -05:00
Matthew Brown
cff7f35d00 Change __toString type conversions to more precise getId checks 2017-12-03 12:44:08 -05:00
Matthew Brown
cb9079ca88 Improve generic param replacement 2017-12-03 11:23:40 -05:00