This tool check syntax of PHP files faster than serial check with fancier output.

Overview

PHP Parallel Lint

Downloads this Month Build Status License

This application checks syntax of PHP files in parallel. It can output in plain text, colored text, json and checksyntax formats. Additionally blame can be used to show commits that introduced the breakage.

Running parallel jobs in PHP is inspired by Nette framework tests.

The application is officially supported for use with PHP 5.3 to 8.1.

Table of contents

  1. Installation
  2. Example output
  3. History
  4. Command line options
  5. Recommended excludes for Symfony framework
  6. Excluding files from a scan based on the PHP version used
  7. How to upgrade

Installation

Install with composer as development dependency:

composer require --dev php-parallel-lint/php-parallel-lint

Alternatively you can install as a standalone composer project:

composer create-project php-parallel-lint/php-parallel-lint /path/to/folder/php-parallel-lint
/path/to/folder/php-parallel-lint/parallel-lint # running tool

For colored output, install the suggested package php-parallel-lint/php-console-highlighter:

composer require --dev php-parallel-lint/php-console-highlighter

Since v1.3.0, a PHAR file is also made available for each release. This PHAR file is published as an asset for each release and can be found on the Releases page.

Example output

Example use of tool with error

History

This project was originally created by @JakubOnderka and released as jakub-onderka/php-parallel-lint.

Since then, Jakub has moved on to other interests and as of January 2020, the second most active maintainer @grogy has taken over maintenance of the project and given the project - and related dependencies - a new home in the PHP Parallel Lint organisation.

It is strongly recommended for existing users of the (unmaintained) jakub-onderka/php-parallel-lint package to switch their dependency to php-parallel-lint/php-parallel-lint, see How to upgrade below.

Command line options

  • -p <php> Specify PHP-CGI executable to run (default: 'php').
  • -s, --short Set short_open_tag to On (default: Off).
  • -a, --asp Set asp_tags to On (default: Off).
  • -e <ext> Check only files with selected extensions separated by comma. (default: php,php3,php4,php5,phtml,phpt)
  • --exclude Exclude a file or directory. If you want exclude multiple items, use multiple exclude parameters.
  • -j <num> Run jobs in parallel (default: 10).
  • --colors Force enable colors in console output.
  • --no-colors Disable colors in console output.
  • --no-progress Disable progress in console output.
  • --checkstyle Output results as Checkstyle XML.
  • --json Output results as JSON string (requires PHP 5.4).
  • --gitlab Output results for the GitLab Code Quality widget (requires PHP 5.4), see more in Code Quality documentation.
  • --blame Try to show git blame for row with error.
  • --git <git> Path to Git executable to show blame message (default: 'git').
  • --stdin Load files and folder to test from standard input.
  • --ignore-fails Ignore failed tests.
  • --syntax-error-callback File with syntax error callback for ability to modify error, see more in example
  • -h, --help Print this help.
  • -V, --version Display this application version.

Recommended excludes for Symfony framework

To run from the command line:

vendor/bin/parallel-lint --exclude .git --exclude app --exclude vendor .

Excluding files from a scan based on the PHP version used

Sometimes a particular file in a project may not comply with the project-wide minimum PHP version, like a file which is conditionally included in the project and contains PHP syntax which needs a higher PHP version to run.

This can make it complicated to run Parallel Lint in a CI context, as the excludes used in the command would have to be adjusted based on the PHP version on which the scan is being run.

PHP Parallel Lint offers a straight-forward way around this, as files can define their own minimum PHP version like so:

<?php // lint >= 7.4

// Code which contains PHP 7.4 syntax.

With this comment in place, the file will be automatically skipped when PHP Parallel Lint is run on a PHP version lower than PHP 7.4.

Note: The // lint >= 7.4 comment has to be only the first line of the file and must directly follow the PHP open tag.

How to upgrade

Are you using jakub-onderka/php-parallel-lint package? You can switch to php-parallel-lint/php-parallel-lint using:

