GrumPHP überprüft unsere Git commits bevor wir sie machen. GrumPHP kann überprüfen
- ob deine composer.json und composer.lock Unregelmäßigkeiten enthalten. (composer)
- ob in deinen PHP dateien ein bestimmter Codeing Standard eingehalten wird.(phpcs, phpcsfixer)
- ob in deinem Projektcomposer packages enthalten sind die Sicherheitslücken aufweisen. (securitychecker)
- ob die Commit Message im gewünschten format ist. (git_commit_message)
- ob verbotene text schnipsel im Code enthalten sind (git_blacklist)
- ob json, yml oder xml richtig formatiert sind. (xmllint, yamllint, jsonlint).
- zusätzlich kann man noch Task runner ausführen (gulp, grunt, robo)
- oder Test Frameworks (phpunit, phpspec, behat, ant, codeception)
- Wem das Alles nicht reicht, der kann auch schell commands ausführen lassen oder selber einen Task anlegen. Hier gibt es ein Beispiel von mir grumphp-bom-task.
Wie setzt man GrumPHP ein?
Nehmen wir an das wir ein Kleines PHP projekt haben, dieses setzt schon auf composer.
Wir wollen nun sicherstellen das jeder der code committed den Schönen PSR-2 CodeStyle einhält. (man kann auch jeden anderen CodeStyle enforcen den phpcs erlernt hat.) Dazu müssen wir in der composer.json folgendes Eintragen:
"require-dev": {
"phpro/grumphp": "0.*"
"squizlabs/php_codesniffer": "2.*"
}
Danach noch composer update
ausführen und wir sehen schon die drohend aussende Meldung.
Watch out! GrumPHP is sniffing your commits!
Wenn wir diese nicht sehen können ist etwas schief gelaufen. Dann am Besten bei den Issues nachschauen ob schon mal jemand einen solchen Fehler hatte.
Wenn nicht kann man auch ein neues Issue erstellen.
Nun ist grumphp und phpcs in unser Projekt installiert.
Wir können sie nun direkt aufrufen über ./vendor/bin/grumphp
oder ./vendor/bin/phpcs
.
Wenn wir nun ./vendor/bin/grumphp run
eingeben wird jede Datei aus unserem Git repository überprüft.
Hierzu wird die grumphp.yml Datei im Root Verzeichnis genutzt. In der können wir genau definieren was GrumPHP überprüfen soll. Hier mal meine Beispiel Datei:
parameters:
git_dir: .
bin_dir: vendor/bin
tasks:
composer: ~
yamllint: ~
jsonlint: ~
xmllint: ~
phpcs:
standard: PSR2
show_warnings: false
phpcsfixer:
level: psr2
verbose: true
Wenn wir diese grumphp.yml nutzten und all unsere Tests positiv verlaufen wird der output so aussehen:
$ ./vendor/bin/grumphp run
GrumPHP is sniffing your code!
Running task 1/6: Composer
Running task 2/6: JsonLint
Running task 3/6: Phpcs
Running task 4/6: PhpCsFixer
Running task 5/6: XmlLint
Running task 6/6: YamlLint
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▄▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▄▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▄▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▀█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▌
▀▀▓▓▓▓▓▓▓▓▓▓▓▓█▀▀▀▀▀▀▀▀▀▀▀▀▀▀████████████▄
▄████████▀▀▀▀▀ ██████████
███████▀ ██████▀
▐████ ██▌ ██ ████▌
▐█▌ ███
█▌ ▄▄ ▄▄ ▐███
███ ▄▄▄▄▄▄▄▄▄▄▄▄ ▐███
██▄ ▐███████████████████████████
█▀█████████▌▀▀▀▀▀▀▀▀▀██████████▌▐
███████████▄▄▄▄▄▄▄███████████▌
▐█████████████████████████████
█████████████████████████████
██ █████████████████████▐██▀
▀ ▐███████████████████▌ ▐▀
████▀████████▀▐███
▀█▌ ▐█████ ▐█▌
██▀ ▐▀
_ _ _ _ _
/ \ | | | __ _ ___ ___ __| | |
/ _ \ | | | / _` |/ _ \ / _ \ / _` | |
/ ___ \| | | | (_| | (_) | (_) | (_| |_|
/_/ \_\_|_| \__, |\___/ \___/ \__,_(_)
|___/
Tipps und Tricks
- grumphp.yml nicht im root liegen haben:
- man kann in die composer.json ein extra eintragen.
- ich will nicht das grumphp und phpcs auf meinem Live System installiert werden wenn ich dort
composer install
eingebe.- Das werden sie nicht wenn man
composer install --no-dev
eingibt.
- Das werden sie nicht wenn man
- ich mag nicht den komischen Typen mit Hut der mich ansieht.
- man kann das Bild für Error und Success austauschen. Wie ihr das macht findet Ihr hier ganz unten
Wenn ihr fragen zu GrumPHP habt könnt ihr mir gerne Mailen oder unten in die Kommentar box etwas schreiben.