Download the PHP package sirbrillig/phpcs-changed without Composer

On this page you can find all versions of the php package sirbrillig/phpcs-changed. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package phpcs-changed

Run phpcs on files and only report new warnings/errors compared to the previous version.

This is both a PHP library that can be used manually as well as a CLI script that you can just run on your files.

What is this for?

Let's say that you need to add a feature to a large legacy file which has many phpcs errors. If you try to run phpcs on that file, there is so much noise it's impossible to notice any errors which you may have added yourself.

Using this script you can get phpcs output which applies only to the changes you have made and ignores the unchanged errors.

Installation

CLI Usage

👩‍💻👩‍💻👩‍💻

To make this work, you need to be able to provide data about the previous version of your code. phpcs-changed can get this data itself if you use svn or git, or you can provide it manually.

Here's an example using phpcs-changed with the --svn option:

If you wanted to use svn and phpcs manually, this produces the same output:

Both will output something like:

Or, with --report json:

If the file was versioned by git, we can do the same with the --git option:

When using --git, you should also specify --git-staged, --git-unstaged, or --git-base.

--git-staged compares the currently staged changes (as the modified version of the files) to the current HEAD (as the unmodified version of the files). This is the default.

--git-unstaged compares the current (unstaged) working copy changes (as the modified version of the files) to the either the currently staged changes, or if there are none, the current HEAD (as the unmodified version of the files).

--git-base, followed by a git object, compares the current HEAD (as the modified version of the files) to the specified git object (as the unmodified version of the file) which can be a branch name, a commit, or some other valid git object.

CLI Options

More than one file can be specified after a version control option, including globs and directories. If any file is a directory, phpcs-changed will scan the directory for all files ending in .php and process them. For example: phpcs-changed --git src/lib test/**/*.php will operate on all the php files in the src/lib/ and test/ directories.

You can use --ignore to ignore any directory, file, or paths matching provided pattern(s). For example.: --ignore=bin/*,vendor/* would ignore any files in bin directory, as well as in vendor.

You can use --report to customize the output type. full (the default) is human-readable, json prints a JSON object as shown above, and 'xml' can be used by IDEs. These match the phpcs reporters of the same names.

You can use --standard to specify a specific phpcs standard to run. This matches the phpcs option of the same name.

You can use --extensions to specify a list of valid file extensions that phpcs should check. These should be separated by commas. This matches the phpcs option of the same name.

You can also use the -s option to Always show sniff codes after each error in the full reporter. This matches the phpcs option of the same name.

The --error-severity and --warning-severity options can be used for instructing the phpcs command on what error and warning severity to report. Those values are being passed through to phpcs itself. Consult phpcs documentation for severity settings.

The --cache option will enable caching of phpcs output and can significantly improve performance for slow phpcs standards or when running with high frequency. There are actually two caches: one for the phpcs scan of the unmodified version of the file and one for the phpcs scan of the modified version. The unmodified version phpcs output cache is invalidated when the version control revision changes or when the phpcs standard changes. The modified version phpcs output cache is invalidated when the file hash changes or when the phpcs standard changes.

The --no-cache option will disable the cache if it's been enabled. (This may also be useful in the future if caching is made the default.)

The --clear-cache option will clear the cache before running. This works with or without caching enabled.

The --always-exit-zero option will make sure the run will always exit with 0 return code, no matter if there are lint issues or not. When not set, 1 is returned in case there are some lint issues, 0 if no lint issues were found. The flag makes the phpcs-changed working with other scripts which could detect 1 as failure in the script run (eg.: arcanist).

The --no-verify-git-file option will prevent checking to see if a file is tracked by git during the git workflow. This can save a little time if you can guarantee this otherwise.

The --no-cache-git-root option will prevent caching the check used by the git workflow to determine the git root within a single execution. This is probably only useful for automated tests.

The --arc-lint option can be used when the phpcs-changed is run via arcanist, as it skips some checks, which are performed by arcanist itself. It leads to better performance when used with arcanist. (Equivalent to --no-verify-git-file --always-exit-zero.)

The --svn-path, --git-path, --cat-path, and --phpcs-path options can be used to specify the paths to the executables of the same names. If these options are not set, the program will try to use the SVN, GIT, CAT, and PHPCS env variables. If those are also not set, the program will default to svn, git, cat, and phpcs, respectively, assuming that each command will be in the system's PATH.

For phpcs, if the path is not overridden, and a phpcs executable exists under the vendor/bin directory where this command is run, that executable will be used instead of relying on the PATH. You can disable this feature with the --no-vendor-phpcs option.

The --debug option will show every step taken by the script.

PHP Library

🐘🐘🐘

getNewPhpcsMessagesFromFiles

This library exposes a function PhpcsMessages\getNewPhpcsMessagesFromFiles() which takes three arguments:

It will return an instance of PhpcsMessages which is a filtered list of the third argument above where every line that was present in the second argument has been removed.

PhpcsMessages represents the output of running phpcs.

To read the phpcs JSON output from an instance of PhpcsMessages, you can use the toPhpcsJson() method. For example:

This will output something like:

getNewPhpcsMessages

If the previous function is not sufficient, this library exposes a lower-level function PhpcsMessages\getNewPhpcsMessages() which takes three arguments:

It will return an instance of PhpcsMessages which is a filtered list of the third argument above where every line that was present in the second argument has been removed.

You can create an instance of PhpcsMessages from real phpcs JSON output by using PhpcsMessages::fromPhpcsJson(). The following example produces the same output as the previous one:

Multiple files

You can combine the results of getNewPhpcsMessages or getNewPhpcsMessagesFromFiles by using PhpcsChanged\PhpcsMessages::merge() which takes an array of PhpcsMessages instances and merges them into one instance. For example:

Running Tests

Run the following commands in this directory to run the built-in test suite:

You can also run linting and static analysis:

Debugging

If something isn't working the way you expect, use the --debug option. This will show a considerable amount of output. Pay particular attention to the CLI commands run by the script. You can run these commands manually to try to better understand the issue.

Inspiration

This was inspired by the amazing work in https://github.com/Automattic/phpcs-diff


All versions of phpcs-changed with dependencies

PHP Build Version
Package Version
Requires php Version ^7.1 || ^8.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package sirbrillig/phpcs-changed contains the following files

Loading the files please wait ....