Continuous Integration für PHP

Post on 01-Dec-2014

2.113 views 1 download

description

Slides meines Talks über Continuous Integration auf den Linuxwochen Wien 2011.

Transcript of Continuous Integration für PHP

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