Giter Site home page Giter Site logo

d68fbe50 / phplint Goto Github PK

View Code? Open in Web Editor NEW

This project forked from overtrue/phplint

0.0 1.0 0.0 181 KB

:bug: A tool that can speed up linting of php files by running several lint processes at once.

License: MIT License

PHP 98.31% Dockerfile 1.34% Shell 0.35%

phplint's Introduction

PHPLint

`phplint` is a tool that can speed up linting of php files by running several lint processes at once.

artboard 1

Release Status Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality FOSSA Status

Installation

Locally, if you have PHP

// PHP 8
$ composer require overtrue/phplint --dev -vvv

// PHP 7
$ composer require overtrue/phplint:^2.0 --dev -vvv

Locally, if you only have Docker

// PHP 8
docker pull overtrue/phplint:8.0

// PHP 7
docker pull overtrue/phplint:7.4

Usage

CLI

Usage:
  phplint [options] [--] [<path>]...

Arguments:
  path                               Path to file or directory to lint.

Options:
      --exclude=EXCLUDE              Path to file or directory to exclude from linting (multiple values allowed)
      --extensions=EXTENSIONS        Check only files with selected extensions (default: php)
  -j, --jobs=JOBS                    Number of parallel jobs to run (default: 5)
  -c, --configuration=CONFIGURATION  Read configuration from config file (default: ./.phplint.yml).
      --no-configuration             Ignore default configuration file (default: ./.phplint.yml).
      --no-cache                     Ignore cached data.
      --cache=CACHE                  Path to the cache file.
      --json[=JSON]                  Output JSON results to a file.
      --xml[=XML]                    Output JUnit XML results to a file.
  -w, --warning                      Also show warnings
  -h, --help                         Display this help message
  -q, --quiet                        Do not output any message
  -V, --version                      Display this application version
      --ansi                         Force ANSI output
      --no-ansi                      Disable ANSI output
  -n, --no-interaction               Do not ask any interactive question
  -v|vv|vvv, --verbose               Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Help:
 Lint something

example:

$ ./vendor/bin/phplint ./ --exclude=vendor

You can also define configuration as a file .phplint.yml:

path: ./
jobs: 10
cache: build/phplint.cache
extensions:
  - php
exclude:
  - vendor
warning: false
$ ./vendor/bin/phplint

By default, the command will read configuration from file .phplint.yml of path specified, you can custom the filename by option: --configuration=FILENAME or -c FILENAME;

If you want to disable the config file, you can add option --no-configuration.

Docker cli

$ docker run overtrue/phplint ./  --exclude=vendor

Program

use Overtrue\PHPLint\Linter;

$path = __DIR__ .'/app';
$exclude = ['vendor'];
$extensions = ['php'];
$warnings = true;

$linter = new Linter($path, $exclude, $extensions, $warnings);

// get errors
$errors = $linter->lint();

//
// [
//    '/path/to/foo.php' => [
//          'error' => "unexpected '$key' (T_VARIABLE)",
//          'line' => 168,
//          'file' => '/path/to/foo.php',
//      ],
//    '/path/to/bar.php' => [
//          'error' => "unexpected 'class' (T_CLASS), expecting ',' or ';'",
//          'line' => 28,
//          'file' => '/path/to/bar.php',
//      ],
// ]

GitHub Actions

uses: overtrue/[email protected]
with:
  path: .
  options: --exclude=*.log

for PHP 7:

uses: overtrue/[email protected]

Other CI/CD (f.e. Bitbucket Pipelines, GitLab CI)

Run this command using overtrue/phplint:8.0 Docker image:

/root/.composer/vendor/bin/phplint ./ --exclude=vendor

Warnings

Not all linting problems are errors, PHP also has warnings, for example when using a continue statement within a switch case. By default these errors are not reported, but you can turn this on with the warning cli flag, or by setting the warning to true in the configuration.

PHP 扩展包开发

想知道如何从零开始构建 PHP 扩展包?

请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》

License

MIT

phplint's People

Contributors

overtrue avatar eclipxe13 avatar kubawerlos avatar rmrhz avatar ttomdewit avatar funivan avatar dependabot-preview[bot] avatar scrutinizer-auto-fixer avatar tuupola avatar backendtea avatar sarcastron avatar hemberger avatar gdubicki avatar srt4rulez avatar jeroeny avatar koenigmathieu avatar ltscommerce avatar lzhang avatar summerblue avatar ktamas77 avatar dependabot-support avatar fossabot avatar

Watchers

 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.