Ainsi, elle ne fournit aucune information sur la signification des valeurs du tableau renvoyé par xdebug_get_code_coverage(), notamment lorsque la couverture de code a été demandée via xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE).

Pour l'exemple, voici un tableau pouvant être retourné par  xdebug_get_code_coverage() :

array(
'/path/to/file' => array(
5 => int -1
6 => int -1
7 => int -1
9 => int -2
10 => int -1
11 => int 1
12 => int 1
13 => int -2
15 => int 1
16 => int -1
18 => int -1
)
)

S'il est relativement évident que les clefs correspondent aux numéros des lignes du fichiers, les valeurs -2, -1 et 1 m'ont laissé dans l'expectative la plus complète.

J'ai donc demandé les informations nécessaires à Derick Rethans, l'auteur de Xdebug, via IRC, et voici les explications manquantes :

  • Une valeur à -2 indique que la ligne correspondante contient du code mort, c'est à dire qu'il ne sera jamais exécuté par PHP, comme par exemple une accolade fermante après un appel à l'instruction return.
  • Une valeur à -1 indique que la ligne correspondante contient du code exécutable, mais qu'elle n'a pas été exécutée.
  • Une valeur à 1 indique que la ligne correspondante a été exécutée.

Évidemment, la documentation de Xdebug devrit être prochainement mise à jour avec ces informations.

Et pour ceux qui se poserait la question, je n'ai encore aucune explication au sujet du fait qu'un appel à require('php://temp') empêche PHPUnit de faire son rapport de couverture de code correctement.