L'analyse de code PHP se fait le plus souvent manuellement : il faut lire le code pour le comprendre.
L'analyse statique permet d'aller plus vite, et dans tous les recoins de l'application : elle travaille sans se lasser, exhaustivement, mais sous direction.
Durant la session, nous mettrons en place un analyseur statique pour PHP, pour détecter automatiquement l'arbre des inclusions, les arguments jamais utilisés, les affectations de GPC, et produire un inventaire à la Prévert du code.
Organiser efficacement son depot de code par Jean Marc Fontaine
Auditeur statique PHP
1. C r p r PHP
Auditeur statique de code PHP
jeudi 10 mars 2011
2. A
• Qu’est-ce que Cornac?
• Application et résultats
• Comment améliorer la qualité du code
jeudi 10 mars 2011
3. Q p r ?
• Damien Seguy
• Consultant à Alter way Consulting,
Alter Way Group
• Industrialisation, expertise LAMP
• damien.seguy@alterway.fr
jeudi 10 mars 2011
10. C r
• Auditeur statique
• Analyse le code PHP sans l’exécuter
• Scrute une application dans son
ensemble
jeudi 10 mars 2011
11. N p f r
• Xdebug
• xdebug exécute le code
• grep
• grep ne comprend pas la sémantique PHP
• CodeSniffer
• CodeSniffer applique des conventions de
codage
jeudi 10 mars 2011
12. A f r
• PMD
• PHP Mess Detector
• PHP_Depends
jeudi 10 mars 2011
13. L PHP
• Véritable liste des extensions
• Pratique pour les déploiements
• Aimé par les hébergeurs
jeudi 10 mars 2011
14. A r q
• Traite de grosses quantités de code
• Traite de manière répétitive
• Dépend de l’expérience d’auditeur
• Automatise les recherches
• Systématise les recherches
• Produit beaucoup de faux positifs
jeudi 10 mars 2011
32. R ’
• include*, require*
• Ignore les variables
• Les cercles sont les
fichiers
• Les flèches indiquent
l’inclusion
jeudi 10 mars 2011
33. R ’
• Inclusions uniques
• Inclusions multiples
• Inclusions d’inclusions
• Inclusions doubles
jeudi 10 mars 2011
34. U
• Lien entre la définition
d’une constante et son
utilisation
• Les constantes sont
utilisées dans leur
fichier de définition
• Sauf une
jeudi 10 mars 2011
35. Ap rç ’ b
• Affichage global
• Pas d’analyse détaillée
jeudi 10 mars 2011
36. H r r
• Version DOT
• Peu d’extensions
• Où est la classe db?
jeudi 10 mars 2011
37. H r r
• Exemple de dotclear
jeudi 10 mars 2011
42. R C r
• Cornac utilise le tokenizer de PHP
• Il ajoute une couche de détection des
structures complexes
• Il se débarrasse des éléments de syntaxe
• {} [] () ; , ‘’ «»
jeudi 10 mars 2011