Click here to load reader
View
1.279
Download
1
Embed Size (px)
Intgration ContinueAvec JenkinsEric Hogue
Qu'est ce que l'intgration Continue?
Installer ant et Jenkinssudo apt-get install default-jdk antSuivre les instructions sur le site de jenkinsInstaller les pluginsGit PluginGithub PluginGreen Balls
Les outils
PHPUnit
Installationsudo apt-get install php5-xdebugphp-pearsudo pear upgrade pearsudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear channel-discover pear.symfony-project.comsudo pear install phpunit/PHPUnit
phpunit.xml
.
build.xml
Plugin xUnitRsultats des tests unitaires
PluginClover PHPRapports sur la couverture des tests
PluginClover PHP
PHP Code Sniffer
sudo pear install PHP_CodeSnifferInstallation:build.xml
PluginCheckstyle
PHP Depend
sudo pear channel-discover pear.pdepend.orgsudo pear install pdepend/PHP_Depend-betaInstallation:build.xml
Plugin JDepend
PHP Mess Detector
sudo pear channel-discover pear.phpmd.orgsudo pear channel-discover pear.pdepend.orgsudo pear install --alldeps phpmd/PHP_PMDInstallation:build.xml
Plugin PMD
PHP Copy/Paste Detector
sudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear install phpunit/phpcpdInstallation:build.xml
Plugin DRY
Template for Jenkins Jobs for PHP ProjectsBySebastian Bergmann
http://jenkins-php.org/Tout ce qu'il faut pour un projet PHP
Les plugins ncessairesUn fichier build.xmlUn template pour JenkinsPHP Project Wizard (PPW)
Autres possibilitsPhing/RakeAutres tests (Selenium, Behat)Dployement automatique/continue...
Questions?GitHub:https://github.com/EricHogue/SlideShare:http://www.slideshare.net/EricHogue
Blog: http://erichogue.ca/Twitter: @ehogueEmail: phpquebec@erichogue.caLinkedIn http://ca.linkedin.com/in/ehogue
Contact:
Qui suis-je?- Dveloppe depuis 2001- Delphi, C++, C#, perl, PHP
Mon histoire:- 8 ans dans la mme cie- Code vieux de 6 ans- Changements ont des effets imprvisibles- Se croise les doigts avants de dployer- autre cie, code sniffer, mais jamais excutDfinition:- Intgration frquente - Plus facile- Vrification automatique- Dtecte les problmes rapidement- Transparence
Sun jdk?
Ubuntu/Debian -> apt-getRedHat/Fedora -> yumWindows -> setup.exeMac -> .pkg- Configurer Git (svn, mercurial...)- Branche -> blank pour toutes- Poll SCM Every Minute- Configurer ant (maven, shell script, windows batch)- Notification, toujours au lead, plus celui qui brise le buildAnalyse dynamiqueAnalyse StatiqueAnalysise Dynamique
Le plus important
Tests unitaires
Couverture de code avec Xdebugpear config-set auto_discover 1defaultbasediroutput
build -> dependsAjouter tous les outils ici
prepare/cleanCouverture par ligne
Nombre = tests qui couvre ligneStandartsDocument que persone ne litFichier xml avec un standardProjet existant -> Check only new errors
Click sur un fichier ammene a l'erreurOutil d'analyse statique
Permet de dtecter des problemes potentiels
ComplexitNomsLongueurCa - Afferent Couplings:The number of other packages that depend on this
Ce - Efferent Couplings:The number of other packages that classes from this package depend upon
Instability: Ratio of coupling(Ce / (Ce + Ca))
Abstraction: Ratio of abstract and concrete classes(ac / (ac + cc))
D => Distance
V=> Volatility
Hritage
ANDC -> TheAverage Number of Derived ClassesAHH ->Average Hierarchy Height
Taille et complexitCyclomatic Complexity
CouplingFanout -> types rfrencCalls -> method calls
Abstraction Instability ChartAbstract -> many depends on it -> keep stable
Concrete -> many dependencies -> unstable
Types:
Code Size- Cyclomatic complexity- Mthode/classe trop longue- Trop de parametres
Design- exit- eval- goto- coupling
Naming- Nom variable/mthode court/long- Constructor name has class __construct
Unsused code
Changer--min-tokens def: 70--min-lines def: 5
Don't Repeat YourselfMontrer JenkinsPlugins installer command lineAvec CI on peut maintenant avoir confiance en nos changements