composer remove --dev jakub-onderka/php-parallel-lint
composer require --dev php-parallel-lint/php-parallel-lint
Comments
  • Restore php 5.3 support

    Restore php 5.3 support

    Originally, the PHP 5.3 was removed, because Travis misconfiguration (32855d5beed16d6b68faea9bb0818c34bf7da9fc). However, seems most PHP 5.3 code is still there. This will attempt to restore such compatibility.

    The --json support is not added, see notes below.

    This is needed for projects that support old versions, example:

    • https://github.com/zf1s/zf1

    As the version still won't be tested in CI, such use will be at their own risk, as this project doesn't CI test those versions.

    PS: once this project CI is migrated to GitHub actions and setup-php, then PHP 5.3 support can be enabled in Ci. Also, php 5.3 can be enabled in Travis, likely the original commit author did not know-how.

    PS2: This can be seen in action here: https://github.com/zf1s/zf1/pull/66

    Type: enhancement 
    opened by glensc 21
  • Split files for PSR-4 compliance

    Split files for PSR-4 compliance

    There were many classes combined into single files, which isn't recommended and makes maintaining hard.

    For example; Did you know that \JakubOnderka\PhpParallelLint\ArrayIterator was actually located in src/Settings.php. Not where you'd expect it to be.

    This PR moves all these classes to their own files, and configures Composer to use a PSR-4 autoloader instead of a classmap.

    Closes #25 Closes #26

    Type: breaking change 
    opened by roelofr 20
  • Successful lint with PHP startup errors should exit with 0 not 254

    Successful lint with PHP startup errors should exit with 0 not 254

    I am not sure exactly what the problem is, but parallel-lint exits with "Error in skip-linting.php process" on php 8, you can check the full output at https://travis-ci.org/github/Seldaek/monolog/jobs/689943262#L395

    opened by Seldaek 16
  • More maintainers?

    More maintainers?

    While I'm glad this was forked into an org, so that if the current maintainers don't want to do it anymore, they can easily add more (vs just being in a users namespace) maintainers etc.

    It does seem like the current maintainers aren't that actually that active (which is certainly understandable given COVID-19), but it's slightly concerning when they've only recently taken over the project.

    To that extent, can we get more people involved to help this? Numerous people are still waiting on various cleanup from the forking and renaming, to deal with the deprecated/abandoned warnings when running composer.

    Originally filed at https://github.com/php-parallel-lint/PHP-Console-Highlighter/issues/9 but I'm not sure why I put it in there

    Type: meta 
    opened by reedy 15
  • GitHub Actions for testing, and automatic phar creation

    GitHub Actions for testing, and automatic phar creation

    Depends on #45, test results are available at roelofr:#1, which merge into that master branch.

    I'm still seeing errors on this branch, very wierd ones at that:

    Fatal error: Interface 'JsonSerializable' not found in /home/runner/work/php-parallel-lint/php-parallel-lint/src/Error.php on line 4
    

    I don't know why, but the Json class seems unavailable, although the json extension is enabled.

    On PHP 8.0 I even saw Fatal error: Uncaught Error: Call to undefined function token_get_all(), which is a built-in and should always work.

    Some wierd stuff going on here... :thinking:

    Will close #44.

    Type: chores/QA 
    opened by roelofr 11
  • Building phar is not possible

    Building phar is not possible

    Hello

    I'm trying to build the .phar file version and I'm thus following the guide as described in your README.md file (https://github.com/php-parallel-lint/PHP-Parallel-Lint#create-phar-package)

    • git clone https://github.com/php-parallel-lint/PHP-Parallel-Lin
    • composer update
    • Download of box is OK
    • Building the phar is KO with the following message :
    php box.phar build
    Building...
    
    [RuntimeException]
    failed to get contents of 'C:\temp\PHP-Parallel-Lint\parallel-lint.php'
    
    build [-c|--configuration="..."]
    
    • The box.json file mention parallel-lint.php for the main key while the file didn't have the .php extension. So, I edit the file and remove the .php extension. I've thus "main": "parallel-lint", in box.json
    • I run php box.phar build once more and now building is correct.

    But, now, running php parallel-lint.phar throw an error:

    PHP Fatal error:  Cannot declare class ComposerAutoloaderInit8d3d5124130cbc6652f1aad8a66cf923, because the name is already in use in phar://C:/temp/PHP-Parallel-Lint/parallel-lint.phar/vendor/composer/autoload_real.php on line 5
    

    Can you take a look please ?

    Note: I've also tried https://github.com/box-project/box for creating the phar but here too, it doesn't work.

    opened by cavo789 10
  • ErrorFormatter: support PHP Console Highlighter 1.0.0

    ErrorFormatter: support PHP Console Highlighter 1.0.0

    PHP Console Highlighter 1.0.0 has just been released.

    This PR adds cross-version support for both PHP Console Highlighter < 1.0.0 and 1.0.0+ to PHP Parallel Lint, which allows people to update the Highlighter dependency to the latest version.

    Includes changelog entry to allow this PR to still be included in the 1.3.2 release.

    Ref: https://github.com/php-parallel-lint/PHP-Console-Highlighter/releases/tag/v1.0.0

    Type: enhancement 
    opened by jrfnl 9
  • GH Actions: improve workflows

    GH Actions: improve workflows

    Related to #44, follow-up PR to #46

    Commit Details

    GH Actions workflows: fix PHP set up step

    To disable code coverage, the coverage key should be set to none. false is not a valid (or supported) value, so the behaviour may be unpredictable.

    Ref: https://github.com/shivammathur/setup-php#disable-coverage

    GH Actions: run the tests against all supported PHP versions

    The original Travis script ran the following commands against all supported PHP versions, but didn't test the phar:

      - composer test
      - ./parallel-lint --exclude vendor --exclude tests/examples --no-colors .
      - ./parallel-lint --exclude vendor --exclude tests/examples .
    

    The current test job only ran the unit tests against PHP 5.4. It did not run the integration test (running Parallel Lint against its own code) via a direct call to the script anymore at all. The integration test was basically now only being run for the phar and only in one flavour, though it did do that on all supported PHP versions.

    This commit:

    • Removes the job which only ran the unit tests against PHP 5.4.
    • Adds the running of the above three commands (unit tests and two versions of integrations tests runs via a direct call to the script), to the job which also runs the integration tests via the phar file.
    • Updates the command line parameters used for the phar run to be the same as those used for the direct script call integration tests.

    GH Actions: actually get the tests running on all PHP versions

    This fixes the problem originally identified by @roelofr with the Fatal error: Interface 'JsonSerializable' not found error.

    The problem had nothing to do with the PHP setup, but everything with some inane setting of the Nette testing framework as can be seen in the transcript of older, failing trial runs done by @roelofr while setting up the GH Actions workflows:

    Run composer test
    > @php vendor/bin/tester -p php tests
     _____ ___  ___ _____ ___  ___
    |_   _/ __)( __/_   _/ __)| _ )
      |_| \___ /___) |_| \___ |_|_\  v2.3.5
    
    Note: No php.ini is used.
    

    The key here is the Note: No php.ini is used..

    As the system php.ini was not being used, no extensions were loaded, which was causing the errors.

    This is a change which was introduced in Nette Tester 2.0.0. As of that version, you need to always tell the Nette testing framework explicitly which php.ini file to use, -C tells it to use the system-wide php.ini, with -c you can specify a path to a php.ini file and by default no php.ini is used. (honestly, why did anyone ever think making that the default was a good idea ?!!?)

    As the tests will be running on different versions of the Nette Framework, Nette 1.x for PHP 5.4 and 5.5 and Nette 2.x for PHP 5.6+ and Nette 1.x, does not yet support the -C option and breaks when it is used, I've added a second test script to the composer.json file with the correct command line options to run Nette on PHP 5.4/5.5 and added conditions to the GH Actions workflow to use the correct script depending on the PHP/Nette test framework version being used.

    Refs:

    • https://tester.nette.org/en/running-tests#toc-c-path
    • https://tester.nette.org/en/guide#toc-supported-php-versions
    • https://github.com/nette/tester/releases/tag/v2.0.0

    GH Actions: allow for manually triggering a workflow

    Triggering a workflow for a branch manually is not supported by default in GH Actions, but has to be explicitly allowed.

    This is useful if, for instance, an external action script or composer dependency has broken. Once a fix is available, failing builds for open PRs can be retriggered manually instead of having to be re-pushed to retrigger the workflow.

    Ref: https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/

    GH Actions: report CS violations in the PR

    The cs2pr tool will allow to display the results from an action run in checkstyle format in-line in the PR code view, which should improve usability of the workflow results.

    This implements this for the style check command.

    Includes switching the PHP version to PHP 7.4, as PHP 8.0 is not fully supported yet in PHP_CodeSniffer (full support expected in PHPCS 3.6.0).

    Ref: https://github.com/staabm/annotate-pull-request-from-checkstyle

    ~~GH Actions: report linting violations in the PR~~

    ~~The cs2pr tool will allow to display the results from an action run in checkstyle format in-line in the PR code view, which should improve usability of the workflow results.~~

    ~~This implements this for the results of running Parallel Lint over its own code.~~

    ~~This also implicitly acts as an integration test for the checkstyle output and the cs2pr integration.~~

    ~~Ref: https://github.com/staabm/annotate-pull-request-from-checkstyle~~

    GH Actions: clean up

    • Remove the now redundant Travis script.
    • Remove the reference to the Travis script from .gitattributes and add the new .github folder.
    • Update the "Build status" badge in the README to show the result of the GH Actions run instead of Travis.

    Supersedes and closes #54


    GH Actions: allow for testing on PHP 5.3 🆕

    In anticipation of PR #51 being merged, I'm already adding an extra step to the test job.

    PHP_CodeSniffer has a minimum PHP requirement of PHP 5.4, which would block the composer install on PHP 5.3.

    By removing that dev dependency ahead of the composer install, the test workflow can also run on PHP 5.3.

    GH Actions: fix phar creation 🆕

    The phar file should only contain the files of PHP Parallel Lint and any non-dev requirements. It should not include the dev requirements of this package.

    As things were, it did.

    Fixed now, by doing the composer install with the --no-dev option, both for the Test workflow as well as for the Release workflow.

    GH Actions: switch execution order of unit vs integration tests 🆕

    ... and add continue-on-error to the first of the integration tests.

    If/when any of the tests fail, execution of the Test job will stop.

    Now, if there is a parse error in the code of any of the Parallel Lint files, with the test execution order as it was, that means the job would already fail on the running of the unit tests and stop there.

    However to identify the parse error, the integration tests are more useful, so with that in mind, those will now be run first.

    Secondly, if there is a parse error, the first integration test would fail and the second (with colours) would never get executed, while especially in the case of a parse error in the Parallel Lint code itself, it is useful to see the output of both these integration tests.

    So, with that in mind, I've set the first of the two to continue-on-error. As the second integration test would fail anyway, this will never negatively impact the workflow success/failure marking in the end, while it does allow us to see the output of both integration test steps.

    Type: chores/QA 
    opened by jrfnl 8
  • PHP 8.1: silence the deprecation notices about missing return types

    PHP 8.1: silence the deprecation notices about missing return types

    PHP 8.1: silence the deprecation notice about jsonSerialize() return type

    As of PHP 8.1, PHP adds return type declarations to the PHP native functions.

    For the JsonSerializable::jsonSerialize() interface method, the new signature is:

    function jsonSerialize(): mixed {}
    

    As this libary still supports PHP 5.3, it is not possible to add this return type as:

    1. Return types weren't available until PHP 7.0 and
    2. the mixed return type only became available in PHP 8.0.

    For libraries supporting PHP 7.0+, it would have been possible to fix this by adding an array return type (higher specificity).

    For libraries still supporting PHP < 7.0, there are two choices:

    1. Either decouple from the JsonSerialize interface.
    2. Or use a PHP 8.1 attribute to silence the deprecation notice.

    As prior to PHP 8.0, attributes are ignored as if they were comments, it is safe to add the attribute to the library and IMO, this is prefered over decoupling the classes from the JsonSerializable interface.

    To prevent PHPCS tripping up over "something" existing between the function docblock and the declaration, PHPCS 3.6.0 should be used, which is the first PHPCS version with full PHP 8.0 syntax support in the sniffs (albeit that there are still some small things to fix up in PHPCS).

    Refs:

    • https://wiki.php.net/rfc/internal_method_return_types
    • https://github.com/php/php-src/pull/7051

    PHP 8.1: silence the deprecation notice about RecursiveFilterIterator method return types

    As of PHP 8.1, PHP adds return type declarations to the PHP native functions.

    For the RecursiveFilterIterator, the relevant method signatures are:

    • accept(): bool
    • hasChildren(): bool
    • getChildren(): ?RecursiveFilterIterator

    As this libary still supports PHP 5.3, it is not possible to add this return type as:

    1. Return types weren't available until PHP 7.0 and
    2. the mixed return type only became available in PHP 8.0.

    For libraries still supporting PHP < 7.0, there are two choices:

    1. Either decouple from the interface.
    2. Or use a PHP 8.1 attribute to silence the deprecation notice.

    As prior to PHP 8.0, attributes are ignored as if they were comments, it is safe to add the attribute to the library and IMO, this is prefered over decoupling the classes from the interface.

    To prevent PHPCS tripping up over "something" existing between the function docblock and the declaration, PHPCS 3.6.0 should be used, which is the first PHPCS version with full PHP 8.0 syntax support in the sniffs (albeit that there are still some small things to fix up in PHPCS).

    Refs:

    • https://wiki.php.net/rfc/internal_method_return_types
    Type: enhancement 
    opened by jrfnl 7
  • Custom error hook

    Custom error hook

    Thank you for keeping this tool alive, it is amazing! But I would like to propose a custom error hook or some callback which I can use to modify error before proceeding. This is the reason

    Laravel & Blade

    Laravel FW uses Blade as a template, which is then compiled into PHP files. So I'm running this code

    php artisan view:cache # Compile all Blade templates
    ./vendor/bin/parallel-lint ./storage/framework/views
    

    But if there is an error in Blade template, it shows error like this: Parse error: ./storage/framework/views/b89d10e4ca8386fb9f234e0b5a62798e71014114.php:66 Which says nothing, because it points into already compiled. However, there is a way how to map this error back into the original Blade file.

    So if there would be some possible callbacks, I would use it to modify error back to the original file and line.


    Is there a way how to make this possible? It would maybe require some config file instead of CLI arguments only. If you don't want to require any other package for config parsing (like Yaml etc), maybe just include PHP file with an array.

    opened by arxeiss 7
  • CS/QA: Tests: add PSR-4 compliant namespace declarations

    CS/QA: Tests: add PSR-4 compliant namespace declarations

    Includes:

    • Renaming the files to reflect the name of the class therein and to use the php instead of phpt file extension.
    • Updating the autoload-dev directive in the composer.json file.
    • Updating the exclusions in the PHPCS config.

    Note: using PSR-4 compliant *Test,php filenames will (temporarily) silently break the running of the tests for PHP 5.3-5.5 as Nette Tester 1.x can't find the tests anymore. We can ignore this for now as this will be fixed in one of the next PRs where the tests will switch over to the PHPUnit testing framework.

    Type: chores/QA 
    opened by jrfnl 6
  • Docker CLI / image option

    Docker CLI / image option

    To allow to integrate it with CI directly, without installing it as dependency similar to this: https://github.com/overtrue/phplint#docker-cli

    so we can use it this way

              - step:
                  image: overtrue/phplint:8.1
                  name: PHP Linting parallel
                  script:
                    - /root/.composer/vendor/bin/phplint ./
    
    opened by pentatonicfunk 3
  • Possible improvements to --show-deprecated

    Possible improvements to --show-deprecated

    Disclaimer: I've not looked how the --show-deprecated option works internally, and maybe the idea below is not achievable at all.

    While using the --show-deprecated option with PHP 8.1 against some large codebase, I was surprised that only a few cases were detected, when that version comes to lots of classes now requiring correct return type-hinting.

    So, for example, this file / class:

    <?php
    
    class my_ite implements Iterator {
        public function current() {
            return 1;
        }
        public function key() {
            return 1;
        }
        public function next() {
            // do something.
        }
        public function rewind() {
            // do something.
        }
        public function valid() {
            return true;
        }
    }
    

    Does, in fact, miss a lot of return types (or #[ReturnTypeWillChange] attributes). See https://3v4l.org/bPN2V

    But, parallel-lint does not detect them at all:

    $ vendor/bin/parallel-lint --show-deprecated test.php 
    PHP 8.1.9 | 10 parallel jobs
    .                                                            1/1 (100 %)
    
    
    Checked 1 files in 0.5 seconds
    No syntax error found
    

    (note, neither php -l test.php does)

    So, I was guessing if, maybe, when the file (class) being linted does not have unknown dependencies (errors)... it would be possible to, effectively, try to run the file and get all those deprecation messages that aren't shown normally.

    Again, surely this is a non-sense and crazy idea, I just discovered that my hypothetical (only, I was happy) 12 deprecation cases detected by --show-deprecated... they are going to be, in reality, some good hundred, heh.

    Still I'm not sure to understand why some are detected (for example php_user_filter::filter($in, $out, &$consumed, bool $closing): int was perfectly detected and others (like Iterator::valid() : bool) aren't, unless you effectively "run" the file.

    And that's the story and the (crazy) idea, thanks for the tool, it's really useful!

    Ciao :-)

    opened by stronk7 2
  • Add log to file option - cannot isolate which file lint is hanging on

    Add log to file option - cannot isolate which file lint is hanging on

    Currently, I do not see an option to log progress to a text file e.g. log which files have been processed.

    My scenario ...

    I am executing via PHAR 1.3.2 on the current folder:
    C:/xampp/php/php C:\scms\parallel-lint.phar --exclude .git .

    This particular local repository it is hanging for some unknown reason. This is the output ...

    Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
    PHP 7.4.29 | 10 parallel jobs
    ............................................................   60/1169 (5 %)
    ............................................................  120/1169 (10 %)
    ............................................................  180/1169 (15 %)
    ............................................................  240/1169 (20 %)
    ............................................................  300/1169 (25 %)
    ............................................................  360/1169 (30 %)
    ............................................................  420/1169 (35 %)
    .................................X..X.......................  480/1169 (41 %)
    ............................................................  540/1169 (46 %)
    ............................................................  600/1169 (51 %)
    ............................................................  660/1169 (56 %)
    ............................................................  720/1169 (61 %)
    ............................................................  780/1169 (66 %)
    ............................................................  840/1169 (71 %)
    ............................................................  900/1169 (76 %)
    ............................................................  960/1169 (82 %)
    ............................................................ 1020/1169 (87 %)
    ............................................................ 1080/1169 (92 %)
    ............................................................ 1140/1169 (97 %)
    ..........................^C
    

    The ^C is me hitting the Ctrl+C after I've waited minutes.

    When I exclude the "application" folder within the repository, it completes ...

    C:/xampp/php/php C:\scms\parallel-lint.phar --exclude application --exclude .git .
    Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
    PHP 7.4.29 | 10 parallel jobs
    ............................................................  60/179 (33 %)
    ............................................................ 120/179 (67 %)
    ...........................................................  179/179 (100 %)
    
    Checked 179 files in 1.6 seconds
    No syntax error found
    

    Since the tool is multi-threaded, I assume that all but one thread completes all the other files in the repository except a single file (within the "application" folder) which a single thread stalls on. From the numbers above it will be extremely time consuming to attempt to isolate a single file amongst 990 files (1169 - 179) within the application folder using multiple --exclude parameters.

    By logging progress to a file per file processed, this will help isolate the offending file. Maybe logging when a file as starting processing too?

    opened by johnwarde 1
  • Suggestion: always display the application version in console

    Suggestion: always display the application version in console

    Currently when running the application, the first line of the console output looks like this:

    PHP 8.1.2 | 10 parallel jobs
    

    I'd like to suggest including the name and version of this application in this line, like so:

    PHP-Parallel-Lint 1.3.1 | PHP 8.1.2 | 10 parallel jobs
    

    Opinions ?

    Type: enhancement 
    opened by jrfnl 2
  • Add support for a simple XML/Json config file

    Add support for a simple XML/Json config file

    This would make it more straight-foward for repos to ensure that every contributor runs the linting command with the same CLI arguments and would allow them to document this via a committed file.

    Type: enhancement 
    opened by jrfnl 0
