SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
Continuous	
  Integration	
  für	
  PHP
          Der	
  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
„You	
  cannot	
  control
what	
  you	
  cannot	
  measure“
                      	
  -­‐	
  Tom	
  DeMarco

            5
AGILE	
  PRINZIPIEN



   6
FRÜHE	
  INTEGRATION




     7
8
9
Kernbestandteile	
  von	
  CI

o   Automatisierte	
  Tests
o   Statische	
  Code-­‐Analyse
o   Compilierung	
  des	
  Codes
o   Generierung	
  der
    Dokumentation




                                   10
Und	
  womit	
  macht	
  man	
  das?



Atlassian


                                Jenkins	
  (Hudson)




               CruiseControl
                        11
UND	
  WIE	
  SIEHT‘S	
  AUS	
  MIT	
  ...




                      12
PHPDoc
              Syntax
CRAP                            PHP	
  Unit

   Code	
  Coverage

                              PHP_Depend
PHPMD

                      PHP_CodeSniffer

                       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   Umfangsmetriken
    o   LOC	
  -­‐	
  Lines	
  of	
  Code
    o   CLOC	
  -­‐	
  Comment	
  Lines	
  of	
  Code
    o   ELOC	
  -­‐	
  Executable	
  Lines	
  of	
  Code

o   Komplexitätsmetriken
    o   CCN	
  -­‐	
  Zyklische	
  Komplexität
    o   NPath	
  Komplexität

o   OO-­‐Metriken
    o   Code	
  Rank
    o   Chidamber	
  &	
  Kemerer	
  (WMC,	
  DIT,	
  NOC,	
  .	
  .	
  .	
  )

                                                         16
PHP_CodeSniffer

o   Coding	
  Standard	
  Validierung
o   PHP,	
  JavaScript,	
  CSS
o   Regelsets:
    o   PEAR
    o   Zend
    o   Squiz
    o   .	
  .	
  .
    o



                                   17
PHP_CodeSniffer

o   Sniffs	
  z.B.	
  für:
    o   Tabs/Spaces	
  Policy
    o   Naming	
  Conventions	
  (PASCAL/Camel-­‐Casing	
  usw)
    o   Code	
  Indention
    o   Klammersetzung
    o   Platzierung	
  von	
  Operatoren
    o   .	
  .	
  .




                                           18
PHP_CodeSniffer

o   Um	
  eigene	
  Sniffs	
  erweitern:
    o   Debug	
  Code	
  finden
    o   Verwendung	
  von	
  Deprecated	
  Code
    o   	
  .	
  .	
  .
    o   Alles	
  ist	
  möglich	
  ;)




                                          19
IMMER	
  AUF	
  VOLLGAS?

      20
Builds	
  nach	
  Commit


                   Automatischer	
  Build

                   •	
  Unit	
  Tests
                   •	
  Syntax	
  Tests
                   •	
  Coding	
  Standards
                   •	
  Copy/Paste	
  Detection
                   •	
  Dokumentation
                   •	
  ...




         21
Niemand	
  wartet	
  gerne!

                                           Automatischer	
  Build

                                           •	
  Unit	
  Tests
                                           •	
  Syntax	
  Tests
                  Täglicher	
  Build       •	
  Coding	
  Standards
                                           •	
  Copy/Paste	
  Detection
  •	
  Unit	
  Tests
  •	
  Syntax	
  Tests
  •	
  Coding	
  Standards
  •	
  Copy/Paste	
  Detection
  •	
  +	
  Dokumentation
  •	
  +	
  sonstige	
  Intensivere
  	
  	
  	
  	
  	
  	
  	
  Tests




                                      22
ALSO	
  ALLES	
  COOL?




                 23
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	
  fixen
    o   getrennte	
  Tests	
  für	
  Legacy	
  Code	
  /	
  modifizierte	
  Dateien



                                          24
FAZIT?

  25
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ötigt
    o   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?



  Rocke	
  mit	
  uns	
  das	
  Web!
   www.lotum.de/jobs


                 28

Weitere ähnliche Inhalte

Andere mochten auch

Notas 1parcial 2012 2013
Notas 1parcial 2012 2013Notas 1parcial 2012 2013
Notas 1parcial 2012 2013Roberto Lagua
 
255184_Digital - Cloud Computing (General)_Foundation E-certficate
255184_Digital - Cloud Computing (General)_Foundation E-certficate255184_Digital - Cloud Computing (General)_Foundation E-certficate
255184_Digital - Cloud Computing (General)_Foundation E-certficateMohihasan Kadri
 
Nâng mũi bằng mỡ tự thân
Nâng mũi bằng mỡ tự thânNâng mũi bằng mỡ tự thân
Nâng mũi bằng mỡ tự thânTâm Nguyễn
 
