Matt Brown
37659445f0
Improve accuracy of optional example
2020-12-10 01:12:58 -05:00
Matt Brown
e6dad6e65f
Be smarter when choosing inherited param types
...
Ref #4803
2020-12-10 00:15:37 -05:00
Matt Brown
beefa2aea3
Fix #4817 - allow optional inference
2020-12-09 19:32:56 -05:00
Matt Brown
5e845260c1
Remove unnecessary null check
2020-12-09 18:30:36 -05:00
Matt Brown
9423324d65
Fix #4791 - only generate special has-array-key assertions for unknown key types
2020-12-08 19:45:47 -05:00
Matt Brown
524084a64c
Tighten up rules arouund when mutation-free methods get memoised
2020-12-08 16:39:06 -05:00
Matt Brown
be3f30ff1d
Fix #4812 - reconcile array assertion on template as type correctly
2020-12-08 14:17:37 -05:00
Matt Brown
1e0bcc1876
Fix #4803 - always derive method params the same way
2020-12-08 11:27:51 -05:00
Matt Brown
387ab14bda
Use better stubs for Serializable and SoapClient
2020-12-08 11:27:51 -05:00
2e3s
e46c68b1e5
Overwrite memoized return type after sum-type candidate is calculated ( #4805 )
...
* Overwrite memoized return type after sum-type candidate is calculated
* Fix mismatched types
* Fix code style
2020-12-08 09:35:11 -05:00
Matt Brown
91ee4aeca3
Fix #4797 - sanitise assertion output of template result
2020-12-07 19:11:56 -05:00
Matt Brown
8a76a43d8c
Fix #4798 - improve conversion from type back to PhpParser node
2020-12-07 14:39:58 -05:00
Matt Brown
f5dd6e76f8
Fix #4802 - don’t clone context when analysing coalesce
2020-12-07 14:30:57 -05:00
Matthew Brown
d406d5b112
Fix typo
2020-12-07 01:32:18 -05:00
Matt Brown
e702e472fc
Support simple list assignment in foreach
...
Ref #4741
2020-12-06 19:14:52 -05:00
Matt Brown
dff2943096
Fix #4794 - invvalidate dependent types when their variables change
2020-12-06 18:16:22 -05:00
Jack Bentley
7fe8e5a1cf
Fix functions being resolved to other functions ( #4793 )
...
Fixes #4750
Reusing the $function_id variable causes an incorrect global function to be added at line 654
2020-12-06 17:28:19 -05:00
Bruce Weirdan
cd576f8e02
Adjust check for file modification time ( #4789 )
...
This solves the issue where Psalm didn't notice the files created in the
same second as the last run was started.
2020-12-06 12:40:55 -05:00
orklah
1901ea56de
Don't add link if the issue doesn't have a shortcode ( #4786 )
2020-12-06 11:29:05 -05:00
Matt Brown
9c0e9a3d7e
Taint all when conditional return is used
...
Ref #4792
2020-12-06 11:24:48 -05:00
Matt Brown
4d1aae43f9
Fix #4778 - remove already-initialized properties when checking initialisation
2020-12-06 11:07:59 -05:00
Matt Brown
cec8d7138f
Fix #4782 - don’t replace closure types with upper bounds when replacing class param types
2020-12-05 11:58:55 -05:00
Matt Brown
1bb8b73f99
Return earlier
2020-12-05 10:25:34 -05:00
Vincent Langlet
eb9d6f66ab
Fix support of extraFiles ( #4785 )
2020-12-05 09:54:05 -05:00
Matt Brown
3f155792a7
Allow nested specialisation
2020-12-04 15:44:29 -05:00
Matt Brown
fd67d41120
Fix #4769 – don’t use unique ids for new generated nodes
2020-12-04 15:44:29 -05:00
Matt Brown
ca915e5028
Fix redundancies
2020-12-04 15:10:50 -05:00
Matt Brown
4a0e2f543e
Fix implicit void closure not getting recognised
2020-12-04 13:16:05 -05:00
Matt Brown
fb88145780
Fix #4767 - rescan directly-affected class-interface relationships
2020-12-04 01:19:51 -05:00
orklah
62d5ea83a1
Allow int casts if the type comes from calculation ( #4768 )
2020-12-03 23:15:07 -05:00
Matt Brown
0411049559
Mixed array access should mark vars as used just in case
2020-12-03 13:09:08 -05:00
Matt Brown
2feba22a00
Make more try vars potentially undefined
...
Fixes #4764
2020-12-03 11:44:10 -05:00
Matt Brown
51a92aa223
Fix interface property regression
2020-12-03 11:13:10 -05:00
Matt Brown
833f132cb3
Fix #4760 - prevent unpacked vars from breaking call when checking unitialised properties
2020-12-03 10:12:54 -05:00
Matt Brown
bef9ab37e6
Fix #4759 – don’t generate assertion when assigning to same-named variable
2020-12-03 09:42:26 -05:00
Denis Smetannikov
11576951f6
Update ExistingAtomicStaticCallAnalyzer.php ( #4761 )
...
The invalid syntax for PHP 7.1+
2020-12-03 09:24:34 -05:00
Matt Brown
1a5d5e4476
Simplify FunctionLikeDocblockScanner
2020-12-03 00:19:01 -05:00
Matt Brown
e2a2e8ee87
Break apart AtomicPropertyFetchAnalyzer::analyze
2020-12-02 23:37:29 -05:00
Matt Brown
a4ac52aea4
Simplify AssertionReconciler
2020-12-02 22:49:01 -05:00
Matt Brown
2f00500c91
Improve message
2020-12-02 22:08:14 -05:00
Matt Brown
6f916553a8
Ref #4753 - allow int literals to inform key type
2020-12-02 17:13:45 -05:00
Matt Brown
db8a3ab846
Fix #4751 - allow MethodSignatureMismatch to be overridable when info comes from docblock
2020-12-02 15:13:28 -05:00
Matt Brown
e2bb02e93c
Don’t suggest a potential value that’s undefined
...
Fixes #4754
2020-12-02 14:49:30 -05:00
Matt Brown
a2b20f094d
Fix #4752 - add property base assertions too
2020-12-02 12:43:21 -05:00
Matt Brown
496ce463ca
Break out method
2020-12-02 12:28:21 -05:00
Matt Brown
f0876b86f4
Avoid false-positives while analysing memoised coalesce
2020-12-02 02:25:15 -05:00
Matt Brown
394eceb01c
Memoize coalesce expression in more scenarios
2020-12-02 02:15:17 -05:00
Matt Brown
928fdda00f
Don’t do new isset conversion on try-set vars
2020-12-02 01:47:49 -05:00
Matt Brown
1feca322d5
Fix loading imported functions
2020-12-02 00:52:35 -05:00
Matt Brown
7bd4d969a4
Ensure that strict empty handling always happens
2020-12-01 22:50:21 -05:00
Matt Brown
5a200ca442
Fix assertions on unions
2020-12-01 21:12:03 -05:00
Matt Brown
61e374f33b
Fix null array access complaints
2020-12-01 20:10:48 -05:00
Matt Brown
1a629ccc82
Fix a few issues
2020-12-01 18:26:15 -05:00
Matt Brown
e7f9ce6da0
Break out RedundantCast issues
2020-12-01 17:25:45 -05:00
Matt Brown
2963efc9a5
Use fallback assignment type when the property doesn’t exist on the class
2020-12-01 16:59:44 -05:00
Matt Brown
f5494bc407
Fix typos caused by Macbook Pro’s bad keyboard
2020-12-01 14:14:09 -05:00
orklah
f0c0ac0616
handle return flag for a try/catch/finally ( #4746 )
...
* handle return flag for a try/catch/finally
* add tests for psalter
2020-12-01 12:55:27 -05:00
Matt Brown
75a6d88773
Fix #4705 - clear documenting method ids when scanning stubs
2020-12-01 11:23:38 -05:00
Matt Brown
c6d0561612
Fix nullref
2020-12-01 00:48:09 -05:00
Matt Brown
7295e28e20
Fix #4743 - simplify assertions generated from array_key_exists check
2020-11-30 22:10:17 -05:00
Matt Brown
6f86201f34
Break up AssignmentAnalyzer::analyze
2020-11-30 14:57:35 -05:00
Matt Brown
3b1fa58413
Break apart method as much as possible
2020-11-30 14:07:18 -05:00
Matt Brown
2427606563
Fix lint
2020-11-30 13:25:27 -05:00
Matt Brown
2204728824
Break apart NewAnalyzer::analyze
...
Ref #4714
2020-11-30 13:24:24 -05:00
Matt Brown
4baf143ff7
Break apart ArrayAssignmentAnalyzer::updateArrayType
...
Ref #4714
2020-11-30 13:08:42 -05:00
Matt Brown
5430effb2b
Break apart InstancePropertyAssignmentAnalyzer
...
Ref #4714
2020-11-30 12:09:09 -05:00
orklah
d59ad152a0
Remove fixable flag for Complexity issues ( #4742 )
2020-11-30 08:43:18 -05:00
Matt Brown
31e2522adb
Actually not a bug
2020-11-30 01:32:38 -05:00
Matt Brown
817db55140
Fix typo
2020-11-30 01:29:40 -05:00
Matt Brown
cf6dedc11d
Break up AssertionFinder methods
...
Ref #4714
2020-11-30 01:20:28 -05:00
Matt Brown
29fbdaf263
Simplify getting type from tree
...
Ref #4714
2020-11-30 00:40:25 -05:00
orklah
a760a2418a
support shift and bitwise operations in constants ( #4740 )
2020-11-29 21:43:49 -05:00
orklah
b60c42adca
improve Atomic Types documentation ( #4735 )
...
* improve Atomic Types documentation
* add doc
* add doc
2020-11-29 21:41:36 -05:00
orklah
5222cadfb3
Check from_docblock property to emit the right issue ( #4736 )
2020-11-29 21:40:13 -05:00
Matt Brown
4d81682fdd
Fix #4731 - expand out class-bound generic types when evaluating instance method
2020-11-29 21:36:50 -05:00
Matt Brown
eeb9cb0b07
Add some documentation for template_types
2020-11-29 19:22:54 -05:00
Matt Brown
86b6d6a506
Fix #4733 - don’t replace template types when they’re defined on the same class
2020-11-29 19:12:22 -05:00
Matt Brown
601c1d8cd0
Expand out constants in param types earlier
2020-11-29 19:07:35 -05:00
Matt Brown
46b202731c
Fix check
2020-11-29 18:28:32 -05:00
Matt Brown
58b306b6e3
Ensure class template types are mapped to static methods where necessary
...
Ref #4733
2020-11-29 17:40:52 -05:00
Matt Brown
8da676f5bf
Improve param name
2020-11-29 17:26:42 -05:00
Matt Brown
ea314cc1c0
Simplify calling of replacer methods
2020-11-29 16:27:00 -05:00
Matt Brown
4d22723525
Break out replacement of templated types with their inferred result
2020-11-29 16:16:16 -05:00
Matt Brown
15a5bd5e29
Simplify storage and retrieval of extended template params
2020-11-29 15:05:32 -05:00
Matthew Brown
60ac109c01
Add RedundantPropertyInitializationCheck ( #4732 )
...
* Add RedundantPropertyInitializationCheck
* add documentation for RedundantPropertyInitializationCheck (#4734 )
Co-authored-by: orklah <orklah@users.noreply.github.com>
2020-11-29 11:57:20 -05:00
Matt Brown
0efd4ebd7d
Detect some erroneous issets
2020-11-29 09:26:39 -05:00
Matthew Brown
fd53192ad2
Fix redundant mappings
2020-11-28 21:05:31 -05:00
Matt Brown
8adc0918ae
Fix the bug
2020-11-28 09:55:40 -05:00
Matt Brown
de1fa03f77
Fix template type selection
2020-11-28 09:53:11 -05:00
orklah
e2030b4a1e
fix #3282 ( #4724 )
2020-11-28 09:03:03 -05:00
Matt Brown
4af7e818b2
Simplify ArrayFetchAnalyzer::getArrayAccessTypeGivenOffset
...
Ref #4714
2020-11-27 23:36:47 -05:00
Bruce Weirdan
fc29d26879
Added test to enforce that all supported annotations are documented ( #4723 )
...
* Added test to enforce that all supported annotations are documented
Well, at least mentioned.
Refs vimeo/psalm#3816
* Type things
* Make things pretty
* Only check @psalm- annotations, group
* Add documentation for `@psalm-require-extends` and `@psalm-require-implements`
* Dropped logicalOr that has become redundant
* Add explicit tag
* Document @psalm-template
* Add @psalm-template-covariant
* Document `@psalm-method`
* Add list of undocumented docblock annotations
Co-authored-by: Matthew Brown <github@muglug.com>
2020-11-27 21:48:16 -05:00
Matt Brown
53c5e52ef2
Fix #3017 - use correct keys when converting list to array
2020-11-27 20:05:16 -05:00
Matt Brown
b717356f95
Simplify more things
2020-11-27 17:48:39 -05:00
Matt Brown
2626f008be
Only show possibly unused params on methods that don’t extend others
2020-11-27 17:17:03 -05:00
orklah
32bf18dff0
fix array_column with possibly_undefined keys ( #4719 )
2020-11-27 17:05:54 -05:00
orklah
f19cac6ecf
add annotation @psalm-param-out ( #4717 )
...
* add annotation @psalm-param-out
* add tag in documentation
2020-11-27 17:05:26 -05:00
Matt Brown
ffabce19c5
Add complex issue error
2020-11-27 17:02:37 -05:00
Matt Brown
73cd07a01f
Simplify FunctionCallAnalyzer
...
Ref #4714
2020-11-27 16:34:27 -05:00
Matt Brown
6db8132b4c
Simplify call analysers a bit
...
Ref #4714
2020-11-27 16:31:10 -05:00
Matt Brown
5dd4912a99
Simplify ArrayAnalyzer
...
Ref #4714
2020-11-27 14:19:55 -05:00
Matt Brown
1ce45516db
Don’t alter behaviour
2020-11-27 11:47:12 -05:00
Matt Brown
5f065d3d74
Turn template bound tuples into object
...
Ref #4714
2020-11-27 11:43:30 -05:00
orklah
b60182c514
better fix for reconciling iterable and object ( #4712 )
2020-11-27 09:10:55 -05:00
Matt Brown
bf696bf82e
Add complexity function name echoing
2020-11-27 05:28:55 -05:00
orklah
74c07bbc08
Allow <false|T as object> to be falsy ( #4711 )
2020-11-26 16:47:44 -05:00
Matt Brown
6de97e3779
Skip missing function params in taint analysis
2020-11-26 11:58:14 -05:00
Matt Brown
b224970281
Fix generic ArrayAccess creation cc @orklah
2020-11-26 10:00:03 -05:00
orklah
f7cfdaabd7
Allow reconciling between object and iterable ( #4706 )
...
* Allow reconciling between object and iterable
* add tests
2020-11-26 09:25:49 -05:00
orklah
4bbb72329e
Fix PHPMAXINT offset ( #4707 )
2020-11-26 09:24:32 -05:00
Matt Brown
01ceaf7006
Fix style issues
2020-11-25 21:36:37 -05:00
Matt Brown
0c477da310
Fix test failures
2020-11-25 20:05:09 -05:00
orklah
58736924dd
fix wrong cast to int when string offset is a number > MAX INT ( #4702 )
2020-11-25 15:48:53 -05:00
Matt Brown
f3e0201a99
Treat $a ?? $b identically to isset($a) ? $a : $b
2020-11-25 14:34:05 -05:00
Matt Brown
d40d63f180
Fix #4699 - treat isset like !== null when variable is defined
2020-11-25 14:04:55 -05:00
Matt Brown
6aa052475a
Pass correct flags when referencing from finally
2020-11-25 14:04:55 -05:00
Markus Staab
d393b4a69d
Added PDOStatement->fetchObject() stub ( #4693 )
...
* Added PDOStatement->fetchObject() stub
* fix stub param
* fix Xdebug spelling
* Use extension_loaded check instead
Co-authored-by: Matthew Brown <github@muglug.com>
2020-11-25 12:08:04 -05:00
orklah
b6a3282589
Detect redundant cast ( #4695 )
...
* detect redundant cast
* fix redundant cast issues
* fix redundant cast in tests
2020-11-25 12:04:48 -05:00
Matt Brown
39f26d9047
Remove suppressed issuue
2020-11-25 09:22:41 -05:00
Markus Staab
3dc311fd45
fixed exception message ( #4692 )
2020-11-24 16:04:34 -05:00
Matt Brown
f8ddc7e58a
Add slash
2020-11-24 15:07:15 -05:00
Matt Brown
e9c00b8395
Switch order to satisfy new refinement
2020-11-24 14:57:34 -05:00
Matt Brown
41af653bd4
Add support for some dependent types
2020-11-24 14:50:35 -05:00
Matt Brown
8ede667cad
Remove debugging error
2020-11-24 08:06:26 -05:00
orklah
2bf25d5f50
Emit an issue when returning a Stringable object when a string is expected ( #4657 )
...
* Emit an issue when returning a Stringable object when a string is expected
* Fix issue in Psalm codebase
2020-11-24 00:18:24 -05:00
Benjamin Morel
5748a4e25a
Fix PdoStatementReturnTypeProvider ( #4683 )
...
* Fix PdoStatementReturnTypeProvider
Methods returning scalars may return null as well.
* Fix tests
2020-11-23 18:41:12 -05:00
Olivier Doucet
70a130f11e
add CodeClimate output format ( #4387 )
...
* add CodeClimate output format
* cosmetic fixes
* add CodeClimate output format
* cosmetic fixes
* phpcs fixes
2020-11-23 15:34:51 -05:00
orklah
b6cb9785ac
Prevent illegal array keys ( #4660 )
...
* Emit an issue when an array-key is not legal
* tests
2020-11-23 15:20:39 -05:00
Markus Staab
e5493f59cd
Mark finfo_open and finfo_file as impure ( #4678 )
...
* Mark finfo_open and finfo_file as impure
* fix CS
2020-11-23 15:19:50 -05:00
erikjwaxx
25d8c6d21e
Narrow inference of $a <=> $b from "int" to "-1|0|1" ( #4680 )
...
* A <=> operator has a literal type of -1|0|1 and not simply int
* Test to verify inferred type of $a <=> $b is -1|0|1
2020-11-23 13:10:51 -05:00
Markus Staab
d151f1c36e
mark file_get_contents as impurce ( #4679 )
2020-11-23 11:33:30 -05:00
Markus Staab
387bfbd9e0
is_file
and is_dir
should be impure (#4676 )
...
* `is_file` and `is_dir` should be impure
* newline
Co-authored-by: Matthew Brown <github@muglug.com>
2020-11-23 09:53:39 -05:00
Matt Brown
8325317e16
Fix #4674 - is_readable should be impure
2020-11-23 08:54:11 -05:00
Matt Brown
10c0bcc4e2
Fix #4674 - is_readable should be impure
2020-11-23 08:45:27 -05:00
Matt Brown
17ceba5c06
Fix bug
2020-11-22 23:32:14 -05:00
Matt Brown
f164a45843
Fix bugs
2020-11-22 19:45:54 -05:00
Matt Brown
9a03a9a5d0
Move param taint sink addition after arguuments have been analysed
2020-11-22 19:39:40 -05:00
Matt Brown
853432a6aa
Fix tests
2020-11-22 16:24:33 -05:00
Matt Brown
6399707dd6
Prevent flows through TaintedInput-suppressed files
2020-11-22 16:04:57 -05:00
Matt Brown
b782dd4225
Make sure conditional escaping works for static methods too
2020-11-22 13:39:32 -05:00
Matt Brown
af008953a8
Fix #4661 - support conditional escaping for functions
2020-11-22 13:24:33 -05:00
Matt Brown
bd612c476c
Break apart large function
2020-11-22 13:24:33 -05:00
Matt Brown
2c77424e16
Fix #4656 - separate UnusedConstructor from UnusedMethod
2020-11-22 11:48:17 -05:00
orklah
97f0a78ac1
Only crash Psalm when the faulty file is in project ( #4658 )
2020-11-22 09:07:00 -05:00
orklah
a3217265ce
null operations should return mixed results ( #4655 )
2020-11-22 09:06:03 -05:00
Matt Brown
0d0ed8be15
Fix slash
2020-11-22 09:04:44 -05:00
Matt Brown
60b3086b9a
Fix #4609 - add more attribute rules
2020-11-22 01:15:52 -05:00
Matt Brown
66d574b82e
Fix #4475 - verify that used attributes actual use the Attribute attribute
2020-11-22 00:52:56 -05:00
Matt Brown
11825a2cc2
Fix #4611 - flag invalid attribute arguments correctly
2020-11-22 00:44:44 -05:00
Matt Brown
1fc1cae1d5
Fix #4615 - ensure promoted properties are not treated as uninitialized
2020-11-22 00:32:02 -05:00
Matt Brown
6b1112e6ea
Fix #4653 - prevent crash with recursive type in root namespace
2020-11-22 00:26:14 -05:00
Matt Brown
baca927aab
Fix #4643 - use PHP8 union types when possible
2020-11-21 22:50:56 -05:00
Matt Brown
efafe2edd5
Add instanceof check
2020-11-21 20:15:13 -05:00
Matt Brown
19bb4aba56
Remove unnecessary coercion
2020-11-21 18:26:55 -05:00
Matt Brown
df2ec48018
Don’t erase already-known literal ints
...
Fixes #4644
2020-11-21 18:26:13 -05:00
Matt Brown
f0ae0e5cb4
Break aparat type combiner
2020-11-21 18:11:29 -05:00
orklah
f21f6f40e5
return string in phpdoc for a literal class-string ( #4652 )
2020-11-21 17:42:53 -05:00
orklah
98370b65d7
avoid formating useless type ( #4651 )
2020-11-21 17:42:26 -05:00
Lukas Reschke
ffb0c4ae17
Implement variadic taint propagation ( #4649 )
...
* Implement variadic taint propagation
* Lint code
2020-11-21 17:41:40 -05:00
orklah
ae0486529e
Unused psalm-suppress ( #4646 )
2020-11-21 17:39:40 -05:00
orklah
509a937d1b
use int|string in phpdoc format for array-key ( #4645 )
2020-11-21 17:38:40 -05:00
Lukas Reschke
3943b55f8a
Add psalm-flow for string functions from sscanf to wordwrap ( #4591 )
...
* Add string functions from sscanf to wordwrap
This should conclude all string functions from https://www.php.net/manual/en/book.strings.php
Continuation of https://github.com/vimeo/psalm/pull/4576
Ref https://github.com/vimeo/psalm/issues/3636
* Add StrTrReturnTypeProvider
* Fix psalm error
* phpcs
* Line length
* Ignore false return on vsprintf
Co-authored-by: Matthew Brown <github@muglug.com>
2020-11-21 17:35:07 -05:00
Matt Brown
23ab0f1ddb
Allow Psalm to run in taint analysis mode without a config
2020-11-20 19:02:44 -05:00
Matt Brown
67478949c2
Allow mixed in PHP 8 for manipulation
2020-11-20 18:53:48 -05:00
orklah
6b72599ec5
allow static return type in PHP8 ( #4641 )
2020-11-20 18:46:35 -05:00
Matt Brown
1cead18760
Fix #4637 - prevent regression when negating function call with === false
2020-11-20 09:56:53 -05:00
Dalibor Karlović
da632ca73a
feature: allow plugin manager to work without config file ( #4639 )
2020-11-20 09:54:14 -05:00
Matt Brown
ce8938263e
Fix #4636 - prevent crashes on aliased classes
2020-11-20 09:29:24 -05:00
Matt Brown
c562e1dd52
Don’t taint foreach keys with array-fetch
...
We could use array-keyfetch or similar, but for now gives false-positives
2020-11-19 19:08:59 -05:00
orklah
e04f219948
return static instead of self when static context detected ( #4632 )
...
* return this instead of self when static context detected
* replace $this by static
2020-11-19 19:02:25 -05:00
Matt Brown
78d644d1a1
Change TaintedText to TaintedCallable
2020-11-19 19:01:19 -05:00
Matt Brown
4c315ec45c
Closure calls aren’t sinks
2020-11-19 18:44:36 -05:00
Lukas Reschke
78f4a0691c
Add dedicated types for 'file', 'header' and 'cookie' ( #4630 )
...
* [WIP] Add dedicated sinks for 'file', 'header' and 'cookie'
* Add documentation
* Add mapping for taint flows
* Add tests
* Fix test
2020-11-19 17:47:29 -05:00
Matt Brown
70c9fd97c7
Return empty instead of throwing
2020-11-19 16:25:53 -05:00
Matt Brown
ead63894a1
Fix formatting
2020-11-19 16:09:30 -05:00
Matt Brown
b5d4b59c33
Be more refined
2020-11-19 15:57:05 -05:00
Matt Brown
de49892525
Fix #4626 - array_key_exists should infer type for first arg where possible
2020-11-19 15:40:27 -05:00
Matt Brown
ff3fff56d4
Simplify assertion negations, centralising as much as possible
...
Now the flag passed to scrapeAssertions just determines the errors emitted
2020-11-19 14:32:49 -05:00
Matt Brown
7803cc228b
Revert "Fix #4624 - allow in_array to work with list arrays"
...
This reverts commit 08ae85a735
.
2020-11-19 12:49:26 -05:00
Matt Brown
08ae85a735
Fix #4624 - allow in_array to work with list arrays
2020-11-19 09:26:41 -05:00
Matt Brown
7c02fa76d1
Fix #4620 - reconciled literal strings cannot carry taints
2020-11-19 09:06:25 -05:00
Matt Brown
95de6cf177
Allow immutable classes to be specialised through calls
2020-11-19 01:38:20 -05:00
Matt Brown
d60abaf858
Unfix fixes
2020-11-18 19:19:07 -05:00
Matt Brown
8dd229f6c0
Only ignore literal flows when tainting
2020-11-18 18:43:41 -05:00
Matt Brown
be275ae972
Fix #4605 - taint parent-declared property
2020-11-18 13:34:47 -05:00
Matt Brown
39c508f9d1
Fix #4603 - fix arithmetic to prevent end column 0
2020-11-18 13:19:54 -05:00
Matt Brown
236292ff05
Fix #4600 - set attributes in a bunch of places
2020-11-18 12:44:59 -05:00
Lukas Reschke
ddbfbb28e6
Split LDAP into custom category ( #4604 )
...
- Adds ldap_escape as sanitizer
- Defines the right parameters to ldap_search as sink
- Wrote documentation
- Added tests
2020-11-18 11:39:36 -05:00
Matt Brown
4bb84f7f0a
Add more attributes to fake PhpParser generated expressions
...
Ref #4600
2020-11-18 10:16:41 -05:00
Matt Brown
3f7f959726
Fix #4599 - propagate taints to parent callers where necessary
2020-11-18 09:59:54 -05:00
Lukas Reschke
5ba4681c17
Add SSRF sinks ( #4592 )
2020-11-18 00:52:48 -05:00
Matt Brown
f3cde30b77
Only create vendor dir in config if it exists
2020-11-18 00:06:58 -05:00
Matt Brown
6e39c24a17
Don’t exit with 1 when running security analysis in GitHub Actions and generating a file
2020-11-17 22:49:25 -05:00
Matt Brown
28dee4146a
Fix tests
2020-11-17 17:53:46 -05:00
Matt Brown
f6591e6d0f
Use resolution that works in multithreaded mode
2020-11-17 17:24:46 -05:00
Matt Brown
2aa98bc5d0
Simplify tainted output a bit, removing duplicate paths
2020-11-17 17:17:18 -05:00
Matt Brown
adeaa33a64
Don’t propagate taints to child constructor args
2020-11-17 16:49:29 -05:00
Matt Brown
854a5b2ec5
Allow TaintedInput to suppress all emitted issues
2020-11-17 16:08:05 -05:00
Matt Brown
4e5111f1a8
Fix #4472 - if something flows into a byref var it’s used
2020-11-17 15:30:53 -05:00
Lukas Reschke
494ec40777
Add SARIF as report output ( #4582 )
...
https://docs.oasis-open.org/sarif/sarif/v2.0/sarif-v2.0.html
2020-11-17 13:23:20 -05:00
Matt Brown
43af3b1a57
Break out TaintedInput issues into a lot of separate ones
2020-11-17 12:44:31 -05:00
Matt Brown
42802e11d1
Allow PHP major version to determine substr return type
2020-11-16 16:31:33 -05:00
Dusk
0fe3e1f83b
Allow named arguments to variadic functions ( #4575 )
...
Closes #4563
2020-11-16 15:49:27 -05:00
Thomas Mauro Vargiu
4e8fb9c37f
Fix #4549 Better intersection between parent types ( #4560 )
2020-11-15 20:29:49 -05:00
orklah
6f8b463860
Detect trying to access to a list with a negative offset ( #4552 )
2020-11-15 20:26:50 -05:00
Matt Brown
5b004a1d11
Fix #4558 - Don’t convert value-of to key-of template
2020-11-15 18:33:07 -05:00
Matt Brown
26b4cd1fb9
Fix #4529 - allow unsetting with complex array key
2020-11-14 08:57:25 -05:00
Matt Brown
f65868c023
Fix style
2020-11-13 16:43:36 -05:00
Matt Brown
d97c8b750a
Add closure-use termination for byref flows
2020-11-13 13:37:27 -05:00
Matt Brown
e7e5904d2d
Remove unused uses in Psalm’s codebase
2020-11-13 13:16:39 -05:00
Matt Brown
2e47ca51d5
Fix #4547 - mark unused uses
2020-11-13 13:13:29 -05:00
Matt Brown
57125c7106
Uses by ref should be assigned that way
2020-11-13 12:50:01 -05:00
Matt Brown
4c1cf37d52
Improve error message for UnusedVariable
2020-11-13 12:36:17 -05:00
Matt Brown
086237aab7
Fix #4544 - improve handling of get_class in match
2020-11-13 11:55:42 -05:00
Matt Brown
13b83e6132
Fix #4545 - allow intersections in more places
2020-11-13 09:43:30 -05:00
Matt Brown
5a62dc5c40
Fix #4540 - use correct method when simulating property setting
2020-11-12 23:56:29 -05:00
Matt Brown
556fb12966
Move mutation checks to more appropriate place
2020-11-12 23:54:50 -05:00
Matt Brown
ec9762ce61
Prevent the same interface, repopulated, from confusing matters
2020-11-12 15:52:13 -05:00
Matt Brown
58c47ab32c
Fix build
2020-11-12 14:22:54 -05:00
Matt Brown
3dd185e395
Fix #4537 - use more rigorous inerhitance for return and param types
2020-11-12 13:54:27 -05:00
Matt Brown
929efcc1ac
Use the same docblock as the source params, if possible
2020-11-12 09:14:40 -05:00
Matt Brown
b7551e712a
Use better way to determine which signture to use
...
Fixes #4524
2020-11-11 19:22:23 -05:00
Matt Brown
2f7bf2a144
Bind lower bounds to upper bounds as well when no upper bound can be inferred
...
Ref #4485
2020-11-11 17:46:09 -05:00
Matt Brown
a8d7248c31
Fix #4524 - do better template param inheritance
2020-11-11 13:25:17 -05:00
Matt Brown
5ad1e80e99
Fix #4527 - improve interpolated string types
2020-11-11 00:38:26 -05:00
Matt Brown
5a5cbb2892
Increase nesting
2020-11-10 18:27:28 -05:00
Matt Brown
165e0db157
Fix style
2020-11-10 16:19:24 -05:00
Matt Brown
46ebca4497
Fix coalesce operation tainting
2020-11-10 14:36:36 -05:00
Matt Brown
a82a9558d2
Experiment with refactor
2020-11-10 12:50:17 -05:00
Matt Brown
b731b53d5e
Add debug stuff for code complexity
2020-11-10 12:49:42 -05:00
Matt Brown
81babf2430
Clone to prevent incorrect references
2020-11-10 09:01:46 -05:00
Matt Brown
e27cbfba57
Reduce size of data flow graph when analysing array assignments
2020-11-09 22:44:36 -05:00
Adrien LUCAS
4cb8e86737
Add a proxy
capability to the flow annotation ( #4495 )
...
* Add a `passthru` capability to the flow annotation
* Fix passthru-calls type
* Fix types and rename to proxy
* Allow to proxy a method
Co-authored-by: Matthew Brown <github@muglug.com>
2020-11-09 15:22:35 -05:00
Matt Brown
32d526bde9
Add descendant variables for closure uses
...
Fixes #4522
2020-11-09 15:20:28 -05:00
Matt Brown
e97a9c86eb
Fix #4517 - track type contradiction issues in match expressions
2020-11-09 10:00:53 -05:00
Matt Brown
3aaa1d8447
Fix #4516 - treat exit() as the empty type
2020-11-09 08:44:03 -05:00
Matt Brown
683546e024
Fix #4519 - prevent crash with empty match
2020-11-09 08:36:59 -05:00
Matt Brown
8799e1a337
Break apart complex method
2020-11-09 00:58:45 -05:00
Matt Brown
6acd667e55
Fix #4509 - treat expression-derived constants as mixed
2020-11-08 15:36:38 -05:00
Matt Brown
ab2ab826d2
Add slashes
2020-11-08 14:34:09 -05:00
Matt Brown
0be4f2fedf
Fix/ignore reflection bugs
2020-11-08 14:27:37 -05:00
Wouter J
58318282c5
Add support for PHP 8 union types ( #4505 )
2020-11-08 14:23:03 -05:00
Matt Brown
20e37d8cb6
Add a comment to show workings
2020-11-08 13:08:45 -05:00
Matt Brown
24c9702aa5
Remove unused imports
2020-11-08 12:31:21 -05:00
Matt Brown
6da0905478
Separate out good from the bad
2020-11-08 12:29:23 -05:00
Matt Brown
67f9853756
Preserve reconciled taints for all but non-string scalar types
2020-11-08 10:27:58 -05:00
Matt Brown
b635353cf4
Fix redundant thing
2020-11-08 10:18:32 -05:00
Matt Brown
dccf236d16
Fix #4503 - don’t ignore assertions on possibly-null mixed
2020-11-08 10:06:39 -05:00
Matt Brown
b8f5d16e9f
Consolidate similar functionality
2020-11-07 00:58:20 -05:00
Matt Brown
bb5b5142d6
Add more info to mic drop code
2020-11-06 21:36:38 -05:00