PHPMD

PHP Mess Detector

https://phpmd.org

1. Qu’est-ce que c’est ??

Il s’agit d’un programme qui va scanner le code PHP à la recherche d’erreurs de codage, de design (classe beaucoup trop grosse), de naming (noms de variable/fonction n’étant pas camelCase), usage de variables statiques, de variables non utilisées, ...

phpmd va générer un log qu’on peut consulter au format text, html ou xml.

2. Installation

Le plus simple : cloner le dépôt git https://github.com/phpmd/phpmd càd lancer GitHub Desktop (GHD) et drag&drop de l’URL du dépôt dans GHD afin de récupérer le dépôt en local.

Plus d’infos : From the github repository

En bref :

Il reste à configurer Windows (PATH) et à modifier un fichier :

rappel : quand on a déjà une session prompt ouverte, il faut la fermer et en ouvrir une autre pour que le nouveau Path soit pris en compte

Le fichier gulp pourrait être :

// Process PHP Mess Detector, read more on https://phpmd.org/

var gulp      = require('gulp');
var shell     = require('gulp-shell');

var config    = require('../config').phpmd;
var settings  = require('../config').settings;

gulp.task('phpmd', function () {

   if (config.doit===false) return;

   console.log('\n████████████████████████████████████████████████████████████████████████████')
   console.log('█ PHP Mess Detector - Results have been outputted in the /log folder       █');
   console.log('█                   exit code 2 : errors have been found                   █');
   console.log('████████████████████████████████████████████████████████████████████████████\n')

   return gulp.src(config.src, {read: false})
      .pipe(shell([
         //'mkdir ' + config.log,
         'phpmd ' + 
            config.src +   // Folder to scan
            ' html'+       // Output : html (can be text or xml)
            ' codesize,unusedcode,naming,design,cleancode,controversial' + // Check to fire (see https://phpmd.org/rules/index.html)
            ' --exclude ' + config.exclude +    // Exclude folders
            ' --reportfile ' + config.log + '/phpmd.html' // Output the log into the /logs/phpmd.html file
      ]))

})

config.src serait le dossier à scanner, config.log le dossier où stocker le log de l’application et config.exclude un pattern qui permettrait d’ignorer certains fichiers :

config.src='C:\Christophe\Repository\markdown\dist',
config.log='C:\Christophe\Repository\markdown\log',
config.exclude='*\libs\*'