Regulamento Geral Interno - GDRS
Regulamento Geral Interno - GDRSRegulamento Geral Interno - GDRS
Regulamento Geral Interno - GDRSGDRSoalhaes
 
Renai Oportunidadede Investimento Pe I
Renai Oportunidadede Investimento Pe IRenai Oportunidadede Investimento Pe I
Renai Oportunidadede Investimento Pe IMarketizador
 
Unidade3 atv 2_lindalva
Unidade3 atv 2_lindalvaUnidade3 atv 2_lindalva
Unidade3 atv 2_lindalvaLyndalva
 
255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficate
255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficate255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficate
255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficateMohihasan Kadri
 
Programación Cultura de Septiembre
Programación Cultura de Septiembre Programación Cultura de Septiembre
Programación Cultura de Septiembre boletinmusa
 
jloli resume 6 - 1 -16
jloli resume 6 - 1 -16jloli resume 6 - 1 -16
jloli resume 6 - 1 -16John Loli
 
genero_folia_de_reis_revista_extendere-publicado
genero_folia_de_reis_revista_extendere-publicadogenero_folia_de_reis_revista_extendere-publicado
genero_folia_de_reis_revista_extendere-publicadoAdriana Rocha
 
Exposicion el Duelo "Un Mundo Aparte"
Exposicion el Duelo "Un Mundo Aparte"Exposicion el Duelo "Un Mundo Aparte"
Exposicion el Duelo "Un Mundo Aparte"boletinmusa
 
TOMANDOLE EL PULSO A LA SALUD PUBLICA
TOMANDOLE EL PULSO A LA SALUD PUBLICATOMANDOLE EL PULSO A LA SALUD PUBLICA
TOMANDOLE EL PULSO A LA SALUD PUBLICAJozeph PErez
 

Andere mochten auch (17)

南美伊瓜蘇瀑布
南美伊瓜蘇瀑布南美伊瓜蘇瀑布
南美伊瓜蘇瀑布
 
Notas 1parcial 2012 2013
Notas 1parcial 2012 2013Notas 1parcial 2012 2013
Notas 1parcial 2012 2013
 
255184_Digital - Cloud Computing (General)_Foundation E-certficate
255184_Digital - Cloud Computing (General)_Foundation E-certficate255184_Digital - Cloud Computing (General)_Foundation E-certficate
255184_Digital - Cloud Computing (General)_Foundation E-certficate
 
Nâng mũi bằng mỡ tự thân
Nâng mũi bằng mỡ tự thânNâng mũi bằng mỡ tự thân
Nâng mũi bằng mỡ tự thân
 
Regulamento Geral Interno - GDRS
Regulamento Geral Interno - GDRSRegulamento Geral Interno - GDRS
Regulamento Geral Interno - GDRS
 
Renai Oportunidadede Investimento Pe I
Renai Oportunidadede Investimento Pe IRenai Oportunidadede Investimento Pe I
Renai Oportunidadede Investimento Pe I
 
Unidade3 atv 2_lindalva
Unidade3 atv 2_lindalvaUnidade3 atv 2_lindalva
Unidade3 atv 2_lindalva
 
255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficate
255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficate255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficate
255184_Digital - BigData and Hadoop Ecosystems_Foundation E-certficate
 
MEDIO AMBIENTE
MEDIO AMBIENTEMEDIO AMBIENTE
MEDIO AMBIENTE
 
CorpTv
CorpTvCorpTv
CorpTv
 
Final 1
Final 1Final 1
Final 1
 
Programación Cultura de Septiembre
Programación Cultura de Septiembre Programación Cultura de Septiembre
Programación Cultura de Septiembre
 
jloli resume 6 - 1 -16
jloli resume 6 - 1 -16jloli resume 6 - 1 -16
jloli resume 6 - 1 -16
 
genero_folia_de_reis_revista_extendere-publicado
genero_folia_de_reis_revista_extendere-publicadogenero_folia_de_reis_revista_extendere-publicado
genero_folia_de_reis_revista_extendere-publicado
 
presentacion calor
presentacion calorpresentacion calor
presentacion calor
 
Exposicion el Duelo "Un Mundo Aparte"
Exposicion el Duelo "Un Mundo Aparte"Exposicion el Duelo "Un Mundo Aparte"
Exposicion el Duelo "Un Mundo Aparte"
 
TOMANDOLE EL PULSO A LA SALUD PUBLICA
TOMANDOLE EL PULSO A LA SALUD PUBLICATOMANDOLE EL PULSO A LA SALUD PUBLICA
TOMANDOLE EL PULSO A LA SALUD PUBLICA
 

