Gute Qualität in JavaScript mit Jenkins und PHPStorm/WebStorm
Kommentare

QA-Plattformen
Um aber die Qualität in einem Projekt auf einem hohen Niveau zu halten und mit technischen Schulden umgehen zu können, ist eine Plattform notwendig, die den Status des Projekts transparent

QA-Plattformen

Um aber die Qualität in einem Projekt auf einem hohen Niveau zu halten und mit technischen Schulden umgehen zu können, ist eine Plattform notwendig, die den Status des Projekts transparent macht. Dadurch ist jedem, der an dem Projekt arbeitet, zu jedem Zeitpunkt bekannt, wo das Projekt im Bereich Qualität steht. Nur so kann das Projekt kontinuierlich überwacht werden und, falls notwendig, können gezielt Maßnahmen zur Qualitätsverbesserung geplant, durchgeführt und überwacht werden.

Ziel der Qualitätssicherung ist, es dem Entwickler so einfach wie möglich zu machen, qualitativ hochwertigen Quellcode zu entwickeln. Dabei sollen die Werkzeuge im Hintergrund stehen und für den Entwickler keinen unnötigen Mehraufwand erzeugen.

Die Plattformen zur Qualitätssicherung lassen sich unterteilen in IDE-basierte Werkzeuge und solche, die in eine Continuous-Integration-Plattform integriert werden. Im Folgenden wird exemplarisch PHPStorm als IDE verwendet. Die beschriebenen Werkzeuge können auf ähnliche Weise auch in andere IDEs, beispielsweise Eclipse, integriert werden. Als Continuous-Integration-Umgebung kommt Jenkins [1] zum Einsatz. Beide Plattformen wurden aufgrund ihrer weiten Verbreitung, der allgemeinen Verfügbarkeit und der guten Werkzeugunterstützung gewählt.

Die vorhandenen Werkzeuge sollen die kontinuierliche Qualitätssicherung vor allem in einem wichtigen Aspekt unterstützen, und zwar in der schnellen Rückmeldung an den Entwickler. Bei der Qualitätssicherung ist es wesentlich, dass der Entwickler schnell die Ergebnisse der Analysen und Tests vorliegen hat. Ist das der Fall, befindet er sich meist noch im Kontext der Aufgabe und kann auf eventuelle Probleme schnell reagieren und sie beheben. Eine lange Zeitspanne zwischen der Entwicklung des Quellcodes und den Ergebnissen der Continuous Inspection und Continuous Integration bedeutet, dass sich der Entwickler mit hoher Wahrscheinlichkeit in der Zwischenzeit bereits mit anderen Aufgaben befasst und sich erst wieder in das Thema einarbeiten muss.

Für den Entwickler ist die IDE als Plattform zur Qualitätssicherung sehr interessant, da hier eine Reihe von Werkzeugen schon während der Entwicklung zur Verfügung steht. Diese werden als Plug-ins eingebunden. In PHPStorm erreicht man die Plug-in-Verwaltung über PREFERENCES | PLUGINS (Abb. 1) Hier hat der Entwickler die Möglichkeit, zusätzliche Plug-ins aus einem Repository im Internet oder von der lokalen Festplatte hinzuzufügen und es im Anschluss zu aktivieren.

Abb 1: PHPStorm Plug-in-Verwaltung

Die Continuous-Integration-Plattform, in unserem Fall Jenkins, ist ein Stück weiter vom direkten Coding entfernt als die IDE. Die Aufgabe dieser Plattform besteht darin, das Gesamtsystem zu überwachen. Zu diesem Zweck wird das Projekt in möglichst kurzen Abständen mit allen zur Verfügung stehenden Tools überwacht. Dieser Vorgang wird als „Build“ bezeichnet. Für die einzelnen Tools können Grenzwerte definiert werden, bis zu denen ein Build als erfolgreich gilt. Werden diese Werte überschritten, ist der Build fehlgeschlagen. In diesem Fall sollte das gesamte Entwicklerteam die aktuellen Aufgaben ruhen lassen und sich gemeinsam um die Beseitigung der Probleme kümmern, die zum Fehlschlag des Builds geführt haben. Für die Ausführung der einzelnen Werkzeuge wird in Jenkins kein Plug-in benötigt. Die entsprechenden Kommandos können entweder als Windows-Batch-Befehl, als Unix-Shell-Befehl, Ant Task oder Maven Target ausgeführt werden. Ziel ist es, dass die verschiedenen Tools ihre Ausgabe in Dateien schreiben, die innerhalb von Jenkins einem bestimmten Build zugeordnet und entsprechend angezeigt werden. Zur Visualisierung der Ergebnisse werden wiederum Plug-ins benötigt. Diese können entweder über das Jenkins Plugin Repository oder aus einer lokalen *.hpi-Datei installiert werden. Nach einem Neustart von Jenkins steht das neu installierte Plug-in zur Verfügung. Abbildung 2 zeigt die Jenkins-Konfiguration.

Abb 2: Jenkins-Konfiguration
Continuous Integration und Versionskontrolle

Damit die Arbeit im Team und die Qualitätssicherung funktionieren können, wird ein Versionskontrollsystem im Projekt benötigt. Für Projekte im Webumfeld setzt sich zunehmend Git als führendes Versionskontrollsystem gegenüber anderen Systemen wie SVN oder Mercurial durch. Für alle größeren Systeme auf dem Markt existiert eine gute Integration sowohl in die IDE als auch in Jenkins.

In PHPStorm ist die Git-Integration als Plug-in ein fester Bestandteil der Distribution. Der Entwickler muss sich deshalb hier um nichts weiter kümmern, als die Repository-Informationen des Projekts bekannt zu machen. Innerhalb des Projekts steht dann über das Kontextmenü im Dateisystembrowser der Punkt GIT zur Verfügung, über den die verschiedenen Operationen wie Hinzufügen zum Versionskontrollsystem oder Commit erreichbar sind.

Jenkins unterstützt standardmäßig nur die Versionskontrollsysteme CSV und SVN. Um Git hinzuzufügen, muss Jenkins Git Plugin installiert werden. Nach einem Neustart des Jenkins-Dienstes ist im Projektsetup unter den verfügbaren Versionskontrollsystemen als zusätzliche Option GIT vorhanden. Hier kann unter anderem ein Git Repository eingetragen werden, das auf Änderungen überwacht werden soll. Unter dem Konfigurationspunkt BUILD TRIGGERS kann dann konfiguriert werden, in welchen Zyklen das Versionskontrollsystem auf Änderungen geprüft werden soll. In diesem Artikel wird aus Platzgründen nicht näher auf Ant zur Konfiguration von Jenkins Tasks eingegangen, stattdessen werden die notwendigen Kommandos als Unix-Shell-Kommandos verwendet.

Die folgenden Abschnitte gehen auf verschiedene Werkzeuge ein, die im Rahmen der Qualitätssicherung in JavaScript eine Rolle spielen. Außerdem wird gezeigt, wie diese in die jeweilige Plattform integriert werden können und was dem Entwickler daraus für Nutzen entsteht.


Themen der kommenden Seiten:

  • jslint
  • Copy/Paste Detector
  • Unit Tests
  • Fazit
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -