Code Coverage mit Travis CI und Code Climate

Nach einem tollen Beitrag von Matthias Zeis zum Thema Magento-Extensions mit Travis CI testen, habe ich das Ganze auch sofort für eines meiner Projekte auf GitHub ausprobiert. Und es hat sofort super funktioniert. Nach einiger Zeit habe ich den Dienst Code Climate für mich entdeckt - hier kann man seinen Code bewerten lassen, und auch die Code Coverage der Tests messen lassen.

Das funktioniert mit MageTestStand leider nicht out of the box. Daher musste ich einige Veränderungen vornehmen. Diese sind in dem webguys.de-Fork von MageTestStand zu finden. Folgende Änderungen habe ich durchgeführt:

MageTestStand

Zuerst wurde also das code-climate repo in die composer.json aufgenommen:

"require": {
    "aoepeople/composer-installers": "*",
    "ivanchepurnyi/ecomdev_phpunit": "dev-dev",
    "codeclimate/php-test-reporter": "dev-master"
}

Da man für code coverage xDebug benötigt, wurde dieses kurzerhand aktiviert. Dazu habe ich in der setup.sh folgende Zeile eingefügt:

echo "zend_extenstion = xdebug.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini

Weiterhin habe ich den Aufruf von phpunit angepasst, um code coverage zu aktivieren. Dies könnte man zwar auch über eine phpunit.xml.dist lösen, aber diese liegt eben im EcomDev_PHPUnit-Projekt. Leider brauchte ich für eine Whitelist der Code-Coverage eine eigene Datei im Projekt - dies möchte ich noch etwas angenehmer gestalten. Kann man diese nicht über die Kommandozeile hinzufügen? Fürs erste funktioniert es nun aber so:

cp ${WORKSPACE}/phpunit.xml.dist .
${BUILDENV}/bin/phpunit --coverage-clover ${BUILDENV}/build/logs/clover.xml --colors -d display_errors=1

Danach brauchen wir die Ergebnisse nur noch zu Code Climate exportieren und schon ist man fertig.

cd ${BUILDENV}
vendor/codeclimate/php-test-reporter/composer/bin/test-reporter --stdout > codeclimate.json
curl -X POST -d @codeclimate.json -H 'Content-Type: application/json' -H 'User-Agent: Code Climate (PHP Test Reporter v1.0.1-dev)' https://codeclimate.com/test_reports

Das zu testende Projekt

Hier muss man lediglich in seiner .travis.yml folgende Zeilen einfügen:

addons:
    code_climate:
        repo_token: 03942e903cbb........

Das Token bekommt man über die CodeClimate-Seite, indem man einfach auf "Code Coverage" klickt.

Und schon bekam ich am Ende ein Zahl von 0.4% für mein Projekt heraus. Gut, ich habe auch noch nicht sonderlich viele Tests geschrieben - aber das kann ich ja nun nachholen. Natürlich kann man sich (wie immer) auch ein schönes Badge in seine Readme packen, um damit zu beweisen, dass die Extension ausführlich getestet wurde. Denn ein grünes CI-Badge hat noch nicht viel zu sagen, wenn man einfach nur eine Zeile mit assertTrue(true) hinzufügt, sind die Tests schließlich auch grün...

Ich werde mich einmal mit Fabrizio in Verbindung setzen, um zu schauen, ob man das Ganze nicht in den Standard von MageTestStand integrieren könnte. Für mich ist die ganze Travis CI-Thematik noch recht neu, und ich glaube, dass ich noch viele Umwege gehe, die man einfacher lösen könnte.



Ein Beitrag von Matthias Kleine
Matthias's avatar

Matthias Kleine hatte Mitte 2012 die ersten Kontakte mit Magento - dies geschah durch die Anstellung bei der code-x GmbH als Softwareentwickler. Seit dem bildet er sich ständig im Bereich eCommerce fort, schreibt eigene Extensions und stellt diese gerne auch als OpenSource-Projekte auf GitHub zur Verfügung. Seit Ende 2013 wird Matthias auch im Verzeichnis der zertifizierten Magento-Entwickler gelistet. @klein0r

Alle Beiträge von Matthias

Kommentare
Magento-Neuigkeiten #33 am

[…] Kleine zeigte, wie man seinen Magento-Code mit Code Climate testen […]

Dein Kommentar