Releases(v1.3.2)
  • v1.3.2(Feb 21, 2022)

    New version with improved support for PHP 8.1, is again tested against PHP 5.3 and we welcome @jrfnl as maintainer.

    Added

    • Support for PHP Console Highlighter 1.0.0, which comes with PHP Console Color 1.0.1, #92 from @jrfnl.

    Fixed

    • Bug fix: make Phar file run independently of project under scan #63 from @jrfnl, fixes #61.
    • Bug fix: checkstyle report could contain invalid XML due to insufficient output escaping #73 from @gmazzap, fixes #72.
    • Fix Phar building #70 from @jrfnl. This fixes PHP 8.1 compatibility for the Phar file.
    • Documentation fix: the --show-deprecated option was missing in both the README as well as the CLI help #84 from @jrfnl, fixes #81 reported by @stronk7.

    Changed

    • README: updated information about PHAR availability #77 from @jrfnl.
    • README: updated CLI example #80 from @jrfnl.
    • README: added documentation on how to exclude files from a scan based on the PHP version used #80 from @jrfnl.
    • Composer autoload improvement #88 from @jrfnl with thanks to @mfn.

    Internal

    • Welcome @jrfnl as a new maintainer #32.
    • GH Actions: set error reporting to E_ALL #65, #76 from @jrfnl.
    • GH Actions: fix failing tests on PHP 5.3-5.5 #71 from @jrfnl and @villfa.
    • GH Actions: auto-cancel concurrent builds #76 from @jrfnl.
    • GH Actions: testing against PHP 8.2 #74 from @grogy.
    • GH Actions: release testing against PHP 5.3 #79 from @jrfnl.
    • GH Actions: update used actions #82 from @jrfnl.
    • Release checklist can now be found in the .github folder #78 from @jrfnl.
    Source code(tar.gz)
    Source code(zip)
    parallel-lint.phar(87.75 KB)
  • v1.3.1(Aug 13, 2021)

  • v1.3.0(Apr 7, 2021)

    Added

    • Allow for multi-part file extensions to be passed using -e (like -e php,php.dist) from @jrfnl.
    • Added syntax error callback #30 from @arxeiss.
    • Ignore PHP startup errors #34 from @jrfnl.
    • Restore php 5.3 support #51 from @glensc.

    Fixed

    • Determine skip lint process failure by status code instead of stderr content #48 from @jankonas.

    Changed

    Internal

    • Normalized composer.json from @OndraM.
    • Updated PHPCS dependency from @jrfnl.
    • Cleaned coding style from @jrfnl.
    • Provide one true way to run the test suite #37 from @mfn.
    • Travis: add build against PHP 8.0 and fix failing test #41 from @jrfnl.
    • GitHub Actions for testing, and automatic phar creation #46 from @roelofr.
    • Add .github folder to .gitattributes export-ignore #54 from @glensc.
    • Suggest to curl composer install via HTTPS #53 from @reedy.
    • GH Actions: allow for manually triggering a workflow #55 from @jrfnl.
    • GH Actions: fix phar creation #55 from @jrfnl.
    • GH Actions: run the tests against all supported PHP versions #55 from @jrfnl.
    • GH Actions: report CS violations in the PR #55 from @jrfnl.

    diff v1.2.0...v1.3.0

    Source code(tar.gz)
    Source code(zip)
    parallel-lint.phar(72.83 KB)
  • v1.2.0(Apr 4, 2020)

    Added

    • Added changelog.

    Fixed

    • Fixed vendor location for running from other folder from @Erkens.

    Internal

    • Added a .gitattributes file from @jrfnl, thanks for issue to @ondrejmirtes.
    • Fixed incorrect unit tests from @jrfnl.
    • Fixed minor grammatical errors from @jrfnl.
    • Added Travis: test against nightly (= PHP 8) from @jrfnl.
    • Travis: removed sudo from @jrfnl.
    • Added info about installing like not a dependency.
    • Cleaned readme - new organization from previous package.
    • Added checklist for new version from @szepeviktor.

    For the details you can have a look at the diff.

    Source code(tar.gz)
    Source code(zip)
