Vérification de syntaxe lors d'un commit SVN

Lorsque l’on travaille en équipe avec subversion le commit d’un fichier PHP syntaxiquement incorrect ne devrait jamais arriver, mais pourtant une erreur est vite arrivée. C’est pour cela, que j’ai configuré svn pour qu’il refuse les commit de fichier PHP avec des erreurs de syntaxe.

Pour cela on va utiliser l’option -l de PHP qui permet de vérifier la syntaxe.

Subversion possède un système de hook permettant de se brancher à diverses étapes d’une opération. Le hook qui nous intéresse est celui de pre-commit. Il se situe après le start-commit qui permet de verifier qu’une personne a le droit de commiter et avant le post-commit qui est lancée une fois que la révision a été ajoutée au SVN.

Un hook est un programme (un script shell suffit) qui reçoit de SVN des arguments en ligne de commande et qui renvoi le code d’erreur 0 en cas de succés et 1 sinon.

#Le hook de pre-commit Pour créer un hook de pre-commit allez dans le répertoire hooks de votre SVN sur le serveur et créez un fichier pre-commit avec les droits d’exécution.

Voici le contenu du fichier pre-commit pour la vérification de la syntaxe PHP:

#!/bin/sh

REPOS="$1"
TXN="$2"

changed=`$SVNLOOK changed -t "$TXN" "$REPOS"`
phpfile=`echo $changed | awk '*print $2*'`
if echo $phpfile | grep .php
then
    $SVNLOOK cat -t "$TXN" "$REPOS" "$phpfile" | php -l
    if [ $? -ne 0 ]
        then
        echo "Syntax error in $phpfile." 1>&2
        exit 1
    fi
fi

# All checks passed, so allow the commit.
exit 0

Installation de Phing sous Windows

Phing est un équivalent à make pour PHP il permet de créer facilement des scripts pour lancer phpDocumentor, PhpUnit… Le but de cet article est d’expliquer comment l’installer sous Windows. Le serveur PHP installé sur ma machine est un WAMP.

#Installation de PEAR Commencez par lancer cmd et tapez pear.

Si vous obtenez ce message:

'pear' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

Lisez la suite sinon sautez à la partie Téléchargement de Phing via PEAR.

Il nous faut donc installer PEAR.

Dans cmd tapez php.

Si vous obtenez ce message:

'php' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

Tapez cette commande pour ajouter le répertoire où ce trouve *php.exe* au path:

*

set PATH=%PATH%;C:\wamp\php

*

Ensuite placez dans le répertoire où ce trouve le fichier go-pear.phar et tapez: *

php go-pear.phar

*

Appuyez sur entrée à chaque étape, puis lancez le fichier .reg généré.

On va ajouter PEAR au PATH de Windows:

set PATH=%PATH%;C:\wamp\php\PEAR

Désormais si vous tapez pear vous aurez la liste des commandes disponible.

#Téléchargement de Phing via PEAR L’installation est très simple il suffit d’utiliser ces deux commandes:

pear channel-discover pear.phing.info
pear install phing/phing

Tapez phing et vous devriez avoir ce message: *

Buildfile: build.xml does not exist!

*

Si c’est le cas tout va bien. La dernière chose qu’il vous reste à faire est de sauvegarder tous les changements de variables d’environnement que vous avez fait. En effet les changements effectué avec SET ne sont valable que pour la session en cours.

Pour rendre les changements permanent vous devez modifier vos variables d’environements via:

  • Clic droit sur poste de travail
  • Propriétés
  • Avancés
  • Variable d’environnement
  • Dans la deuxieme liste modifier la varaiable path pour y ajouter les deux chemins.

http://phing.info

Installer PHPUnit 3.0 via PEAR

La première chose à faire est de désintaller les ancienne versions:

pear uninstall phpunit2
pear uninstall phpunit

Ensuite on ajoute le channel officiel de PHPUnit:

pear channel-discover pear.phpunit.de

Puis on installe PHPUnit 3.0:

pear install --alldeps phpunit/PHPUnit

Attention dans les dépendances PHP 5.1.4 est requis. Vous pouvez forcer l’installation (à vos risques et périls):

pear install --alldeps --ignore-errors phpunit/PHPUnit

Traduction du Zend Framework

Désormais la traduction du manuel du Zend Framework auquel j’ai participé est disponible sur le site officiel du framework: http://framework.zend.com/manual/fr/index.html