SlideShare ist ein Scribd-Unternehmen logo
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

PPT
Professor chaves - histórico do lab de informática
DOC
Irda wireless-connection Em portugues
PDF
Programação semana de extensão 2012 folia
DOCX
Actividad no 2
PPS
Manual clientes
PPTX
Dieta hcg contigo
PPTX
Programación cultural octubre musa
PPSX
Manual Usuario Portal Zona Franca
Professor chaves - histórico do lab de informática
Irda wireless-connection Em portugues
Programação semana de extensão 2012 folia
Actividad no 2
Manual clientes
Dieta hcg contigo
Programación cultural octubre musa
Manual Usuario Portal Zona Franca

Andere mochten auch (17)

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

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

PDF
BED-Con - Tools für den täglichen Kampf als Entwickler
PDF
Context Engineering, Patterns für Entwicklung mit AI, Code sAIrt, not hAIrd
PDF
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
PDF
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
PDF
Regressionstests in Webprojekten
PDF
Regressionstests in Webprojekten - IPC12SE
PDF
dachnug51 - Wie Sie Ihre Anwendungen für Notes 64-Bit Clients vorbereiten mu...
PDF
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
PDF
Testgetriebene Entwicklung mit JavaScript - webtech 2010
PDF
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
PDF
Mein Freund Der Legacy Code
PDF
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
PPT
objectiF extrem
PDF
Unit Tests für Totalverweigerer
PPTX
Codeception VisualCeption
PPTX
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source Projekt
PDF
Cloud Migration mit KI: der Turbo
PDF
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!
PDF
Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
PDF
Die Macht der Zahlen
BED-Con - Tools für den täglichen Kampf als Entwickler
Context Engineering, Patterns für Entwicklung mit AI, Code sAIrt, not hAIrd
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
Regressionstests in Webprojekten
Regressionstests in Webprojekten - IPC12SE
dachnug51 - Wie Sie Ihre Anwendungen für Notes 64-Bit Clients vorbereiten mu...
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
Testgetriebene Entwicklung mit JavaScript - webtech 2010
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
Mein Freund Der Legacy Code
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
objectiF extrem
Unit Tests für Totalverweigerer
Codeception VisualCeption
Guild42 Vortrag: hilfe, der Kunde will im Nachhinein ein Open Source Projekt
Cloud Migration mit KI: der Turbo
Karlsruher Entwicklertag 2016: CodedUI - Richtig vorbereitet ist halb getestet!
Korrekte nebenläufige Anwendungen mit Koroutinen und TDD
Die Macht der Zahlen
Anzeige

Mehr von Sebastian Bauer (10)

PDF
The Unshippable Product Increment | JAX 2018
PDF
Was macht ein Scrum Master den ganzen Tag? JAX 2018
PDF
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017
PDF
Verlernte Agilität - JAX 2012
PDF
Verlernte Agilität - JAX 2012
PDF
Verlernte Agilität - Schleichende Fehler in agilen Prozessen
KEY
Verlernte Agilität
PDF
Ignite Scrum - Ein Sprint in 5 Minuten
PDF
Web Workers - Das Arbeitstier Browser
PPT
Entwicklung Innovativer und Komplexer AIR Anwendungen
The Unshippable Product Increment | JAX 2018
Was macht ein Scrum Master den ganzen Tag? JAX 2018
Mein Scrum ist kaputt | IPC17 SE & Webinale 2017
Verlernte Agilität - JAX 2012
Verlernte Agilität - JAX 2012
Verlernte Agilität - Schleichende Fehler in agilen Prozessen
Verlernte Agilität
Ignite Scrum - Ein Sprint in 5 Minuten
Web Workers - Das Arbeitstier Browser
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