1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-30 04:39:00 +01:00
Commit Graph

172 Commits

Author SHA1 Message Date
Matthew Brown
2021c81606
Use my psl repo 2020-12-13 17:13:48 -05:00
Matt Brown
5fc2b4e04b Add back PSL 2020-12-04 01:20:35 -05:00
Matt Brown
edf5bac845 Ignore ReflectionUnionType 2020-11-08 20:29:08 -05:00
Brown
92239add4d Add some backwards-incompatible changes for 4.x 2020-08-30 11:44:14 -04:00
Bruce Weirdan
22d8f5a0bc
Fixed duplicate shortcodes (#3996)
Also added an utility to help assign new shortcodes and a test to
prevent duplicate shortcodes.
2020-08-16 16:26:54 -04:00
Matthew Brown
6ed7a81146 Remove PSL from test-with-real-projects 2020-08-03 12:05:21 -04:00
Saif Eddin G
ee8619f7bb
Test with PHP-Standard-Library (#3768) 2020-07-07 17:12:07 -04:00
Brown
30db5d10cf Add laravel/framework fork to test-with-real-projects 2020-06-15 17:24:23 -04:00
Bruce Weirdan
7f5580d326
Run every project as separate step (#3076)
It's easier to see which project is failing this way
2020-04-05 20:25:50 -04:00
Matthew Brown
f0f9b2d01b Add suffix 2020-03-19 12:34:48 -04:00
Matthew Brown
2f62e2d9f5 Move issues to separate pages 2020-03-19 12:32:49 -04:00
Matthew Brown
2d69349cd4
Remove you-are-using-it-wrong test 2020-02-20 14:16:03 -05:00
Matthew Brown
ced092874a Make config generation smarter 2020-02-17 22:05:58 -05:00
Brown
4cd4e1750d Use up-to-date hash 2020-02-06 19:45:15 -05:00
Matthew Brown
39a4828bc2 Use specific hash 2020-01-30 00:39:37 -05:00
Matthew Brown
887a635a47 Use my fork 2020-01-14 01:24:27 -05:00
Andreas Möller
3eebed6c33 Fix: Remove unused friendsofphp/php-cs-fixer (#2603)
Co-authored-by: Matthew Brown <github@muglug.com>
2020-01-12 10:52:33 -05:00
Matthew Brown
c586b6458d Use my fork of ProxyManager 2020-01-12 10:38:13 -05:00
Brown
230991e767 Remove you-are-using-it-wrong unit tests
cc @ocramius
2020-01-02 13:25:21 -05:00
Brown
f842b5acd7 Fix ref 2020-01-02 12:42:33 -05:00
Brown
3aa6362d0b Fix test-with-real-projects 2020-01-02 11:09:38 -05:00
Matthew Brown
608ca417bc Add reference to bugfix commit 2020-01-01 18:10:26 -05:00
Matthew Brown
7b180ed091 Fix testing with real projects 2020-01-01 17:45:28 -05:00
Matthew Brown
033b610770 Fix composer checks once more 2020-01-01 17:29:30 -05:00
Matthew Brown
e70a282bce Fix require checker config 2020-01-01 17:23:40 -05:00
Matthew Brown
7ea6c8097d Add config 2020-01-01 17:03:28 -05:00
Marco Pivetta
b26c57237f Ensure BC of API, compat with roave/you-are-using-it-wrong, completeness of composer.json (#2140)
* Test against `roave/you-are-using-it-wrong`

* Added CI step to ensure BC of declared API

* Added step to ensure `composer.json` has all used deps

* Including CI check tools as dev dependencies

* Typo fix: s/backwards/backward

* Run `roave/backward-compatibility-check` off an isolated location with no other dependencies

* Run `test-with-real-projects` task with PHP 7.4 as base runtime

* Run `testing-with-real-projects` also against `ocramius/proxy-manager`

`ocramius/proxy-manager` is an extremely heavy `vimeo/psalm` consumer,
and relies on a lot of the templated types system to generate real
types for proxies produced by runtime evaluation.
2020-01-01 13:55:33 -05:00
Matthew Brown
1b4bda4e08
Go back to upstream 2020-01-01 12:32:03 -05:00
Matthew Brown
8e54e3aa06
Use forked collections for now 2019-12-29 11:11:07 -05:00
Bruce Weirdan
e3e3296dd9 Test doctrine collections (#2524)
* Added doctrine/collections to the list of real projects to test with

* Don't use phar version to check doctrine/collections
2019-12-28 20:51:39 -05:00
Matthew Brown
bdb2f3c2be Use fork for now 2019-12-27 17:10:16 -05:00
Matthew Brown
f48773e931 bump phpunit commit 2019-12-01 14:22:56 -05:00
Matthew Brown
4a2822eb24
Bump release 2019-09-14 15:50:21 -04:00
Matthew Brown
8f29db2408 Reduce output of PHPUnit test 2019-08-13 00:01:35 -04:00
Matthew Brown
aa0efcf026 Add PHPUnit static analysis tests to real project settings 2019-07-09 07:39:03 -04:00
Brown
d573a3e48d Use monochrome output when checkingg other projects 2019-06-17 17:00:38 -04:00
Barney Laurance
4e3a208ec3 Add circleci config file 2019-06-16 09:04:56 -04:00
Matthew Brown
b13eaa20d2 Fix namespacing of generated if 2019-06-08 20:27:49 -04:00
Matthew Brown
0d40fdaaa0 Add false arg 2019-06-08 20:10:51 -04:00
Matthew Brown
7f258100f2 Remove blank line 2019-06-08 20:03:46 -04:00
Matthew Brown
bfbe9a527a Hack around PHP 7.3 polyfill scoping 2019-06-08 19:51:47 -04:00
Barney Laurance
d44be5eb9c Allow deploying phar to any github repository
Potentially useful for fork owners to test out phar deployment without affecting
the official psalm/phar repo.

To enable phar deployments from your own fork of psalm:

- Enable builds with Travis
- Create a github repository to hold recieve the built phar packages
- Create a new dedicated github user for the deployments
- From your main github account, invite the new user to collobrate on the phar repository
- From the new user's account, accept the invitation
- From the new user's account, obtain a 'new personal access token' ( https://github.com/settings/tokens/new ) with repo scope

- In travis settings for your fork of psalm, set two environment
variables:

- PHAR_REPO_SLUG - this should be the name the phar repo you set up earlier, e.g. fred/phar
- GITHUB_TOKEN - This is the personal access token of the new user you obtained above. Anyone who knows this token
                 can push to the repository, so keep it secret. Make sure 'Display value in build log' is
                 switched off'

Now any push to branches in your fork of psalm, should automatically
result in a commit containing the phar file in your phar repository.
2019-06-08 09:46:08 -04:00
Barney Laurance
91c11a0443 Simpler globbing for travis deploy
Previous versions failed. This will delete all files except hidden files. The only hidden files that we expect to exist at present are the .git directory and .gitignore
2019-06-07 08:33:02 -04:00
Barney Laurance
80837267e7 Fix syntax error in travis deploy script
This should resolve the build failure https://travis-ci.org/vimeo/psalm/jobs/542700463
2019-06-07 07:49:07 -04:00
Barney Laurance
673661c6da Exit build-phar script on any error 2019-06-07 06:52:07 -04:00
Barney Laurance
fee7a7be43 Set travis deploy phar script to exit at first error 2019-06-07 06:52:07 -04:00
Barney Laurance
eecd21a7d5 Add executable PHP files to PHAR distribution
Previously a user of the phar distribution would have to invoke psalm as
`vendor/bin/psalm.phar`. This is different to the command given in
the psalm documentation, `vendor/bin/psalm`

I also copied all files from the psalm/phar repo into
assets/psalm-phar, so that development can be concentrated in this repo.

The travis-deploy-phar.sh should copy any changes made back into the
psalm/phar.git repo.
2019-06-07 06:52:07 -04:00
Bruce Weirdan
e6f4f27498 Simplify build config by using repo filter
Also deploy signature to psalm/phar repo (because why not)
2019-06-02 11:25:53 -04:00
Bruce Weirdan
96521a6469 Rearrange build/sign/deploy
- Phar signing moved to build-phar.sh (conditional on gpg keys
availability)
- Tagged phar releases moved to travis-deploy-phar.sh
- `travis-deploy-phar.sh` is now triggered via `script` deploy provider
2019-06-02 11:25:53 -04:00
Brown
3a11e1ff5b Set better permissions on Travis deploy script 2019-03-25 16:32:36 -04:00
Brown
bdf0889b4a Fix phar deployment 2019-03-25 13:40:17 -04: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
Bruce Weirdan
aab345ad81 Multi-stage builds (#928)
- Run phpcs once, not on every row of build matrix
- Start coverage builds only when regular test builds succeed
- Always build phar (to see if it builds)
- Automatically deploy psalm.phar on tag builds (no more missing phars)

Also fixes vimeo/psalm#921
2018-08-02 00:44:15 -04:00
Théo FIDRY
1ecf1c4113 Update Box 2018-05-15 14:30:14 -04:00
Théo FIDRY
59d32566d2 Simplify the PHAR build script 2018-05-15 14:30:14 -04:00
Matt Brown
53566bbd90 Pin version of box that doesn’t require xdebug-handler dev-master 2018-04-19 17:44:22 -04:00
Matthew Brown
83811e6e8a Analyse scoped build with Psalm 2018-03-18 10:52:54 -04:00
Matthew Brown
73fadab0b5 Make Phar more robust to object namespace changes 2018-03-12 00:01:52 -04:00
Matthew Brown
0828d5e3b3 Namespace Phar using php-scoper 2018-03-12 00:01:52 -04:00
Bruce Weirdan
c2275f388a box.json -> box.json.dist, use non-deprecated command to build 2018-03-08 19:14:06 -05:00
Bruce Weirdan
742179bc6f more robust check for bz2 extension 2018-03-08 19:14:06 -05:00
Bruce Weirdan
632790e39e phar build tweaks
* run `box build` with phar.readonly=0 (to eliminate the need to change
php.ini settings)
* check for bz2 extension
2018-03-08 19:14:06 -05:00
Bruce Weirdan
0d07925755 increased FD limit 2018-03-08 19:14:06 -05:00
Bruce Weirdan
c13fda4034 phar build tweaks
* added build script
* rebuilt stub to include shebang
* moved built phar to build dir
2018-03-08 19:14:06 -05:00
Tyson Andre
cdcec69536 Support the pylint output format
This is a compact output format that is easy to write scripts that parse.
(And errors fit on a single line)

- E.g. jenkins violation plugin works reliably with pylint.

The multi-line details are deliberately omitted.
An application can output 'console' to stdout and to
a pylint file at the same time.

Files with the extension .pylint will use this format.

Document the emacs and pylint output formats in `psalm --help`

An optional followup task would be to create unique issue codes,
I don't have any use cases for that.
2018-02-19 22:35:48 -05:00
Matthew Brown
8efc939a5f Move Psalm execution code into PHP file that Psalm can analyse 2017-12-29 17:02:56 -05:00
Jon Ursenbach
fe514b6a9f Adding a --version argument to the Psalm executable. (#226)
* Adding a `--version` argument to the Psalm executable.

* Using ocramius/package-versions instead of hardcoding a version.

* Backporting PackageVersions to a PHP 5.6+ compatible fork.
2017-11-11 12:11:11 -05:00
ahebrank
f1435ae558 fix #280: incorrect reference by key (#281) 2017-11-10 16:44:16 -05:00
Matthew Brown
657d154288 CacheProvider -> ParserCacheProvider 2017-10-15 11:57:44 -04:00
Matthew Brown
00aaa4adaf Fix #242 - add --no-cache option 2017-10-13 21:27:20 -04:00
Matthew Brown
6c1587d4ab Fix #244 - ignore --ansi args after xdebug turned off 2017-10-13 21:16:34 -04:00
Matthew Brown
5eb7d541d4 Fix #234 - improve documentation 2017-10-12 23:33:53 -04:00
Matthew Brown
cbc889a498 Add cache-clearing mechanism 2017-10-07 14:41:16 -04:00
MacFJA
c4ce8bede9 Add XML as possible output format + add report generation (#206)
* Add XML as possible output format + add report generation

* Add missing xml root node

* Change XML generator (previous one don't escape '<' and '>')

* Change option (only one option) + unit test
2017-09-08 11:18:48 -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
Matt Brown
f49d167a49 Add tracking from where a trait was included 2017-06-21 14:22:52 -04:00
Matthew Brown
90d0d12f6c Don’t disable xdebug when running in debug mode 2017-06-06 22:53:36 -04:00
Matthew Brown
fce69badde Fix setup script 2017-05-28 00:07:26 -04:00
SignpostMarv
adef59629a scrutinizer-ci (#152)
* swapping phpcs for php-cs-fixer

* workaround for php-cs-fixer treating parenthesis following echo as the function call variant

* amending rules

* blank_line_before_return

* majority of files pass with these disabled, could remove later

* combine_consecutive_unsets

* concat_space

* placeholder for if vimeo/psalm ever goes php:^7.0

* function_to_constant

* disabling include

* linebreak_after_opening_tag, lowercase_cast, magic_constant_casing

* mb_str_functions disabled

* method_separation

* native_function_casing

* native_function_invocations

* new_with_braces disabled to match usage

* no_alias_functions

* no_blank_lines_after_class_opening

* no_blank_lines_after_phpdoc

* no_blank_lines_before_namespace

* no_empty_comment

* no_empty_phpdoc

* no_empty_statement

* no_extra_consecutive_blank_lines

* no_leading_import_slash to discuss

* no_leading_namespace_whitespace

* no_mixed_echo_print

* no_multiline_whitespace_around_double_arrow

* no_multiline_whitespace_before_semicolons

* no_php4_constructor

* no_short_bool_cast

* no_short_echo_tag

* no_singleline_whitespace_before_semicolons

* no_spaces_around_offset

* no_trailing_comma_in_list_call

* no_trailing_comma_in_singleline_array

* no_unneeded_control_parentheses to discuss

* no_unreachable_default_argument_value

* no_unused_imports to discuss

* no_useless_else to discuss

* no_useless_return

* no_whitespace_before_comma_in_array

* no_whitespace_in_blank_line

* non_printable_character

* normalize_index_brace

* ordered_class_elements to discuss

* ordered_imports to discss

* php_unit_construct

* php_unit_dedicate_assert

* php_unit_fqcn_annotation

* php_unit_strict to discuss

* php_unit_test_class_requires_covers to discuss

* phpdoc_add_missing_param_annotation

* phpdoc_align to discuss

* phpdoc_annotation_without_dot to discuss

* phpdoc_indent to discuss

* phpdoc_inline_tag

* phpdoc_no_access

* phpdoc_no_alias_tag

* phpdoc_no_empty_return

* phpdoc_no_package

* phpdoc_no_useless_inheritdoc

* phpdoc_order to discuss

* phpdoc_return_self_reference

* phpdoc_scalar to discuss

* phpdoc_separation to discuss

* phpdoc_single_line_var_spacing

* phpdoc_summary to discuss

* phpdoc_to_comment to discuss

* phpdoc_trim to discuss

* phpdoc_types

* phpdoc_var_without_name

* pow_to_exponentiation

* pre_increment to discuss

* protected_to_private

* psr0 turned off

* psr4 turned on

* random_api_migration

* return_type_declaration to discuss

* self_accessor to discuss

* semicolon_after_instruction

* short_scalar_cast

* silenced_deprecation_error turned off

* simplified_null_return to discuss

* single_quote

* space_after_semicolon

* standardize_not_equals

* strict_comparison to discuss

* strict_param to discuss

* ternary_operator_spaces

* ternary_to_null_coalescing should be set to true if vimeo/psalm ever goes php:^7.0

* trailing_comma_in_multiline_array to discuss

* trim_array_spaces

* unary_operator_spaces

* whitespace_after_comma_in_array to discuss

* multi-version scrutinizer to match travis

* binary_operator_space

* not the best solution, but it works to exclude the call map from php-cs-fixer

* reducing verbosity of config where defaults were used

* dry run php-cs-fixer as part of tests

* disabling rule pending FriendsOfPHP/PHP-CS-Fixer#2739

* enabling no_unused_imports

* enabling ordered_imports

* ignoring user-defined .php_cs

* using $TRAVIS_COMMIT_RANGE to only test modified files

* enabling no_leading_import_slash

* conditionally testing everything

* filter output then perform exact match

* restoring phpcs via partial cherry pick of f65c618
2017-05-26 18:26:14 -04:00
Matthew Brown
754a4d9950 Allow Psalm to be run outside of the directory it's installed in (#154)
* Add --root option when not running Psalm from root directory

* Add informative error when running Psalm outside of its project directory

* Add better message in help

* Fix autoloader precedence
2017-05-04 14:25:58 -04:00
Matthew Brown
2351a498b2 Add back XDebug removal 2017-03-20 01:27:56 -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
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
13d84367d9 Restart with xdebug turned off 2017-02-18 17:49:05 -05:00
Matthew Brown
721fcbd790 Fix --init from vendor dir 2017-02-13 00:53:30 -05:00
Matthew Brown
1b9f3c33a1 Add better instructions for --init 2017-02-13 00:12:56 -05:00
Matthew Brown
0277ca49ba Add config creation utility 2017-02-12 23:59:43 -05:00
Matthew Brown
eeccf791ad Add unused method & unused class analysis ref #80 2017-01-31 20:47:16 -05:00
Matthew Brown
991d002d3f Fix #66 -m flag 2017-01-16 19:44:31 -05:00
Matthew Brown
b3726c9de5 Use getcwd() for the project’s base, not the config file parent directory 2017-01-16 18:33:04 -05:00
Matthew Brown
dde39ed841 Support -c option with space 2017-01-16 13:46:59 -05:00
Matthew Brown
856870cf37 Fix #62 - die quickly and explicitly if files cannot be located 2017-01-16 11:41:57 -05:00
Matthew Brown
34c72756f4 Fix custom config loading 2017-01-16 11:05:29 -05:00
Matt Brown
93688dffe0 Fix update-docblocks command 2017-01-13 14:06:05 -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
bc01169910 Fix debug end results 2016-12-30 18:28:43 -05:00
Matt Brown
587e067567 Fix start time ref 2016-12-14 19:43:20 -05:00
Matthew Brown
a5195b2571 Add JSON output format 2016-12-07 22:38:57 -05:00
Matthew Brown
8e64c28cbf Add --help for --update-docblocks 2016-11-14 14:49:49 -05:00
Matthew Brown
8dfca6cce2 Add dummy --update-docblocks option 2016-11-12 18:51:48 -05:00