Continuous Integration für PHPDer heilige Gral der Codequalität?
1
Vorstellung
o Sebastian Bauer
o SCRUM Master
o LOTUM GmbH
o Bad Nauheim, bei Frankfurt/Main
o Unsere Ideen -‐> unsere Projekte!
o @litervollmilch / blog.gjl-‐network.net
2
CONTIN..-‐WHAT?!
3
4
5
„You cannot controlwhat you cannot measure“
-‐ Tom DeMarco
6
AGILE PRINZIPIEN
7
FRÜHE INTEGRATION
8
9
Kernbestandteile von CI
o Automatisierte Tests
o Statische Code-‐Analyse
o Compilierung des Codes
o Generierung derDokumentation
10
Und womit macht man das?
11
Jenkins (Hudson)
CruiseControl
Atlassian
12
UND WIE SIEHT‘S AUS MIT ...
PHP_Depend
PHPMD
PHP Unit
PHPDoc
Syntax
PHP_CodeSniffer
CRAP
Code Coverage
13
Unit Tests mit PHP Unit
o Unit Tests wichtigster und elementarer Bestandteil!
o Code Coverage messen
o Broken Tests sofort fixen!
o Test it right!
14
Tests mit Selenium
o Testen von UI Funktionalität
o Mit verschiedenen Browsern
o Ermöglicht Browser-‐Kompatibilität abzudecken
15
Statische Code-‐Analyse mit PHP_Depend
o Umfangsmetrikeno LOC -‐ Lines of Codeo CLOC -‐ Comment Lines of Codeo ELOC -‐ Executable Lines of Code
o Komplexitätsmetrikeno CCN -‐ Zyklische Komplexitäto NPath Komplexität
o OO-‐Metrikeno Code Ranko Chidamber & Kemerer (WMC, DIT, NOC, . . . )
16
PHP_CodeSniffer
o Coding Standard Validierung
o PHP, JavaScript, CSS
o Regelsets:o PEARo Zendo Squizo . . .o
17
PHP_CodeSniffer
o Sniffs z.B. für:o Tabs/Spaces Policyo Naming Conventions (PASCAL/Camel-‐Casing usw)o Code Indentiono Klammersetzungo Platzierung von Operatoreno . . .
18
PHP_CodeSniffer
o Um eigene Sniffs erweitern:o Debug Code findeno Verwendung von Deprecated Codeo . . .o Alles ist möglich ;)
19
20
IMMER AUF VOLLGAS?
Builds nach Commit
21
Automatischer Build
• Unit Tests• Syntax Tests• Coding Standards• Copy/Paste Detection• Dokumentation• ...
Niemand wartet gerne!
22
Automatischer Build
• Unit Tests• Syntax Tests• Coding Standards• Copy/Paste Detection
Täglicher Build
• Unit Tests• Syntax Tests• Coding Standards• Copy/Paste Detection• + Dokumentation• + sonstige Intensivere Tests
23
ALSO ALLES COOL?
Einführung mit Bedacht
o Neue Projekte -‐> kein Problem
o Legacy Code -‐> tausende Violations
o Neue Fehler gehen unter / werden ignoriert
o Lösung:o alte Violations fixeno getrennte Tests für Legacy Code / modifizierte Dateien
24
25
FAZIT?
Fazit
o CI ist extrem wichtig
o Spart Zeit!
o Spart Kosten!
o Erspart viel Frust
o Verringert Risiko
o Gibt ein gutes Gefühl :)
26
Fazit
o CI System hinstellen reicht nicht
o Konzept für Projekt benötigto Welche Checks zu welcher Zeit?o Richtige Metriken messen UND überwachen
o CI muss „gelebt“ werden
o Auftretende Probleme müssen angegangen werden
27
DAS WAR‘S!Fragen?
28
Rocke mit uns das Web!www.lotum.de/jobs