SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Outils de Qualimétrie
Open Source pour
PHP
Club Qualimétrie
15 janvier 2008
2Outils de Qualimétrie PHP Open Source 15/01/2008
Plan
• Les outils de qualimétrie
• Présentation des outils
– Vérification de règles
– Production de métriques
– Sécurité
• Synthèse
3Outils de Qualimétrie PHP Open Source 15/01/2008
Sélection d’outils abordés
• Vérification de règles
– PHPCheckstyle
– PHP-Sat
– PHP_CodeSniffer
– PHP_Beautifier
– PHPUnit
• Production de métriques
(statiques)
– Lint_php
– SLOCCOUNT
– PHPUnit
• Production de métriques
(dynamique)
– PHPUnit
– PHPCoverage
• Détection de vulnérabilités
(sécurité)
– Pixy
Vérification de règles
5Outils de Qualimétrie PHP Open Source 15/01/2008
Spike PHPCheckstyle
• Rules Checking PHP
– Equivalent de l’outil CheckStyle pour Java
• Avantages
– Facile à installer
– Règles de mise en forme, nommage, programmation et
PHPDoc
• Inconvénients
– Outil récent (version initiale sortie en Juillet 2005)
– Peu de feedback de la communauté Open Source
http://sourceforge.net/projects/phpcheckstyle
6Outils de Qualimétrie PHP Open Source 15/01/2008
Spike PHPCheckstyle : illustration
7Outils de Qualimétrie PHP Open Source 15/01/2008
PHP-sat
• Rules Checking PHP
– Analyse statique du code pour détection de « bugs-patterns »
• Correctness
• Exposing Info
• Optimization
• Style
• Malicious Code Vulnerability
– Met en forme le code automatiquement
– Permet également de détecter des failles de sécurité applicative
• injections SQL et XSS
• Avantages
– Couteau suisse
– Sensibilisation à la sécurité applicative
• Inconvénients
– Produit encore jeune (Google SoC 2006)
http://www.program-transformation.org/PHP/PhpSat
LGPL
8Outils de Qualimétrie PHP Open Source 15/01/2008
PHP_CodeSniffer
• Rules Checking PHP
– Détecte les violations de convention de codage
– Package du framework Pear
• Avantages
– Intégré au framework Pear
• Inconvénients
– Nombre de règle par défaut limité
– Obligation de personnalisation
• Plus un framwork qu’un outil
http://pear.php.net/package/PHP_CodeSniffer
9Outils de Qualimétrie PHP Open Source 15/01/2008
PHP_CodeSniffer : illustration
FILE: /chemin/du/code/myfile.php
--------------------------------------------------------------------------------
FOUND 5 ERROR(S) AND 1 WARNING(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
2 | ERROR | Missing file doc comment
20 | ERROR | PHP keywords must be lowercase; expected "false" but found | | "FALSE"
47 | ERROR | Line not indented correctly; expected 4 spaces but found 1
47 | WARNING | Equals sign not aligned with surrounding assignments
51 | ERROR | Missing function doc comment
88 | ERROR | Line not indented correctly; expected 9 spaces but found 6
--------------------------------------------------------------------------------
Exemple de Fichier résultat :
10Outils de Qualimétrie PHP Open Source 15/01/2008
PHP_Beautifier
• Mise en forme du code source PHP
– Met en forme le code source selon des conventions prédéfinies
– Package du framework Pear
• Avantages
– Intégré au framework Pear
– Fonctionne en ligne de commande
• Inconvénients
– Encore en version béta
• Un certain nombre de bugs recensés
http://pear.php.net/package/PHP_Beautifier
Production de
métriques
12Outils de Qualimétrie PHP Open Source 15/01/2008
Lint_php
• Calcul de métrique
– Permet de calculer la complexité cyclomatique de McCabe
– Outil utilisable en ligne
• Avantages
– Calcul fiable, algorithme disponible et modifiable
• Inconvénients
– N’analyse pas plusieurs fichiers en même temps
– Obligation de copier/coller le code
– Utilisation peu pratique
http://ars.altervista.org/lint_php/lint_php.php
GPL
13Outils de Qualimétrie PHP Open Source 15/01/2008
SLOCCount
• Calcul de métrique
– Permet de calculer le nombre de lignes de code (SLOC)
– Écrit à la base pour calculer le nombre de lignes de
code du noyau Linux
– Supporte bien plus que PHP
• Avantages
– Fiabilité du calcul
– Fonctionne sur de multiples langages en même temps
• Répartition par technologie
• Inconvénients
– Uniquement sur plate-forme Unix et apparentées
– Une seule métrique
http://www.dwheeler.com/sloccount/
GPL
14Outils de Qualimétrie PHP Open Source 15/01/2008
PHPUnit
• Calcul de métriques procédurales
– Framework pour l’écriture de tests unitaires
– Assure la mesure du taux de couverture des test
• eq. PHPCoverage
– La version 3.2 permet le calcul de métriques à différents
niveaux (projet, fichier, classe, méthode) tels que
• Ligne de codes (LOC)
• Ligne de commentaires (CLOC)
• Complexité Cyclomatique
• Et autres.
– Vérifications de règles type « PMD »
• Avantages
– Calcule un nombre important de métriques.
– Un seul outil pour toutes les métriques (contrairement à Java où
plusieurs outils sont nécessaires pour l’obtention des mêmes
métriques)
• Inconvénients
– Calcule les métriques uniquement pour les programmes testés.
• « Sans bonne couverture de code, les métriques ne seront pas
représentatives»
http://www.phpunit.de/
15Outils de Qualimétrie PHP Open Source 15/01/2008
PHPUnit : illustration
Exemple : code coverage
16Outils de Qualimétrie PHP Open Source 15/01/2008
Spike PHPCoverage : illustration
Détection de failles
dans la sécurité
18Outils de Qualimétrie PHP Open Source 15/01/2008
pixy
• Rules Checking PHP
– Permet de détecter des failles dans la sécurité de l’application
(injections SQL et XSS)
• Avantages
– Analyse le programme dans son ensemble
– Rapport documenté fournit après l’analyse
• Inconvénients
– N’analyse pas plusieurs fichiers en même temps.
– Écrit en Java pour analyser du PHP
http://pixybox.seclab.tuwien.ac.at/pixy/
19Outils de Qualimétrie PHP Open Source 15/01/2008
Résumé : outils pour Java/php
PHP-sat / PHP BeautifierIDEMise en forme
automatique
PHP-sat / PixyX
Sécurité
Applicative
PHPDocumentorJavadocDocumentation
PHPUnit / PHPCoverageCobertura/EmmaCouverture de test
PHPUnitJunitTests
CKJM / JDependXMétriques OO
PHPUnit / Lint_phpJavaNCSS / IDEMétriques
procédurales
MackerXRespect
architecture
PHP Checkstyle
PHP Unit / PHP-sat
Checkstyle / PMDRules Checking
PHPJavaPHPJava
OutilLangage
Domaine
≈

Contenu connexe

Similaire à 20080115 02 - Panorama des outils de recueil de métriques PHP Open Source

Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteStephane Couzinier
 
Le moteur exakat
Le moteur exakatLe moteur exakat
Le moteur exakatexakat
 
20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)LeClubQualiteLogicielle
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Gabriele Santini
 
