RootsLabs

More than a tool ! GitHub Google+ LinkedIn RSS

Utiliser Coveralls avec Github & Travis dans un projet PHP

Progi1984 - Commentaires (1)

Votre projet PHP est hébergé sur GitHub, et vous avez mis en place de l’intégration continue avec Travis-CI. Par contre, votre seul moyen actuellement de voir le taux de couverture de vos tests unitaires, c’est d’aller voir le build de Travis. Coveralls est la solution à notre problème. Ce service nous fournira un badge et un rapport des tests unitaires de notre projet.

Logo PHP

Activer son projet sur Coveralls.io

Après vous être connecté avec votre compte Github (et lui avoir donné accès à votre email), on va aller sur la page des dépôts pour autoriser Coveralls sur votre projet PHP. Après avoir activé Coveralls.io sur un dépôt, un bouton « View on Coveralls » apparaît.

Coveralls.io : autorisation sur un dépôt

En cliquant sur ce lien, Coveralls ne nous montre aucun rapport de couverture de code. Mais c’est normal vu qu’on ne l’a pas encore fait.

Utiliser Coveralls.io avec PHPUnit et Travis-CI

Il faut tout d’abord définir dans le composer.json de votre une librairie pour les développeurs :

"require-dev": {
    "satooshi/php-coveralls": "dev-master"
}

Ensuite il faut modifier le fichier .travis.yml pour y inclure certaines parties.
Tout d’abord, avant le script, on va créer un dossier pour les logs :

before_script:
  ## PHPUnit
  - mkdir -p build/logs

Dans le script, lorsque l’on va executer PHPUnit, on va lui demander de générer un rapport de couverture de type Clover :

script:
  ## PHPUnit
  - phpunit -c ./ --coverage-text --coverage-clover build/logs/clover.xml

Après le script, on va envoyer les données chez Coveralls.io :

after_script:
  ## Coveralls
  - php vendor/bin/coveralls -v

Utiliser Coveralls.io avec Atoum et Travis-CI

Pour Atoum, le principe est le même.

On utilise Composer pour installer le package satooshi/php-coveralls .
Dans le fichier .travis.yml, avant le script, on crée le dossier pour les logs.
La partie principale du script change. Vous devez ajouter à votre projet un fichier de configuration .atoum.php qui sera appelé par Atoum lors des tests pour générer un fichier de log clover.xml.

<?php

  use \mageekguy\atoum;

  $script->addDefaultReport();

  $cloverWriter = new atoum\writers\file('./build/logs/clover.xml');
  $cloverReport = new atoum\reports\asynchronous\clover();
  $cloverReport->addWriter($cloverWriter);

  $runner->addReport($cloverReport);

?>

Dans le script, on appelle le fichier de configuration :

script:
  ## Atoum
  - php mageekguy.atoum.phar -d tests/ -c .atoum.php

Après le script, on exécute Coveralls.io pour que les données soient envoyées chez Coveralls.io.

Conclusion

Et voilà, vos données sont envoyés chez Coveralls.io.
Des rapports sont mis à votre disposition (par exemple, pour PHPTranslate) avec le pourcentage de lignes couvertes en global ou par fichier, et même les lignes couvertes, l’évolution de la couverture du code sur le projet, l’affichage de l’augmentation ou de la baisse de couverture de code pour chaque nouveau commit.
Vous pouvez aussi récupérer des badges afin d’afficher le taux de couverture de code. Par exemple, avec PHPTranslate :
Coverage Status

Commentaires

1. RootsLabs » Utiliser Scrutinizer avec Github & Travis dans un projet PHP, le 12 mai 2014 à 10:30

[…] avoir utilisé Coveralls.io pour la couverture de code, on va utiliser Scrutinizer afin d’analyser tout un projet PHP. […]

Ajouter un commentaire

Commentaire :