Tel. 06151 / 39 10 793

Jenkins für die iOS-Entwicklung III: Copy/Paste-Detection

10.07.2012  • Sven Weidauer
Jenkins für die iOS-Entwicklung III: Copy/Paste-Detection

Ein wichtiges Prinzip in der Software-Entwicklung ist DRY: Don't Repeat Yourself - Wiederhole keinen Code. Da aus Erfahrung trotzdem immer wieder Code per Copy/Paste einfach dupliziert wird, z.B. wenn es schnell gehen muss, ist ein Werkzeug, um dies automatisch zu erkennen, sehr nützlich.

Dies können wir mit dem "Duplicate Code Scanner Plug-in" in unseren Jenkins-Workflow einbinden. Dies kann zusammen mit den "Static Analysis Utilities", die dafür benötigt werden, über den Plugin Manager installiert werden.

Diese Plugins dienen aber lediglich dazu die Daten über duplizierten Code im Build darzustellen. Um diese Daten zu erheben ist ein weiteres Programm nötig, nämlich das in Java geschriebene "pmd". Dieses versteht von Hause aus kein Objective-C, es gibt aber hier ein Plugin mit einem passendem Parser. Zur installation legen wir einfach die Dateien 'pmd-4.3.jar' sowie 'ObjCLanguage-0.0.6-SNAPSHOT.jar' auf unseren Jenkins-Server und merken uns den Pfad.

Um unser Projekt nun nach kopiertem Code zu durchsuchen fügen wir als erstes im Jenkins einen neuen Build-Schritt vom Type "Shell ausführen" hinzu:

java -Xmx512m -classpath "<Pfad-zu-pmd>/pmd-4.2.5.jar:<Pfad-zu-pmd>/ObjCLanguage-0.0.6-SNAPSHOT.jar" net.sourceforge.pmd.cpd.CPD --language ObjectiveC --minimum-tokens 50 --format net.sourceforge.pmd.cpd.XMLRenderer --files . > build/cpd.xml

Der Pfad zu den JAR-Dateien muss entsprechend angepasst werden. Dieses Script durchsucht den ganzen Build-Workspace nach dupliziertem Quelltext. Sollen nur bestimmte Unterordner durchsucht werden können auch mehrere '--files'-Parameter hinzugefügt werden.

Der Parameter '--minimum-tokens 50' gibt an, wie viele Tokens mindestens übereinstimmen müssen, damit eine Warnung generiert wird. Hier kann man etwas experimentieren, um den optimalen Wert zu finden.

Um die erhobenen Daten auszuwerten und anzuzeigen fügen wir noch einen Post-Build-Schritt vom Typ "Veröffentliche die Ergebnisse des Suchlaufs nach dupliziertem Quelltext" zum Projekt hinzu. Unter Dateiname geben wir "build/cpd.xml" an. Die Prioritäten können angepasst werden, die Standardwerte sollten aber funktionieren.

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Suchen


Unsere Partner
comm-press comm-press
Drupal Spezialisten aus Hamburg
neosmart - Digital Media, Webdesign & Webentwicklung<br />
aus Darmstadt neosmart
Digital Media, Webdesign & Webentwicklung aus Darmstadt
trinomica - Software Solutions trinomica
Software Solutions
Sponsoring und Mitgliedsschaften

Drupal Initiative Deutschland - Firmen-Mitglied

So finden Sie uns