Détecter les copier-coller avec PHPCPD
PHP Copy-Paste Detector (PHPCPD) permet, comme son nom l'indique de détecter si du code PHP a été copié-collé à plusieurs endroits du projet. Ceci est généralement le signe d'une application mal conçue, ce qui fait de PHPCPD une aide précieuse pour estimer la qualité d'un application PHP.
L'installation se fait simplement grâce à PEAR :
sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover components.ez.no
sudo pear upgrade pear
sudo pear install phpunit/phpcpd
Et l'utilisation est tout aussi simple:
phpcpd /mon/projet/php
La version actuellement disponible souffre malheureusement d'un petit bug qui affiche des "PHP Notice: Undefined offset:...". Il est possible de le corriger en éditant manuellement le fichier /usr/share/php/PHPCPD/TextUI/Command.php et en remplaçant les lignes 247 et suivantes par :
$_files = array();
$i = 0;
foreach ($files as $file) {
$_files[$i] = explode(DIRECTORY_SEPARATOR, $file);
if (empty($_files[$i][0])) {
$_files[$i][0] = DIRECTORY_SEPARATOR;
}
$i++;
}
La description complète du bug et les solutions possibles sont discutées sur cette page :https://github.com/sebastianbergmann/phpcpd/issues/14.