Owner
PHP Parallel lint
PHP Parallel lint
Fly50W is a new language which helps you build simple apps using more than 500k lines of code easily.

Fly50W is a new language which helps you build simple apps using more than 500k lines of code easily. Installation

null 4 Jun 22, 2022
Magento sample data includes a sample store, complete with more than 250 products

Magento sample data includes a sample store, complete with more than 250 products (about 200 of them are configurable products), categories, promotional price rules, CMS pages, banners, and so on. Sample data uses the Luma theme on the storefront.

Magento 203 Dec 16, 2022
Check if files are compatible with X version of PHP.

grumphp-php-compatibility Check if files are compatible with X version of PHP. grumphp.yml: parameters: tasks: php_compatibility:

Wunder 4 Mar 15, 2022
A PHP Library To Make Your Work Work Easier/Faster

This Is A Php Library To Make Your Work Easier/Faster,

functionality 2 Dec 30, 2022
PHPench creates a graphical output for a PHP benchmark

PHPench creates a graphical output for a PHP benchmark. Plot the runtime of any function in realtime with GnuPlot and create an image out of the result.

Matthias 53 Dec 10, 2022
A small CLI tool to check missing dependency declarations in the composer.json and module.xml

Integrity checker Package allows to run static analysis on Magento 2 Module Packages to provide an integrity check of package. Supported tools: Compos

