Bien que le nombre de lignes de code ne signifie absolument rien à la qualité d'un projet, il peut être intéressant de le mesurer. PHPLOC ne se réduit pas à cette statistique, il permet d'avoir un retour sur la structure d'un projet PHP.
PHPLOC, auparavant intégré à PHPUnit et donc créé par Sebastian Bergmann, fournit également d'autres mesures spécifiques à PHP, telles que la complexité cyclomatique (algorithme déterminant la complexité d'un programme informatique), le nombre de classes, la longueur moyenne des classes, la longueur moyenne de la méthode, etc.
PHPLOC est un outil à utiliser en ligne de commande et est très simple à utiliser.
Son installation se fait via composer. Ajoutez le module dans les dépendances dev de votre projet :
composer require --dev phploc/phploc
Si vous n'avez pas composer sur votre ordinateur, vous pouvez récupérer le fichier .phar de PHPLOC comme décrit dans la documentation :
wget https://phar.phpunit.de/phploc.phar
chmod +x phploc.phar
mv phploc.phar /usr/local/bin/phploc
Pour l'utiliser, lancez cette commande où le dernier paramètre est le nom du répertoire à analyser :
vendor/bin/phploc src
Un rapport détaillé de votre projet est alors affiché :
phploc 4.0.1 by Sebastian Bergmann.
Directories 13
Files 32
Size
Lines of Code (LOC) 3215
Comment Lines of Code (CLOC) 1118 (34.77%)
Non-Comment Lines of Code (NCLOC) 2097 (65.23%)
Logical Lines of Code (LLOC) 659 (20.50%)
Classes 467 (70.86%)
Average Class Length 14
Minimum Class Length 1
Maximum Class Length 60
Average Method Length 2
Minimum Method Length 0
Maximum Method Length 20
Functions 0 (0.00%)
Average Function Length 0
Not in classes or functions 192 (29.14%)
Cyclomatic Complexity
Average Complexity per LLOC 0.15
Average Complexity per Class 4.06
Minimum Class Complexity 1.00
Maximum Class Complexity 16.00
Average Complexity per Method 1.63
Minimum Method Complexity 1.00
Maximum Method Complexity 9.00
Dependencies
Global Accesses 0
Global Constants 0 (0.00%)
Global Variables 0 (0.00%)
Super-Global Variables 0 (0.00%)
Attribute Accesses 172
Non-Static 171 (99.42%)
Static 1 (0.58%)
Method Calls 357
Non-Static 345 (96.64%)
Static 12 (3.36%)
Structure
Namespaces 14
Interfaces 0
Traits 0
Classes 32
Abstract Classes 0 (0.00%)
Concrete Classes 32 (100.00%)
Methods 154
Scope
Non-Static Methods 149 (96.75%)
Static Methods 5 (3.25%)
Visibility
Public Methods 119 (77.27%)
Non-Public Methods 35 (22.73%)
Functions 6
Named Functions 0 (0.00%)
Anonymous Functions 6 (100.00%)
Constants 6
Global Constants 0 (0.00%)
Class Constants 6 (100.00%)
Les informations parlent d'elles-même, inutile de les décrire.
Si vous souhaitez exclure certains répertoires de l'analyse de PHPLOC, cela est possible via l'option --exclude
:
vendor/bin/phploc src --exclude=node_modules