Tooling: Rollen, Tools und Packs

Wofür ein Tool da ist (Rollen), welche Tools sie spielen können, und die Packs, in denen die Tools kommen. Die Begriffe sind im Glossar der Suite definiert; die Regeln stehen in tooling-model.md.

Packs

Pack Gilt, wenn
generic Immer.
php Das Repository enthält PHP-Code: eine composer.json (oder composer/composer.json) oder mindestens eine *.php-Datei außerhalb von vendor/.
twig-php Das PHP-Pack gilt, und die composer.json (oder, bei einer indirekten Anforderung, die composer.lock) verlangt twig/twig oder ein Paket, das Twig mitbringt, etwa symfony/twig-bundle. Die Dateiendung der Templates entscheidet nicht.

Rollen

Rolle Zweck Signal Tools
Editor Settings (editor-settings) Die grundlegenden Formatierungskonventionen (Einrückung, Zeichensatz, Zeilenenden) sind einmal festgehalten, für jeden Editor. – .editorconfig (recommended, generic)
Continuous Integration (continuous-integration) Eine Pipeline, die die Qualitätsjobs bei jeder Änderung ausführt. – CI Runner (recommended, generic)
Package Management (package-management) Abhängigkeiten werden von einem Paketmanager deklariert und installiert. – Composer (recommended, php)
Autoloading (autoloading) Klassen werden über eine Konvention gefunden, nicht über von Hand geschriebene Includes. – PSR-4 Autoloading (recommended, php)
Code Style (code-style) Ein automatischer Fixer hält den Code in einem Stil, damit spätere automatisierte Umschreibungen formatiert ankommen. – 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) Eine Testsuite, die lokal läuft und Regressionen abfängt. – PHPUnit (recommended, php)
Test Coverage (test-coverage) Der Anteil des Codes, den die Tests erreichen, wird gemessen und darf nicht sinken. Untested / hard-to-test Test Coverage Floor (recommended, php)
Mutation Testing (mutation-testing) Kleine Fehler werden einzeln in den Code eingebaut, und die Tests müssen jeden bemerken: Sie werden danach beurteilt, was sie fangen, nicht danach, was sie erreichen. Untested / hard-to-test Infection (on-request, php); Pest Mutation Testing (recognized, php)
Static Analysis (static-analysis) Ein Tool liest den Code, ohne ihn auszuführen, und meldet Fehler, auf einer Strenge, die das Projekt Schritt für Schritt anhebt. – PHPStan (recommended, php); Psalm (recognized, php); TwigStan (recommended, twig-php)
Taint Analysis (taint-analysis) Ein Tool verfolgt Daten von nicht vertrauenswürdiger Eingabe bis zu gefährlichen Operationen. Security Psalm Taint Analysis (on-request, php)
API Compatibility (api-compatibility) Ein Check vergleicht den Code mit dem letzten Release und schlägt fehl, wenn etwas bricht, das das BC-Versprechen des Projekts abdeckt. – Roave Backward Compatibility Check (recommended, php)
Automated Refactoring (automated-refactoring) Regelsätze schreiben Code mechanisch um, ein reviewbarer Satz nach dem anderen. – Rector (recommended, php)
Code Smell Detection (code-smell-detection) Ein Tool misst Komplexität und markiert Code, der schwer zu lesen ist. Understandability PHPMD (recommended, php)
Secret Scanning (secret-scanning) Committete Secrets und Zugangsdaten werden gefunden, bevor sie ausgeliefert werden. – Secret Detection (on-request, generic)
Static Security Analysis (static-security-analysis) Ein regelbasierter Scanner sucht im Quellcode nach verbreiteten Schwachstellenmustern. Security Semgrep (OWASP Top 10) (on-request, php)