dimanche 7 mars 2010
Cette semaine, j'ai finalisé un projet avant la livraison au client et lorsque j'ai un peu de temps devant moi, j'aime bien faire quelques vérifications sur la qualité. L'une d'elles est de vérifier l'ensemble du code source pour standardiser le style afin qu'il soit uniforme.
Par exemple, on a l'habitude de faire des redirections avec header('location: ...') et nous spécifions le chemin en commençant toujours par la racine /. Je l'avoue, ça m'arrive d'indiquer seulement le nom de page (page.php au lieu de /page.php).
Échantillon de code avec des syntaxes différentes :
header('location: /page.php');Pour palier à ça, je me suis imposé un peu de discipline. À l'aide d'une recherche dans l'ensemble du projet, on peut vérifier à quels endroits le slash est absent. Comme plusieurs éditeurs, NetBeans propose une recherche par expression régulière. Le but sera trouver tous les liens de redirection dont les pages ne débutent pas par /.
header('location : page.php');
header('location: page.php');
Dans l'éditeur NetBeans :
- Sélectionnez le répertoire "Source files" du projet (surtout si vous avez plusieurs projets ouverts en même temps)
- Ouvrez le menu Edit / Replace in projets (CTRL+MAJ+H)
- Entrez dans la case "Containing Text" : header\('location\s?: (?!(\/))
- Replace with : header\('location: \/
- Dans les options, cochez la case "Regular Expression"
- Choisissez le Scope "Selection (Source Files)"
- Cliquez sur le bouton "Find".
- Le panneau des résultats de la recherche apparaîtra. Vous pourrez visualiser les occurences à remplacer avant de procéder.
Le remplacement uniformisera les redirections comme ceci :
header('location: /page.php');Ce sera le même principe si vous exécutez le remplacement sur une page unique (CTRL+H) :
À propos de l'expression régulière
Si vous êtes familier avec les regex, vous n'aurez pas de difficulté à comprendre ce qui a été fait. Autrement, vous vous poserez peut-être la question à savoir ce que signifie la fin de l'expression avec ?!. Il s'agit d'un negative lookahead. Un lookahead sert à vérifier la présence d'une partie de l'expression sans toutefois la faire correspondre dans l'expression elle-même. Si on peut vérifier la présence du slash, on utilisera un positive lookahead (opérateur ?=) alors que pour s'assurer que l'expression n'est pas suivie du slash, ce sera avec un negative lookahead (opérateur ?!). Ici, comme le caractère recherché est le slash, nous sommes obligé de le préfixer avec le caractère d'échappement \ (comme dans \/).