This composer package will provide some basic code quality checks before committing code by using https://github.com/phpro/grumphp.
It checks only modified files or new files on git commit, but check on all configured
paths can be executed running vendor/bin/grumphp run
This tool only extends GrumPHP. Please read its documentation on how to configure tool itself.
This repository currently has the following checks:
- Shell script exec bits - check_file_permissions
- PHP Drupal CS and PHP Code security - phpcs
- PHP 8.1 Compatibility - php_compatibility
- PHP syntax - php_check_syntax
- Cognitive complexity and other ecs sniffs - ecs
- Yaml syntax - yaml_lint
- Json syntax - json_lint
- Deprecation testing - php_stan
- Composer
- PHP >= 8.1
This needs to be done only once either while creating a project or enabling code checks in existing project.
composer require wunderio/code-quality --dev
cp vendor/wunderio/code-quality/config/grumphp.yml ./grumphp.yml
cp vendor/wunderio/code-quality/config/phpstan.neon ./phpstan.neon
cp vendor/wunderio/code-quality/config/psalm.xml ./psalm.xml
The commit hook for GrumPHP is automatically installed on composer require.
Details of the configuration are broken down into the following sections.
- Parameters – Configuration settings for GrumPHP itself.
- Tasks – External tasks performing code validation and their respective configurations.
- TestSuites
- Extensions
- Events
- Conventions checker
If you need to customize the rules for PHP CodeSniffer then drop in phpcs.xml in the same folder as composer.json and configure grumphp.yml:
parameters:
tasks:
phpcs:
standard:
- phpcs.xml
Same applies to any task that uses other configuration file (easy-coding-standards).
Each code quality tool allows you to define at least 3 things:
run_on
- Multiple paths that will be checked and files staged must be from same pathignore_patterns
- path parts that will exclude files from checkextensions
- file extensions of files that should be checked
Please see individual task documentation for more information on what are other configurable options.
Since GrumPHP is just a CLI tool, these commands can be triggered:
The pre-commit hook will be automatically run upon executing git commit
.
The code scanning can be avoided by git commit --no-verify
or git commit -n
but is only meant for rare occasions.
You can run the checks manually with: ./vendor/bin/grumphp run
To run specific task from the defined tasks in grumphp.yml, you can define it with --tasks
parameter. Example:
./vendor/bin/grumphp run --tasks=phpcs
You can easily use the code quality checkers on your CI (CircleCi/Jenkins/GitLab CI) by adding this line:
./vendor/bin/grumphp run --no-ansi --no-interaction