Kanti's Blog

Der "PHP Freak"

Was ist GrumPHP? und wie setzt man es ein?

- Posted in PHP by

GrumPHP überprüft unsere Git commits bevor wir sie machen. GrumPHP kann überprüfen

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

  1. grumphp.yml nicht im root liegen haben:
    • man kann in die composer.json ein extra eintragen.
  2. 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.
  3. 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.