Docker image providing static analysis tools for PHP.
The list of available tools and the installer are actually managed in the jakzal/toolbox repository.
Docker hub repository: https://hub.docker.com/r/jakzal/phpqa/
Nightly builds: https://hub.docker.com/r/jakzal/phpqa-nightly/
latest,debian(debian/Dockerfile)1.68.0,1.68,1.68.0-debian,1.68-debian(debian/Dockerfile)1.68.0-php7.4,1.68-php7.4,php7.4-debian,php7.4(debian/Dockerfile)1.68.0-php8.0,1.68-php8.0,php8.0-debian,php8.0(debian/Dockerfile)1.68.0-php8.1,1.68-php8.1,php8.1-debian,php8.1(debian/Dockerfile)
alpine(alpine/Dockerfile)1.68.0-alpine,1.68-alpine, (alpine/Dockerfile)1.68.0-php7.4-alpine,1.68-php7.4-alpine,php7.4-alpine(alpine/Dockerfile)1.68.0-php8.0-alpine,1.68-php8.0-alpine,php8.0-alpine(alpine/Dockerfile)1.68.0-php8.1-alpine,1.68-php8.1-alpine,php8.1-alpine(alpine/Dockerfile)
These are the latest tags for PHP versions that are no longer supported:
1.61.2-php7.3,1.61-php7.3,php7.3-debian,php7.3(debian/Dockerfile)1.61.2-php7.3-alpine,1.61-php7.3-alpine,php7.3-alpine(alpine/Dockerfile)1.44.0-php7.2,1.44-php7.2,php7.2(7.2/debian/Dockerfile)1.44.0-php7.2-alpine,1.44-php7.2-alpine,php7.2-alpine(7.2/alpine/Dockerfile)1.26.0-php7.1,1.26-php7.1,php7.1(7.1/debian/Dockerfile)1.26.0-php7.1-alpine,1.26-php7.1-alpine,php7.1-alpine(7.1/alpine/Dockerfile)
Some tools are not included in the docker image, to use them refer to their documentation:
- exakat - a real time PHP static analyser
| Name | Summary |
|---|---|
| box-legacy | Legacy version of box |
| composer-normalize | Composer plugin to normalize composer.json files |
| design-pattern | Detects design patterns |
| parallel-lint | Checks PHP file syntax |
| php-formatter | Custom coding standards fixer |
| phpcf | Finds usage of deprecated features |
| phpstan-localheinz-rules | Additional rules for PHPstan |
| security-checker | Checks composer dependencies for known security vulnerabilities |
| testability | Analyses and reports testability issues of a php codebase |
Pull the image:
docker pull jakzal/phpqaThe default command will list available tools:
docker run -it --rm jakzal/phpqaTo run the selected tool inside the container, you'll need to mount
the project directory on the container with -v "$(pwd):/project".
Some tools like to write to the /tmp directory (like PHPStan, or Behat in some cases), therefore it's often useful
to share it between docker runs, i.e. with -v "$(pwd)/tmp-phpqa:/tmp".
If you want to be able to interrupt the selected tool if it takes too much time to complete, you can use the
--init option. Please refer to the docker run documentation for more information.
docker run --init -it --rm -v "$(pwd):/project" -v "$(pwd)/tmp-phpqa:/tmp" -w /project jakzal/phpqa phpstan analyse srcYou might want to tweak this command to your needs and create an alias for convenience:
alias phpqa='docker run --init -it --rm -v "$(pwd):/project" -v "$(pwd)/tmp-phpqa:/tmp" -w /project jakzal/phpqa:alpine'Add it to your ~/.bashrc so it's defined every time you start a new terminal session.
Now the command becomes a lot simpler:
phpqa phpstan analyse srcgit clone https://github.com/jakzal/phpqa.git
cd phpqa
make build-debianTo build the alpine version:
make build-alpine
Please check out the cookbook for further tips & tricks.
Please read the Contributing guide to learn about contributing to this project. Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.