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

71 Commits

Author SHA1 Message Date
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
Matthew Brown
23d0a78a5c Add support for piping STDIN 2016-11-05 01:50:45 -04:00