run_as_root GmbH 13 Dec 19, 2022
Proof of concept for a WordPress plugin check tool.

Plugin Check Proof of concept for a WordPress plugin check tool. For now, this is limited to WP-CLI usage. Eventually, the real plugin checker should

Felix Arntz 10 Sep 27, 2022
Debug with Ray to fix problems faster

Debug with Ray to fix problems faster This package can be installed in any PHP application to send messages to the Ray app. The desktop app: can be us

Spatie 458 Dec 27, 2022
Makes indexing of your Magento store around x times faster! ‼️ Maintainers wanted!

FastIndexer This module has never been used in production. No more empty results in the frontend due to a long taking reindex process! Integrates seam

Cyrill Schumacher 79 Jul 10, 2022
A faster drop in replacement for bin/magento cache:clean with file watcher

"You know, hope is a mistake. If you can't fix what's broken, you'll, uh... you'll go insane." - Max Rockatansky Magento 2 Cache Clean A faster drop i

mage2tv 460 Dec 26, 2022
Search faster into Magento DevDocs and Magento StackExchange! 🔍⚡️

VS Code - Magento DevSearch Search faster into Magento DevDocs and Magento StackExchange! ?? ⚡️ Magento DevSearch is a VS Code extension that allows y

Rafael Corrêa Gomes 12 Oct 18, 2022
Preload your sweet sweet code to opcache with a composer command, making your code faster to run.

