jakzal/phpqa
jakzal/phpqa has 1,320 GitHub stars and 68 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-07 21:10 UTC. Last push 2026-11-03.
Docker image that provides static analysis tools for PHP
Measured star growth
- in 24h
- 0
- in 7 days
- 0
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalStatic Analysis Tools for PHP
Docker image providing static analysis tools for PHP.
The list of available tools and the installer are actually managed in the jakzal/toolbox repository.
Supported platforms and PHP versions
Docker hub repository: https://hub.docker.com/r/jakzal/phpqa/
Debian
latest,debian(Dockerfile)1.125.10,1.125,1.125.10-debian,1.125-debian(Dockerfile)1.125.10-php8.3,1.125-php8.3,php8.3-debian,php8.3(Dockerfile)1.125.10-php8.4,1.125-php8.4,php8.4-debian,php8.4(Dockerfile)1.125.10-php8.5,1.125-php8.5,php8.5-debian,php8.5(Dockerfile)
Alpine
alpine(Dockerfile)1.125.10-alpine,1.125-alpine, (Dockerfile)1.125.10-php8.3-alpine,1.125-php8.3-alpine,php8.3-alpine(Dockerfile)1.125.10-php8.4-alpine,1.125-php8.4-alpine,php8.4-alpine(Dockerfile)1.125.10-php8.5-alpine,1.125-php8.5-alpine,php8.5-alpine(Dockerfile)
Updated daily: latest, debian, alpine, php8.5, php8.5-alpine, etc.
Updated on patch version change: 1.61, 1.61-php8.5, 1.61-php8.5-alpine, etc.
Never updated: 1.61.0, 1.61.0-php8.5, 1.61.0-php8.5-alpine, etc.
Legacy
These are the latest tags for PHP versions that are no longer supported:
1.122.10-php8.2,1.122-php8.2,php8.2-debian,php8.2(Dockerfile)1.122.10-php8.2-alpine,1.122-php8.2-alpine,php8.2-alpine(Dockerfile)1.105.0-php8.1,1.105-php8.1,php8.1-debian,php8.1(Dockerfile)1.105.0-php8.1-alpine,1.105-php8.1-alpine,php8.1-alpine(Dockerfile)1.92.7-php8.0,1.93-php8.0,php8.0-debian,php8.0(Dockerfile)1.92.7-php8.0-alpine,1.93-php8.0-alpine,php8.0-alpine(Dockerfile)1.80.0-php7.4,1.80-php7.4,php7.4-debian,php7.4(Dockerfile)1.80.0-php7.4-alpine,1.80-php7.4-alpine,php7.4-alpine(Dockerfile)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)
Available tools
More tools
Some tools are not included in the docker image, to use them refer to their documentation:
- exakat - a real time PHP static analyser
Removed tools
| Name | Summary |
|---|---|
| analyze | Visualizes metrics and source code |
| box-legacy | Legacy version of box |
| design-pattern | Detects design patterns |
| local-php-security-checker | Checks composer dependencies for known security vulnerabilities |
| parallel-lint | Checks PHP file syntax |
| pest | The elegant PHP Testing Framework |
| php-coupling-detector | Detects code coupling issues |
| php-formatter | Custom coding standards fixer |
| phpcf | Finds usage of deprecated features |
| phpda | Generates dependency graphs |
| phpdoc-to-typehint | Automatically adds type hints and return types based on PHPDocs |
| phpstan-exception-rules | PHPStan rules for checked and unchecked exceptions |
| 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 |
Running tools
Pull the image:
docker pull jakzal/phpqa
The default command will list available tools:
docker run -it --rm jakzal/phpqa
To 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 src
You 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 src
Building the image
git clone https://github.com/jakzal/phpqa.git
cd phpqa
make build-debian
To build the alpine version:
make build-alpine
Cookbook
Please check out the cookbook for further tips & tricks.
Contributing
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.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,790 starspublic-apis/public-apis
A collective list of free APIs
497,014 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
440,931 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,145 stars