10 02 authentification PAM
10 02 authentification PAM10 02 authentification PAM
10 02 authentification PAMNoël
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetFrédéric Vandenbriele
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !Lucian Precup
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erpJoubi Aaziz
 
2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec Powershell2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec PowershellPatrick Guimonet
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Deck seo campus 2011 utiliser les logs serveurs
Deck seo campus 2011   utiliser les logs serveursDeck seo campus 2011   utiliser les logs serveurs
Deck seo campus 2011 utiliser les logs serveursPhilippe YONNET
 
QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009Raphaël Semeteys
 
20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de testLeClubQualiteLogicielle
 

Similaire à 20080115 02 - Panorama des outils de recueil de métriques PHP Open Source (20)

Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Jenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverteJenkins - Les jeudis de la découverte
Jenkins - Les jeudis de la découverte
 
Cv hassen benabdelhafidh
Cv hassen benabdelhafidhCv hassen benabdelhafidh
Cv hassen benabdelhafidh
 
Le moteur exakat
Le moteur exakatLe moteur exakat
Le moteur exakat
 
20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)
 
Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010Suivi de qualité PIC afup2010
Suivi de qualité PIC afup2010
 
10 02 authentification PAM
10 02 authentification PAM10 02 authentification PAM
10 02 authentification PAM
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
Qualite1
Qualite1Qualite1
Qualite1
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erp
 
2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec Powershell2008-09-30 Administration automatisée avec Powershell
2008-09-30 Administration automatisée avec Powershell
 
[FR] Poster Cetsis 2014 - PLC Checker
[FR] Poster Cetsis 2014 - PLC Checker[FR] Poster Cetsis 2014 - PLC Checker
[FR] Poster Cetsis 2014 - PLC Checker
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Deck seo campus 2011 utiliser les logs serveurs
Deck seo campus 2011   utiliser les logs serveursDeck seo campus 2011   utiliser les logs serveurs
Deck seo campus 2011 utiliser les logs serveurs
 
QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009
 
20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test
 

Plus de LeClubQualiteLogicielle

20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOpsLeClubQualiteLogicielle
 
20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certificationsLeClubQualiteLogicielle
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
 
20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practices20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practicesLeClubQualiteLogicielle
 
20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle 20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle LeClubQualiteLogicielle
 
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...LeClubQualiteLogicielle
 
20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven developmentLeClubQualiteLogicielle
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?LeClubQualiteLogicielle
 
20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle 20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle LeClubQualiteLogicielle
 
20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impactLeClubQualiteLogicielle
 
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologieLeClubQualiteLogicielle
 
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...LeClubQualiteLogicielle
 
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...LeClubQualiteLogicielle
 
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...LeClubQualiteLogicielle
 
20130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 201320130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 2013LeClubQualiteLogicielle
 
20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBMLeClubQualiteLogicielle
 
20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...LeClubQualiteLogicielle
 
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
20130523 04 - Grille d'évaluation - Gestion du patrimoine de testLeClubQualiteLogicielle
 
20130523 02 - BREDForge foundations - Gense et perspectives
20130523 02 - BREDForge foundations -  Gense et perspectives20130523 02 - BREDForge foundations -  Gense et perspectives
20130523 02 - BREDForge foundations - Gense et perspectivesLeClubQualiteLogicielle
 

Plus de LeClubQualiteLogicielle (20)

20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
 
20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 
20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practices20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practices
 
20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle 20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle
 
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
 
20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle 20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle
 
20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact
 
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
 
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
 
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
 
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
 
20130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 201320130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 2013
 
20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM
 
20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...
 
20130523 05 - Cyclomatic complexity
20130523 05 - Cyclomatic complexity20130523 05 - Cyclomatic complexity
20130523 05 - Cyclomatic complexity
 
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
20130523 04 - Grille d'évaluation - Gestion du patrimoine de test
 
20130523 02 - BREDForge foundations - Gense et perspectives
20130523 02 - BREDForge foundations -  Gense et perspectives20130523 02 - BREDForge foundations -  Gense et perspectives
20130523 02 - BREDForge foundations - Gense et perspectives
 