Composer Preload Preload your sweet sweet code to opcache with a composer command, making your code run faster. Composer Preload is a composer plugin

Ayesh Karunaratne 197 Dec 6, 2022
Methods to allow the mapping of cases to snake / camel for input / output

Methods to allow the mapping of cases to snake / camel for input / output This is where your description should go. Limit it to a paragraph or two. Co

Craig Smith 4 Aug 31, 2022
🖤Run Laravel artisan tinker from a Vim buffer with output in Ray

Tinkeray Heavily inspired by the absolutely awesome Tinkerwell, run Laravel artisan tinker from a Vim buffer with output in Ray ?? Installation Usage

Jesse Leite 22 Jan 2, 2023
DBML parser for PHP8. It's a PHP parser for DBML syntax.

DBML parser written on PHP8 DBML (database markup language) is a simple, readable DSL language designed to define database structures. This page outli

Pavel Buchnev 32 Dec 29, 2022
A lightweight php class for formatting sql statements. Handles automatic indentation and syntax highlighting.

A lightweight php class for formatting sql statements. Handles automatic indentation and syntax highlighting.

Doctrine 1.4k Dec 29, 2022
CPAY is a sdk that encapsulates the Orange Money api with an intuitive syntax allowing you to integrate the Orange Money payment into your PHP project.

CPAY CHOCO PAY is a sdk that encapsulates the Orange Money api with an intuitive syntax allowing you to integrate the Orange Money payment into your P

faso-dev 1 Oct 26, 2022
A simple PHP package for sending messages to Slack, with a focus on ease of use and elegant syntax.

Slack for PHP A simple PHP package for sending messages to Slack with incoming webhooks, focussed on ease-of-use and elegant syntax. Note: this packag

Regan McEntyre 1.2k Oct 29, 2022