Ähnlich wie Continuous Integration für PHP

BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 
Regressionstests in Webprojekten
Regressionstests in WebprojektenRegressionstests in Webprojekten
Regressionstests in WebprojektenSebastian Bauer
 
Regressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SERegressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SESebastian Bauer
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018Christian Mücke
 
Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010Sebastian Sanitz
 
Mein Freund Der Legacy Code
Mein Freund Der Legacy CodeMein Freund Der Legacy Code
Mein Freund Der Legacy Codemattmatt
 
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Torsten Kleiber
 
Unit Tests für Totalverweigerer
Unit Tests für TotalverweigererUnit Tests für Totalverweigerer
Unit Tests für TotalverweigererPeter Hauke
 
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source Projekt
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source ProjektGuild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source Projekt
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source ProjektDavid Bächler
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo QAware GmbH
 
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!Marc Müller
 
Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDDKorrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDDJörn Dinkla
 
Die Macht der Zahlen
Die Macht der ZahlenDie Macht der Zahlen
Die Macht der ZahlenGerrit Beine
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungChristian Baranowski
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAPCadaxo GmbH
 

Ähnlich wie Continuous Integration für PHP (20)

BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
Regressionstests in Webprojekten
Regressionstests in WebprojektenRegressionstests in Webprojekten
Regressionstests in Webprojekten
 
Regressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SERegressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SE
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010Testgetriebene Entwicklung mit JavaScript - webtech 2010
Testgetriebene Entwicklung mit JavaScript - webtech 2010
 
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltagiks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
 
Mein Freund Der Legacy Code
Mein Freund Der Legacy CodeMein Freund Der Legacy Code
Mein Freund Der Legacy Code
 
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Unit Tests für Totalverweigerer
Unit Tests für TotalverweigererUnit Tests für Totalverweigerer
Unit Tests für Totalverweigerer
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source Projekt
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source ProjektGuild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source Projekt
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source Projekt
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo
 
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!
 
Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDDKorrekte nebenläufige Anwendungen mit Koroutinen und TDD
Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
 
Die Macht der Zahlen
Die Macht der ZahlenDie Macht der Zahlen
Die Macht der Zahlen
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAP
 

Mehr von Sebastian Bauer

The Unshippable Product Increment | JAX 2018
The Unshippable Product Increment | JAX 2018The Unshippable Product Increment | JAX 2018
The Unshippable Product Increment | JAX 2018Sebastian Bauer
 
Was macht ein Scrum Master den ganzen Tag? JAX 2018
Was macht ein Scrum Master den ganzen Tag? JAX 2018Was macht ein Scrum Master den ganzen Tag? JAX 2018
Was macht ein Scrum Master den ganzen Tag? JAX 2018Sebastian Bauer
 
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017Mein Scrum ist kaputt | IPC17 SE & Webinale 2017
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017Sebastian Bauer
 
Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012Sebastian Bauer
 
Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012Sebastian Bauer
 
Verlernte Agilität - Schleichende Fehler in agilen Prozessen
Verlernte Agilität - Schleichende Fehler in agilen ProzessenVerlernte Agilität - Schleichende Fehler in agilen Prozessen
Verlernte Agilität - Schleichende Fehler in agilen ProzessenSebastian Bauer
 
Ignite Scrum - Ein Sprint in 5 Minuten
Ignite Scrum - Ein Sprint in 5 MinutenIgnite Scrum - Ein Sprint in 5 Minuten
Ignite Scrum - Ein Sprint in 5 MinutenSebastian Bauer
 
Web Workers - Das Arbeitstier Browser
Web Workers - Das Arbeitstier BrowserWeb Workers - Das Arbeitstier Browser
Web Workers - Das Arbeitstier BrowserSebastian Bauer
 
Entwicklung Innovativer und Komplexer AIR Anwendungen
Entwicklung Innovativer und Komplexer AIR AnwendungenEntwicklung Innovativer und Komplexer AIR Anwendungen
Entwicklung Innovativer und Komplexer AIR AnwendungenSebastian Bauer
 

Mehr von Sebastian Bauer (10)

The Unshippable Product Increment | JAX 2018
The Unshippable Product Increment | JAX 2018The Unshippable Product Increment | JAX 2018
The Unshippable Product Increment | JAX 2018
 
Was macht ein Scrum Master den ganzen Tag? JAX 2018
Was macht ein Scrum Master den ganzen Tag? JAX 2018Was macht ein Scrum Master den ganzen Tag? JAX 2018
Was macht ein Scrum Master den ganzen Tag? JAX 2018
 
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017Mein Scrum ist kaputt | IPC17 SE & Webinale 2017
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017
 
Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012
 
Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012
 
