Gleichartiger Code ist gerade in größeren Projekten wichtig um den Überblick nicht zu verlieren. Man findet schneller Fehler und vermeidet anderen Programmieren seinen eigenen Stil aufzudrücken. Anstatt riesige Bücher mit Code Conventions zu verfassen lässt sich PHP, JS oder CSS Code einfach mit dem Paket PHP_CodeSniffer überprüfen.
Out of the box kommt das Programm mit Code Conventions einiger namhafter Hackergilden daher z. B.  PEAR, Zend oder Squiz.
Mit dem PHP Repository PEAR ist der CodeSniffer schnell installiert:

pear install PHP_CodeSniffer

Danach kann man sofort seine Dateien überprüfen:

$ phpcs --standard=zend  testCLass.class.php
FILE: /tmp/testClass.class.php
--------------------------------------------------------------------------------
FOUND 4 ERROR(S) AFFECTING 2 LINE(S)
--------------------------------------------------------------------------------
  6 | ERROR | Spaces must be used to indent lines; tabs are not allowed
  6 | ERROR | Opening brace indented incorrectly; expected 8 spaces, found 1
 11 | ERROR | Spaces must be used to indent lines; tabs are not allowed
 11 | ERROR | Opening brace indented incorrectly; expected 8 spaces, found 1
--------------------------------------------------------------------------------
Time: 0 seconds, Memory: 3.25Mb

Interessant ist vor allem das Erstellen von eigenen Standards welches durch ein “preset” an Regeln schnell von der Hand geht. Fehlt einem einige wichtige Funktion kann man sie als PHP Klasse nachimplementieren.
Man sollte den Aufwand nicht scheuen den Code Quality Test zu automatisieren und ihn entweder in seine Unit Tests oder in einen Build Server verbauen. Denkbar wäre z.B. auch ein Hook in der Versionsverwaltung. Nur so erhält der Programmierer zeitnah Rückmeldung über Mängel. So bleibt ein Projekt von Beginn an sauber.

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.