Project

General

Profile

Outils

Voici la description de quelques outils utilisés pour le développement. Si vous voulez apporter des modifications à GVV, ils peuvent vous faciliter la tâche.
Le projet n'impose aucun outil (seulement la qualité du résultat :)).

CodeIgniter

Le projet est développé avec un framework libre nommé CodeIgniter. Ce choix a conditionné toute l'architecture du logiciel. Quand j'ai commencé le développement, je me suis demandé s'il fallait investir du temps dans la maîtrise d'un framework PHP. J'ai trouvé celui-ci, qui se proclamait être un des plus simples, donc un des plus rapides à maîtriser. Je ne regrette pas mon choix. Non seulement CodeIgniter fournit tout en ensemble de services qu'il aurait fallu coder à la main ou aller chercher un peu partout sur Internet, mais il permet également une structuration du code très élégante.

L'environnement de développement Eclipse

On peut éditer le code PHP avec n'importe lequel éditeur de texte. Cependant l'environnement de développement intégré Eclipse avec son module PDT (PHP développement Tool) ainsi que son module Subclipse pour accéder à SVN est particulièrement confortable.

http://www.eclipse.org/

XDEBUG

Ce n'est utile que pour les développeurs sur un serveur local
http://www.xdebug.org/find-binary.php collez y le résultat de la page phpinfo. Suivre les instructions. Si vous avez téléchargé wamp, cette étape est inutile.

http://www.siteduzero.com/tutoriel-3-95248-php-utiliser-un-debogueur-pour-php-xdebug.html

Voici ma configuration C:\wamp\bin\apache\Apache2.2.21\bin\php.ini

[xdebug]
xdebug.remote_enable = On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.show_local_vars=1
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/wamp/tmp"

http://devzone.zend.com/article/2930 (lien cassé, mais il y a des choses intéressantes sur le site)
http://bogdan-albei.blogspot.com/2010/06/php-remote-debugging-with-xdebug-and.html

Configuration de XDEBUG sous Eclipse PDT

Suivez ces étapes:

  • Open your project in Eclipse PDT
  • In the main menu select Project->Properties
  • On the left side of the window select "PHP Debug" and then click on "Configure Workspace Settings"
  • On the "PHP Debugger" dropdown select Xdebug and click "Apply"
  • Click "Configure" to the right of Xdebug in the same window.
  • Select Xdebug and click "Configure".
  • On the "Accept remote session(JIT)" select "any" and click "OK". This is extremely important and this is where most people get stuck.

Téléchargez l'extension easy Xdebug sous Firefox.

After that you will notice a little green bug on the bottom-right of Firefox and if you hover it it says "Start xdebug session".

Now open the page that you want to debug, on the server where you have just configured PHP with the XDebug extension of course. Click on the green bug I just mentioned to enable debugging and then reload the page. After this you will have to go to Eclipse and see that a new window has just popped up, asking you to "Select the local resource that matches the following server path". In a simple setup you will have just a single option, select the PHP file in that window and click "OK". Eclipse will ask you if you want to change to "PHP Debug perspective" and obviously you have to say "Yes". Optionally you can also check "Remember my decision". After this you should be in the debugging perspective, with Eclipse stopped on the first line of your code, meaning that you can now step through your code.

PHPDoc

Outil de documentation automatique du code. Le code doit être commenté conformément aux conventions PHPDoc. On verra plus tard s'il est possible de mettre le résultat en ligne. Pour l'instant la documentation est générée sous le dossier de GVV et elle est accessible aux administrateurs.

http://www.phpdoc.org/

Notez que comme les fichiers sources doivent être encodé en UTF-8, il faut modifier les templates pour générer du HTML compatible. De cette façon les caractères accentués apparaissent correctement dans la documentation, les sources et à l'affichage.

Pour faire simple, j'utilise un script gvvdoc.bat que j'ai installé à la racine de phpdoc:

phpdoc -d E:\wamp\www\gvv2\application\controllers,E:\wamp\www\gvv2\application\libraries,E:\wamp\www\gvv2\application\helpers,E:\wamp\www\gvv2\application\models -dn GVV -t E:\wamp\www\gvv2\phpdoc -ti "Documentation API GVV" 

Il suffit de faire un double-clic sur le script pour générer la documentation des interfaces sous
http://localhost/gvv2/phpdoc/

PlantUML

L'architecture du programme est assez simple et elle est bien structurée par CodeIgniter. Dans la plupart des cas on trouve une table, un contrôleur, un modèle et quelques vues pour chaque fonction. Il n'y a donc que quelques points un peu plus complexes comme la facturation ou la gestion des méta-données qui méritent des explications de conception détaillées.

En conclusion, on a probablement pas besoin d'un outil de modélisation UML sophistiqué et PlantUML et probablement le moyen le plus rapide pour générer quelques diagrammes. http://plantuml.sourceforge.net/

Sélénium

Est un outil de test automatique. http://seleniumhq.org/

Les tests sont sous scripts/tests.

L'objectif est d'obtenir 100% de couverture de test fonctionnels automatisés. Sélénium semblait une bonne idée, parce qu'on peut créer un test en quelques minutes, juste en enregistrant une session. Cependant les tests Selenium s'avèrent difficiles à maintenir. Après l'adaptation de Junit pour gérer les vues, la plupart des tests ont arreté de fonctionner. Je suis en train de les remettre en place, mais en les structurant de façon différente pour éviter le même problème dans le futur. Pour l'instant j'essaye d'utiliser CIUnit, l'adaptation de phpunit pour CodeIgniter. Un de ses avantages et le support très facile pour la mesure de couverture.

Les outils d'analyse statique

A mettre en place progressivement. C'est toujours pratique pour un développeur d'avoir quelques indicateurs sur son code. Je m'en sert entre autres pour savoir si les opérations de changement d'architecture "refactoring" sont efficaces.

Jenkins et intégration continue

Le projet va progressivement s'organiser sous Jenkins. C'est un robot qui détecte les changements dans le dépôt de gestion de configuration et lance:
  • les outils d'analyse statiques du code
  • La génération de la documentation des interfaces
  • Les test unitaires

Il peut également être utilisé pour publier les résultats sur Internet et installer une version de démonstration.

Outils de gestion de la qualité

  • phpdoc Génération de la documentation du code (pas de la documentation utilisateur)
  • PHPUnit outil de test unitaire
  • pdepend: calcul de métriques
  • PHPMD analyse statique de code pour détecter les problèmes potentiels.
  • PHP Code_Sniffer autre analyseur statique de code, il vérifie des règles de codage.
  • Phpcpd recherche des copier/collers.

On peut les installer tous sous eclipse depuis http://www.phpsrc.org/eclipse/pti/