Verlernte Agilität - Schleichende Fehler in agilen Prozessen
Verlernte Agilität - Schleichende Fehler in agilen ProzessenVerlernte Agilität - Schleichende Fehler in agilen Prozessen
Verlernte Agilität - Schleichende Fehler in agilen Prozessen
 
Verlernte Agilität
Verlernte AgilitätVerlernte Agilität
Verlernte Agilität
 
Ignite Scrum - Ein Sprint in 5 Minuten
Ignite Scrum - Ein Sprint in 5 MinutenIgnite Scrum - Ein Sprint in 5 Minuten
Ignite Scrum - Ein Sprint in 5 Minuten
 
Web Workers - Das Arbeitstier Browser
Web Workers - Das Arbeitstier BrowserWeb Workers - Das Arbeitstier Browser
Web Workers - Das Arbeitstier Browser
 
Entwicklung Innovativer und Komplexer AIR Anwendungen
Entwicklung Innovativer und Komplexer AIR AnwendungenEntwicklung Innovativer und Komplexer AIR Anwendungen
Entwicklung Innovativer und Komplexer AIR Anwendungen
 

Continuous Integration für PHP

  • 1. Continuous  Integration  für  PHP Der  heilige  Gral  der  Codequalität? 1
  • 2. 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
  • 4. 4
  • 5. „You  cannot  control what  you  cannot  measure“  -­‐  Tom  DeMarco 5
  • 8. 8
  • 9. 9
  • 10. Kernbestandteile  von  CI o Automatisierte  Tests o Statische  Code-­‐Analyse o Compilierung  des  Codes o Generierung  der Dokumentation 10
  • 11. Und  womit  macht  man  das? Atlassian Jenkins  (Hudson) CruiseControl 11
  • 12. UND  WIE  SIEHT‘S  AUS  MIT  ... 12
  • 13. PHPDoc Syntax CRAP PHP  Unit Code  Coverage PHP_Depend PHPMD PHP_CodeSniffer 13
  • 14. 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
  • 15. Tests  mit  Selenium o Testen  von  UI  Funktionalität o Mit  verschiedenen  Browsern o Ermöglicht  Browser-­‐Kompatibilität  abzudecken 15
  • 16. Statische  Code-­‐Analyse  mit   PHP_Depend o Umfangsmetriken o LOC  -­‐  Lines  of  Code o CLOC  -­‐  Comment  Lines  of  Code o ELOC  -­‐  Executable  Lines  of  Code o Komplexitätsmetriken o CCN  -­‐  Zyklische  Komplexität o NPath  Komplexität o OO-­‐Metriken o Code  Rank o Chidamber  &  Kemerer  (WMC,  DIT,  NOC,  .  .  .  ) 16
  • 17. PHP_CodeSniffer o Coding  Standard  Validierung o PHP,  JavaScript,  CSS o Regelsets: o PEAR o Zend o Squiz o .  .  . o 17
  • 18. PHP_CodeSniffer o Sniffs  z.B.  für: o Tabs/Spaces  Policy o Naming  Conventions  (PASCAL/Camel-­‐Casing  usw) o Code  Indention o Klammersetzung o Platzierung  von  Operatoren o .  .  . 18
  • 19. PHP_CodeSniffer o Um  eigene  Sniffs  erweitern: o Debug  Code  finden o Verwendung  von  Deprecated  Code o  .  .  . o Alles  ist  möglich  ;) 19
  • 21. Builds  nach  Commit Automatischer  Build •  Unit  Tests •  Syntax  Tests •  Coding  Standards •  Copy/Paste  Detection •  Dokumentation •  ... 21
  • 22. Niemand  wartet  gerne! Automatischer  Build •  Unit  Tests •  Syntax  Tests Täglicher  Build •  Coding  Standards •  Copy/Paste  Detection •  Unit  Tests •  Syntax  Tests •  Coding  Standards •  Copy/Paste  Detection •  +  Dokumentation •  +  sonstige  Intensivere              Tests 22
  • 24. 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  fixen o getrennte  Tests  für  Legacy  Code  /  modifizierte  Dateien 24
  • 26. 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
  • 27. Fazit o CI  System  hinstellen  reicht  nicht o Konzept  für  Projekt  benötigt o Welche  Checks  zu  welcher  Zeit? o Richtige  Metriken  messen  UND  überwachen o CI  muss  „gelebt“  werden o Auftretende  Probleme  müssen  angegangen  werden 27
  • 28. DAS  WAR‘S! Fragen? Rocke  mit  uns  das  Web! www.lotum.de/jobs 28