20080115 02 - Panorama des outils de recueil de métriques PHP Open Source

  • 1. Outils de Qualimétrie Open Source pour PHP Club Qualimétrie 15 janvier 2008
  • 2. 2Outils de Qualimétrie PHP Open Source 15/01/2008 Plan • Les outils de qualimétrie • Présentation des outils – Vérification de règles – Production de métriques – Sécurité • Synthèse
  • 3. 3Outils de Qualimétrie PHP Open Source 15/01/2008 Sélection d’outils abordés • Vérification de règles – PHPCheckstyle – PHP-Sat – PHP_CodeSniffer – PHP_Beautifier – PHPUnit • Production de métriques (statiques) – Lint_php – SLOCCOUNT – PHPUnit • Production de métriques (dynamique) – PHPUnit – PHPCoverage • Détection de vulnérabilités (sécurité) – Pixy
  • 5. 5Outils de Qualimétrie PHP Open Source 15/01/2008 Spike PHPCheckstyle • Rules Checking PHP – Equivalent de l’outil CheckStyle pour Java • Avantages – Facile à installer – Règles de mise en forme, nommage, programmation et PHPDoc • Inconvénients – Outil récent (version initiale sortie en Juillet 2005) – Peu de feedback de la communauté Open Source http://sourceforge.net/projects/phpcheckstyle
  • 6. 6Outils de Qualimétrie PHP Open Source 15/01/2008 Spike PHPCheckstyle : illustration
  • 7. 7Outils de Qualimétrie PHP Open Source 15/01/2008 PHP-sat • Rules Checking PHP – Analyse statique du code pour détection de « bugs-patterns » • Correctness • Exposing Info • Optimization • Style • Malicious Code Vulnerability – Met en forme le code automatiquement – Permet également de détecter des failles de sécurité applicative • injections SQL et XSS • Avantages – Couteau suisse – Sensibilisation à la sécurité applicative • Inconvénients – Produit encore jeune (Google SoC 2006) http://www.program-transformation.org/PHP/PhpSat LGPL
  • 8. 8Outils de Qualimétrie PHP Open Source 15/01/2008 PHP_CodeSniffer • Rules Checking PHP – Détecte les violations de convention de codage – Package du framework Pear • Avantages – Intégré au framework Pear • Inconvénients – Nombre de règle par défaut limité – Obligation de personnalisation • Plus un framwork qu’un outil http://pear.php.net/package/PHP_CodeSniffer
  • 9. 9Outils de Qualimétrie PHP Open Source 15/01/2008 PHP_CodeSniffer : illustration FILE: /chemin/du/code/myfile.php -------------------------------------------------------------------------------- FOUND 5 ERROR(S) AND 1 WARNING(S) AFFECTING 5 LINE(S) -------------------------------------------------------------------------------- 2 | ERROR | Missing file doc comment 20 | ERROR | PHP keywords must be lowercase; expected "false" but found | | "FALSE" 47 | ERROR | Line not indented correctly; expected 4 spaces but found 1 47 | WARNING | Equals sign not aligned with surrounding assignments 51 | ERROR | Missing function doc comment 88 | ERROR | Line not indented correctly; expected 9 spaces but found 6 -------------------------------------------------------------------------------- Exemple de Fichier résultat :
  • 10. 10Outils de Qualimétrie PHP Open Source 15/01/2008 PHP_Beautifier • Mise en forme du code source PHP – Met en forme le code source selon des conventions prédéfinies – Package du framework Pear • Avantages – Intégré au framework Pear – Fonctionne en ligne de commande • Inconvénients – Encore en version béta • Un certain nombre de bugs recensés http://pear.php.net/package/PHP_Beautifier
  • 12. 12Outils de Qualimétrie PHP Open Source 15/01/2008 Lint_php • Calcul de métrique – Permet de calculer la complexité cyclomatique de McCabe – Outil utilisable en ligne • Avantages – Calcul fiable, algorithme disponible et modifiable • Inconvénients – N’analyse pas plusieurs fichiers en même temps – Obligation de copier/coller le code – Utilisation peu pratique http://ars.altervista.org/lint_php/lint_php.php GPL
  • 13. 13Outils de Qualimétrie PHP Open Source 15/01/2008 SLOCCount • Calcul de métrique – Permet de calculer le nombre de lignes de code (SLOC) – Écrit à la base pour calculer le nombre de lignes de code du noyau Linux – Supporte bien plus que PHP • Avantages – Fiabilité du calcul – Fonctionne sur de multiples langages en même temps • Répartition par technologie • Inconvénients – Uniquement sur plate-forme Unix et apparentées – Une seule métrique http://www.dwheeler.com/sloccount/ GPL
  • 14. 14Outils de Qualimétrie PHP Open Source 15/01/2008 PHPUnit • Calcul de métriques procédurales – Framework pour l’écriture de tests unitaires – Assure la mesure du taux de couverture des test • eq. PHPCoverage – La version 3.2 permet le calcul de métriques à différents niveaux (projet, fichier, classe, méthode) tels que • Ligne de codes (LOC) • Ligne de commentaires (CLOC) • Complexité Cyclomatique • Et autres. – Vérifications de règles type « PMD » • Avantages – Calcule un nombre important de métriques. – Un seul outil pour toutes les métriques (contrairement à Java où plusieurs outils sont nécessaires pour l’obtention des mêmes métriques) • Inconvénients – Calcule les métriques uniquement pour les programmes testés. • « Sans bonne couverture de code, les métriques ne seront pas représentatives» http://www.phpunit.de/
  • 15. 15Outils de Qualimétrie PHP Open Source 15/01/2008 PHPUnit : illustration Exemple : code coverage
  • 16. 16Outils de Qualimétrie PHP Open Source 15/01/2008 Spike PHPCoverage : illustration
  • 17. Détection de failles dans la sécurité
  • 18. 18Outils de Qualimétrie PHP Open Source 15/01/2008 pixy • Rules Checking PHP – Permet de détecter des failles dans la sécurité de l’application (injections SQL et XSS) • Avantages – Analyse le programme dans son ensemble – Rapport documenté fournit après l’analyse • Inconvénients – N’analyse pas plusieurs fichiers en même temps. – Écrit en Java pour analyser du PHP http://pixybox.seclab.tuwien.ac.at/pixy/
  • 19. 19Outils de Qualimétrie PHP Open Source 15/01/2008 Résumé : outils pour Java/php PHP-sat / PHP BeautifierIDEMise en forme automatique PHP-sat / PixyX Sécurité Applicative PHPDocumentorJavadocDocumentation PHPUnit / PHPCoverageCobertura/EmmaCouverture de test PHPUnitJunitTests CKJM / JDependXMétriques OO PHPUnit / Lint_phpJavaNCSS / IDEMétriques procédurales MackerXRespect architecture PHP Checkstyle PHP Unit / PHP-sat Checkstyle / PMDRules Checking PHPJavaPHPJava OutilLangage Domaine ≈