This presentation gives an overview of many tools you can use to improve the software quality of PHP and TYPO3 projects. It also provides guidance on how to choose between the tools.
O L S F O R S O F T WA R E Q U A L I T Y M o re i s b ette r. D o n ot d u p licate. P H P S ta n v s. Ps a l m C h e ck w h at yo u h a v e. S te a l f ro m T Y P O 3.
O O L S F O R S O F T WA R E Q U A L I T Y 🚀 f i re a n d fo rg et exa m p le : P H P C S F i xe r 🐿 s lo w ly f i x e v e r y t h i n g exa m p le : P H P S ta n 🏋 co n sta nt ly d o it exa m p le : co d e re v i e w s 🛠 s e l f - m a d e
B U I L D M AT R I X A N D S Y S T E M CI runner GitLab CI PHP versions 7.4/8.1–8.2 test run order fixed, randomized Composer dependencies lowest, highest, locked DMBS MySQL, MariaDB, Postgres, SQLite
D Y N A M I C T E S T S Test Type Tool Language 🏋 unit tests PHPUnit PHP 🏋 functional tests PHPUnit PHP 🏋 acceptance tests (end-to-end tests) Codeception PHP
S TAT I C C O D E T O O L S Tool Type Tool Language 🚀 code autoformatter, style checker PHP CS Fixer PHP 🚀 IDE settings .editorcon fi g all 🚀 TYPO3 coding standards Composer package
S TAT I C C O D E T O O L S Tool Type Tool Language 🚀 syntax checker Lint: php -l PHP 🚀 style checker Stylelint SCSS 🚀 style checker ESLint TypeScript 🐿 type checker PHPStan PHP
🛠 H O M E G R O W N T O O L S Check Type Language/Tool 🚀 UTF-8 byte order marks (BOM) all text files 🚀 maximum file path length all files 🚀 git file permissions git 🚀 git submodules git
🛠 H O M E G R O W N T O O L S Check Type Language/Tool 🚀 ReST file structure ReST 🚀 extension scanner entries vs. changelog ReST 🚀 build & compare artifacts SCSS/CSS 🚀 build & compare artifacts TypeScript/JavaScript
🛠 H O M E G R O W N T O O L S Check Type Language/Tool 🚀 composer.json of monorepo vs. system extensions Composer 🚀 file indentation against .editorcon fi g HTML
A M P L E E X T E N S I O N : T O O L S Tool Type Tool Language/Ecosystem 🚀 CI runner GitHub Actions – 🚀 dependency updater Dependabot Composer, npm 🚀 TER release Tailor TER 🚀 Code coverage Coveralls PHPUnit
A M P L E E X T E N S I O N : T O O L S Tool Type Tool Language/Ecosystem 🚀 syntax & style JSON Lint JSON 🚀 syntax & style TypoScript Lint TypoScript 🚀 syntax & style YAML Lint YAML 🚀 syntax & style PHP_CodeSniffer PHP
A M P L E E X T E N S I O N : T O O L S Tool Type Tool Language/Ecosystem 🚀 syntax & style Prettier JavaScript 🚀 syntax & structure XLIFF Lint XLIFF 🚀 duplicate code PHPCPD PHP
E N T I O N S Tool Type Tool Language/Ecosystem 🐿 type schecker Phan PHP 🐿 type checker Psalm PHP 🐿 taint analysis (security) Psalm PHP 🐿 strict type checker 😉 strict rules PHPStan
E N T I O N S Tool Type Tool Language/Ecosystem 🐿 code metrics PHPMD PHP 🐿 mutation testing Infection PHPUnit 🐿 Fuzzing PHP Fuzzer PHPUnit 🐿 type checker PHP Inspections PhpStorm
E N T I O N S Tool Type Tool Language/Ecosystem 🚀 PHP compatibility compatibility rules PHP_CodeSniffer 🐿 auto-refactorings Rector PHP 🐿 TYPO3 upgrades TYPO3Scan TYPO3
E N T I O N S Tool Type Tool Language/Ecosystem 🏋 acceptance tests Cypress JavaScript 🏋 unit tests Cypress JavaScript 🏋 unit tests Jest JavaScript 🏋 BDD Behat PHP
E N T I O N S Tool Type Tool Language/Ecosystem 🚀 security Composer audit Composer 2.4 🚀 security npm audit npm 🐿 accessibility axe Chrome 🏋 performance Lighthouse Chrome