$30 off During Our Annual Pro Sale. View Details »

PHP Software quality tools

PHP Software quality tools

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.

Oliver Klee

July 28, 2022
Tweet

More Decks by Oliver Klee

Other Decks in Programming

Transcript

  1. P H P S O F T WA R E Q U A L I T Y T O O L S
    2 0 2 2 - 0 7 | O L I V E R K L E E | @ O L I K L E E | M A S T O D O N : O L I K L E E @ C H A O S . S O C I A L

    View Slide

  2. A B O U T M E
    Oliver „Oli“ Klee


    #bonn


    #typo3-extension-dev


    #workshop-teacher


    #unit-testing-guy


    #phpstan-guy


    #typo3-ombudsperson


    #typo3-quality-assurance-initiative


    #gamification-working-group


    #game-cooking


    #powermetal

    View Slide

  3. View Slide

  4. Get an overview over
    some tools for software
    quality in PHP and
    TYPO3 projects
    Find out how to decide
    which of these tools to
    use when.

    View Slide

  5. T H E R E A R E N O S T U P I D Q U E S T I O N S .

    View Slide

  6. C H E E S E

    View Slide

  7. T H E S W I S S C H E E S E M O D E L
    https://upload.wikimedia.org/wikipedia/commons/3/36/SwissCheese_Respiratory_Virus_Interventions-ver3.0.png

    View Slide

  8. T Y P E S O F C H E E S E F O R S O F T WA R E Q U A L I T Y
    static analysis (syntax, style, types …)


    dynamic tests (unit, functional, …)


    code reviews (by humans)

    View Slide

  9. C H O O S I N G T O 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.

    View Slide

  10. C L A S S E S O F T 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

    View Slide

  11. T Y P O 3 C O R E : C O D E R E V I E W S
    🏋 re v i e w

    by re a d i n g
    🏋 v e r if y

    by m a n u a l
    te st i n g

    View Slide

  12. T Y P O 3 C O R 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

    View Slide

  13. T Y P O 3 C O R E : 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

    View Slide

  14. T Y P O 3 C O R E : 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

    View Slide

  15. T Y P O 3 C O R E : 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

    View Slide

  16. T Y P O 3 C O R E : 🛠 H O M E G R O W N T O O L S
    Check Type Language/Tool
    🚀 PHPDoc annotation PHP
    🚀 PSR-4 namespaces PHP
    🚀 duplicate exception codes PHP

    View Slide

  17. T Y P O 3 C O R E : 🛠 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

    View Slide

  18. T Y P O 3 C O R E : 🛠 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

    View Slide

  19. T Y P O 3 C O R E : 🛠 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

    View Slide

  20. T Y P O 3 T E A E X 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

    View Slide

  21. T Y P O 3 T E A E X 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

    View Slide

  22. T Y P O 3 T E A E X 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

    View Slide

  23. H O N O R A B L E M 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

    View Slide

  24. H O N O R A B L E M 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

    View Slide

  25. H O N O R A B L E M 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

    View Slide

  26. H O N O R A B L E M 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

    View Slide

  27. H O N O R A B L E M 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

    View Slide

  28. T O B E T T E R S O F T WA R E !
    2 0 2 2 - 0 7 | O L I V E R K L E E | @ O L I K L E E | M A S T O D O N : O L I K L E E @ C H A O S . S O C I A L

    View Slide