Editor Settings (editor-settings) |
The basic formatting conventions (indentation, charset, line endings) are written down once, for every editor. |
– |
.editorconfig (recommended, generic) |
Continuous Integration (continuous-integration) |
A pipeline that runs the quality jobs on every change. |
– |
CI Runner (recommended, generic) |
Package Management (package-management) |
Dependencies are declared and installed by a package manager. |
– |
Composer (recommended, php) |
Autoloading (autoloading) |
Classes are found by a convention, not by hand-written includes. |
– |
PSR-4 Autoloading (recommended, php) |
Code Style (code-style) |
An automatic fixer keeps the code in one style, so later automated rewrites land styled. |
– |
PHP CS Fixer (recommended, php); Laravel Pint (recognized, php); Easy Coding Standard (recognized, php); PHP_CodeSniffer (recognized, php); Twig-CS-Fixer (recommended, twig-php) |
Testing (testing) |
A test suite that runs locally and catches regressions. |
– |
PHPUnit (recommended, php) |
Test Coverage (test-coverage) |
The share of the code the tests reach is measured and may not fall. |
Untested / hard-to-test |
Test Coverage Floor (recommended, php) |
Mutation Testing (mutation-testing) |
Small faults are planted in the code one at a time, and the tests must notice each: they are judged by what they catch, not by what they reach. |
Untested / hard-to-test |
Infection (on-request, php); Pest Mutation Testing (recognized, php) |
Static Analysis (static-analysis) |
A tool reads the code without running it and reports defects, at a level of strictness the project raises step by step. |
– |
PHPStan (recommended, php); Psalm (recognized, php); TwigStan (recommended, twig-php) |
Taint Analysis (taint-analysis) |
A tool follows data from untrusted input to dangerous operations. |
Security |
Psalm Taint Analysis (on-request, php) |
API Compatibility (api-compatibility) |
A check compares the code with the last release and fails on a break of what the project's BC promise covers. |
– |
Roave Backward Compatibility Check (recommended, php) |
Automated Refactoring (automated-refactoring) |
Rule sets rewrite code mechanically, one reviewable set at a time. |
– |
Rector (recommended, php) |
Code Smell Detection (code-smell-detection) |
A tool measures complexity and flags code that is hard to read. |
Understandability |
PHPMD (recommended, php) |
Secret Scanning (secret-scanning) |
Committed secrets and credentials are found before they ship. |
– |
Secret Detection (on-request, generic) |
Static Security Analysis (static-security-analysis) |
A rule-based scanner looks for common vulnerability patterns in the source. |
Security |
Semgrep (OWASP Top 10) (on-request, php) |