Qui suis-je? - Développe depuis 2001 - Delphi, C++, C#, perl, PHP Mon histoire: - 8 ans dans la même cie - Code vieux de 6 ans - Changements ont des effets imprévisibles - Se croise les doigts avants de déployer - autre cie, code sniffer, mais jamais exécuté
Définition: - Intégration fréquente - Plus facile - Vérification automatique - Détecte les problèmes rapidement - Transparence
Sun jdk? Ubuntu/Debian -> apt-get RedHat/Fedora -> yum Windows -> setup.exe Mac -> .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 build
Analyse dynamique Analyse Statique
Analysise Dynamique Le plus important Tests unitaires Couverture de code avec Xdebug
pear config-set auto_discover 1
default basedir output build -> depends Ajouter tous les outils ici prepare/clean
Couverture par ligne
Nombre = tests qui couvre ligne
Standarts Document que persone ne lit
Fichier xml avec un standard
Projet existant -> Check only new errors Click sur un fichier ammene a l'erreur
Outil d'analyse statique Permet de détecter des problemes potentiels Complexité Noms Longueur
Ca - 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 Héritage ANDC -> The Average Number of Derived Classes AHH -> Average Hierarchy Height Taille et complexité Cyclomatic Complexity Coupling Fanout -> types référencé Calls -> method calls Abstraction Instability Chart Abstract -> many depends on it -> keep stable Concrete -> many dependencies -> unstable
Types: Code Size - Cyclomatic complexity - Méthode/classe trop longue - Trop de parametres Design - exit - eval - goto - coupling Naming - Nom variable/méthode court/long - Constructor name has class <> __construct Unsused code
Changer --min-tokens def: 70 --min-lines def: 5
Don't Repeat Yourself
Montrer Jenkins
Plugins installer command line
Avec CI on peut maintenant avoir confiance en nos changements