Git Product home page Git Product logo

php-parallel-lint's Introduction

PHP Parallel Lint

Downloads this Month Build Status License

This application checks the 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 --no-dev
/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)
  • -j <num> Run jobs in parallel (default: 10).
  • --exclude Exclude a file or directory. If you want to exclude multiple items, use multiple exclude parameters.
  • --colors Enable colors in console output. (disables auto detection of color support)
  • --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.
  • --show-deprecated Show deprecations (default: Off).
  • --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 the 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 the 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

php-parallel-lint's People

Contributors

jakubonderka avatar jrfnl avatar grogy avatar glensc avatar smugryan avatar vasekpurchart avatar fprochazka avatar arxeiss avatar reedy avatar mzk avatar mdio avatar krinkle avatar mfn avatar mbrodala avatar erkens avatar ondram avatar o5 avatar exussum12 avatar thiemowmde avatar traviscarden avatar szepeviktor avatar paranoiq avatar jeroendedauw avatar msound avatar lens0021 avatar donatj avatar kukulich avatar janvernieuwe avatar jankonas avatar grahamcampbell avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.