* 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.
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.
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
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.
- 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
- 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 fixesvimeo/psalm#921
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.
* 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.
* 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
* 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
* 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
* 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