Codequalität: Code-Metrik Version 0.1



Ähnliche Dokumente
Qualitätsmanagement im Projekt

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Software-Metriken. Dipl.-Ing.(BA) Henning Sievert Seminar Software-Entwurf WS 2004/05

Einführung in die Informatik Tools

Kontinuierliche Architekturanalyse. in 3D

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Software Engineering in der Praxis

Softwaremetriken verstehen und nutzen

Verwendung von OO-Metriken zur Vorhersage

Kampf dem Fehlerteufel PMD, Findbugs und Checkstyle in großen Projekten

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant

Kurzanleitung zu XML2DB

Software-Metriken. Wolfgang Globke. Seminar Moderne Softwareentwicklung SS Software-Metriken. Wolfgang Globke. Metriken und Qualitätsmodelle

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Java Kurs für Anfänger Einheit 5 Methoden

Was bringt TDD wirklich?

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Übung: Verwendung von Java-Threads

Testen mit JUnit. Motivation

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Das Build-Tool ANT ETIS SS05

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Java Einführung Programmcode

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

25 Import der Beispiele

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen

SEP 114. Design by Contract

Echolot Qualitätssicherung mit Sonar

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Vorkurs Informatik WiSe 15/16

Java-Tutorium WS 09/10

Übungen zur Softwaretechnik

Entwicklungswerkzeuge

Java Einführung Packages

Java Entwicklung für Embedded Devices Best & Worst Practices!

Test-Driven Design: Ein einfaches Beispiel

ANT. Kurzvortrag von Manuel Schulze.

JCoverage. Uni Kassel Projektarbeit Software Engineering Markus Pilsl & Marko Medved

A Domain Specific Language for Project Execution Models

Sybase Central Dokumentation Aktivierung der Monitoringfunktion

Klausur Software-Engineering SS 2005 Iwanowski

Python SVN-Revision 12

Softwarequalität: Einführung. 15. April 2015

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Effizenzsteigerung bei Villeroy & Boch durch den Einsatz von Magento und Zend

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

SAP Software Engineering live Agile! Agiles Projektmanagement und Clean Code im SAP-Umfeld

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77

Kurzfassung der Studienarbeit

Software-Engineering Grundlagen des Software-Engineering

Version 0.3. Installation von MinGW und Eclipse CDT

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Dokumentation zur Versendung der Statistik Daten

Outsourcing und Offshoring. Comelio und Offshoring/Outsourcing

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Software Engineering in der Praxis

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Abacus Formula Compiler (AFC)

Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen

Comparison of Software Products using Software Engineering Metrics

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Internet Explorer Version 6

Grundbegriffe der Informatik

FAQ The FAQ/knowledge base. Version 2.1.1

Ant - das Java Build-Tool

Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05.

Mastermind. Testplan. Hochschule Luzern Technik & Architektur. Programmieren 2 FS12. Gruppe 10

InfoPoint vom 9. November 2011

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Testen und Testautomatisierung in agilen Projekten

Objektorientierte Programmierung OOP

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Informatik I Tutorial

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Reengineering und Refactoring von Softwarearchitekturen

Einführung in die C++ Programmierung für Ingenieure

Client-Server-Beziehungen

Software Systems Engineering

Fragebogen: Abschlussbefragung

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

Debugging in Magento

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Kompilieren und Linken

1 Vom Problem zum Programm

Transkript:

Codequalität: Code-Metrik Version 0.1 Sicherung und Verbesserung der Codequalität mit Hilfe von Code-Metrik Tools Team Code Orange 1

Inhalt Einleitung Tools: - Checkstyle - JavaNCSS - Findbugs - JDepend - Cobertura (Integration in Buildprozess) Team Code Orange 2

Einleitung Grundmotivation Regelmäßige Überwachung und Verbesserung der Codequalität ist essenziell für das technische und geschäftliche Überleben von Softwaresystemen Gerade in Zeiten der fortschreitenden Softwarekrise stellt Codequalität eine fundamentale Säule in der Softwareentwicklung dar Team Code Orange 3

Einleitung Grundmotivation Umfang und Ausprägung moderner Softwareprojekte erfordern moderne Lösungen zur Sicherung von Qualität des Codes und zur Überwachung des Codes (Codereviews) In der Praxis wird die sogenannte Quelltextrezension oftmals nur von wenigen bzw. einer Person durchgeführt (Softwarearchitekt) Team Code Orange 4

Einleitung Grundmotivation Der Softwarearchitekt kann unmöglich jede Codezeile manuell bezüglich Codequalität prüfen Softwareprojekte, Systeme, Teams und Unternehmen sind oft zu unterschiedlich für einheitlichen Standard bezüglich Codequalität Team Code Orange 5

Einleitung Einschub: Konservative Ansätze Regelmäßige Codereviews Eigene Erfahrung Einhaltung von Codeschablonen bzw. softwaretechnischen Verhaltensmustern Lösen jedoch oft nur eine kleine Untermenge von Problemen bezüglich Überwachung der Codequalität Team Code Orange 6

Einleitung Grundmotivation Problemlösungsansatz: Entwicklung/Einsatz von Vorgehensweisen zur Abbildung von Softwareeigenschaften in einem Zahlenwert (Maßzahl) Softwaremetrik (Codemetrik) Team Code Orange 7

Einleitung Codemetrik(Nutzung) Einsatz(Beurteilung) der Codemetrik erstreckt sich über mehrere Bereiche: Entwicklungsphasen Phasenergebnisse Technologien Ziel der Metriken Fehlerprognose und Aufwandsabschätzung Unterscheidung zwischen vorlaufend, mitlaufend und retroperspektiv Team Code Orange 8

Einleitung Codemetrik(Beschränkung) Metriken sollten überschaubar bleiben (eindimensional): Sicht des Managements Kosten, Produktivität, Risiken, Validierung Sicht des Entwicklers Lesbarkeit, Effizienz, Effektivität, Tests, Restfehler Sicht des Kunden Abschätzungen(Budget), Qualität, Wartbarkeit, Erweiterbarkeit Team Code Orange 9

Einleitung Codemetrik(Klassifikation) Verschiedene Metriken(Entwurfsmetrik, Kommunikationsmetrik usw.) werden speziellen Klassen zugeordnet: Prozess-Metrik Ressourcenaufwand, Fehler, Kommunikationsaufwand Produkt-Metrik Umfang, Komplexität, Lesbarkeit, Entwurfsqualität, Produktqualität Komplexitätsmetrik Softwaregröße, Fertigstellungsgrad Team Code Orange 10

Einleitung Codemetrik(Gütekriterien) Gütemerkmale werden in der Regel an der Erfüllung der Kundenanforderung gemessen Gütekriterien für den Kunden: Objektivität (keine subjektive Einflüsse des Messenden) Zuverlässigkeit (bei Wiederholung gleiche Ergebnisse) Normierung (Messergebnisskala und Vergleichbarkeitsskala) Team Code Orange 11

Einleitung Codemetrik(Gütekriterien) Gütekriterien für den Kunden(Fortsetzung): Vergleichbarkeit (Maß mit anderen Maßen in Relation setzbar) Nützlichkeit (messbare Erfüllung praktischer Bedürfnisse) Validität (von messbaren Größen auf andere Kenngrößen zu schließen (schwierig)) Team Code Orange 12

Einleitung Zusammenfassung Für den Menschen (Softwarearchitekt) ist es schwer manuell für eine entsprechende allgemeine Codequalität zu sorgen Lösung: Einsatz einer einheitlichen und allgemein anerkannten Metrik (Codemetrik) Im Folgenden werden Tools vorgestellt, welche zum größten Teil solche Codemetriken erstellen und realisieren Team Code Orange 13

Inhalt von Checkstyle Zitat Sinn und Zweck eines Coding Standards Fälle für die Coding Standards Sinn machen Definierte Punkte bei Checkstyle Einfaches Beispiel für schlecht lesbaren Code Beispiel für schlecht lesbaren Code Tipps Checkstyles als Eclipse-Plugin Team Code Orange 1

Zitat* von Martin Fowler Any fool can write code that a computer can understand. Good programmers write code that humans can understand *("Refactoring - Improving the design of existing code", Seite 15) Team Code Orange 2

Sinn und Zweck eines Coding Standards Ist das Erleichtern von Arbeiten am Code mit mehreren Leuten durch einheitliche Codestruktur innerhalb eines Entwicklungsteams Team Code Orange 3

Fälle für die Coding Standards Sinn machen Kommunikation Urlaubsvertretung funktionierender Code Übersichtlicher Code Module und Modultests Wiederverwendbarkeit des Codes Einfache Wartung des Codes Code, der leicht zu erweitern ist Team Code Orange 4

Definierte Punkte bei Checkstyle Einrückung Namenskonventionen Kommentare Begrenzung der Zeilenlänge Anzahl von Unterklassen Komplexität der Dateistruktur (Packages) Team Code Orange 5

Einfaches Beispiel für schlecht lesbaren Code Ein eingegebener Wert soll von einer temporären Variable einer speziell für Usereingaben definierte Variable zugewiesen werden Schlecht a = b; Gut inputuser = tempinput; Team Code Orange 6

Beispiel für schlecht lesbaren Code 48 through the loop, sortboundary is increased, and the element at the position of the 49 new sortboundary probably isn't in its sorted place in the array, so it's inserted 50 into the proper place somewhere between firstelement and sortboundary. */ for ( int 51 sortboundary = firstelement+1; sortboundary <= lastelement; sortboundary++ ) { int 52 insertval = data[ sortboundary ]; int insertpos = sortboundary; while ( insertval < 53 data[ insertpos-1 ] ) { data[ insertpos ] = data[ insertpos-1 ]; insertpos = 54 insertpos-1; } data[ insertpos ] = insertval; } /* Replace original lower-boundary 55 element */ data[ firstelement-1 ] = lowerboundary; } Team Code Orange 7

for ( 77 int sortboundary = firstelement+1; 78 sortboundary <= lastelement; 79 sortboundary++ 80 ) { 81 int insertval = data[ sortboundary ]; 82 int insertpos = sortboundary; 83 while ( insertval < data[ insertpos-1 ] ) { 84 data[ insertpos ] = data[ insertpos-1 ]; 85 insertpos = insertpos-1; 86 } 87 data[ insertpos ] = insertval; 88 } Beispiel für schlecht lesbaren Code Team Code Orange 8

120 for ( int sortboundary = firstelement + 1; sortboundary <= lastelement; 121 sortboundary++ ) { 122 int insertval = data[ sortboundary ]; 123 int insertpos = sortboundary; 124 while ( insertval < data[ insertpos - 1 ] ) { 125 data[ insertpos ] = data[ insertpos - 1 ]; 126 insertpos = insertpos - 1; 127 } 128 data[ insertpos ] = insertval; 129 } 130 // Replace original lower-boundary element 131 data[ firstelement - 1 ] = lowerboundary; 132 } Beispiel für schlecht lesbaren Code Quelle: Code Complete - von Steve McConnell Team Code Orange 9

Tipps Code sollte ab der ersten Zeile gemessen werden Der gesunde Menschenverstand sollte nicht ausgeschaltet werden Die Sinnhaftigkeit sollte im Einzelfall überprüft werden Team Code Orange 10

Checkstyle in Eclpise Team Code Orange 11

Inhalt JavaNCSS Features NCSS CCN Fazit Quellen Team Code Orange 1

JavaNCSS JavaNCSS ist ein Kommandozeilen Programm Die Metriken, die von JavaNCSS ermittelt werden, sind : NCSS(Non Commenting Source Statements) CCN(Cyclomatic Complexity Number) JVDC(Number of formal Javadoccomments) NCSS und JVDC können auf Global-, Klasse- oder Funktions-Ebene angewendet werden. Team Code Orange 2

NCSS Es wird die Anzahl, der Ausführbaren Codezeilen (Non-Commenting-Source-Statements) ermittelt Vereinfacht kann man sagen, dass diese Metrik die ; und die { in Java Quelltexten zählt Nicht gezählt werden leere Statements, leere Blöcke oder Semikolons nach geschweiften Klammern Kommentare und Formatierung spielen keine Rolle Team Code Orange 3

NCSS Vorteile : Genauer als LOC Ermöglicht Vergleichbarkeit, zu anderen Projekten Nachteile : Die Anzahl der NCSS, müssen immer im Kontext gesehen werden Alleinstehend nicht sehr aussagekräftig Team Code Orange 4

CCN Die von McCabe definierte Metrik ermittelt die strukturelle Komplexität (Cyclomatic Complexity Number), einer Methode oder einer Funktion. Eine Methode oder Funktion hat per Definition der Metrik, eine Komplexität mit dem Wert 1. Dieser CCN-Wert erhöht sich bei jedem Entscheidungspunkt um den Wert 1. Gibt die Anzahl der mindestens benötigten Testfälle an Team Code Orange 5

Einordnung der CCN In Untersuchungen von von McCabe und Halstead wurde nachgewiesen, dass ein signifikanter Zusammenhang zwischen der Komplexität und der Anzahl der Fehler, die beim Testen und im Betrieb gefunden wurden besteht. CCN Einordnung 1-10 Einfaches Programm, mit geringem Risiko 11-20 Komplexeres Programm, mit moderatem Risiko 21-50 Komplexes Programm, mit hohem Risiko > 50 Instabiles Programm,mit sehr hohem Risiko Team Code Orange 6

Beispiel CCN Berechnung public void demomethode(int wert){ } if(wert > 0) for(int i = 0; i<wert; i++) System.out.println("aaaaaaaah!"); else do{ System.out.println("bbbbbbbbbb!");} while(false); // Die CCN dieser Methode ist 4 Team Code Orange 7

Fazit Vorteile : CCN kann Hinweise auf Probleme in der Architektur geben JVDC zeigt fehlende Dokumentationen an Nachteile : Die Kommentar-Metrik sagt nichts über die Qualität der Kommentare aus CCN berücksichtigt nur ein Programmgerüst und lässt die Komplexität einzelner und verschachtelter Anweisungen außer acht Team Code Orange 8

Quellen JavaNCSS Homepage http://www.kclee.de/clemens/java/javancss/ Messen & Metriken Ist Qualität messbar? http://xradar.sourceforge.net/downloads/metrics-isqualitym METRIKEN IM PRAKTISCHEN EINSATZ http://www.sigs.de/publications/os/2007/03/fleischer_os_03 Software Komplexität http://www.pervasive.jku.at/teaching/_2007ss/softwareeng Team Code Orange 9

FindBugs FindBugs Vortragender: Felix Kaminski Team Code Orange 1

Inhalt von FindBugs Allgemeine Beschreibung Was kann es? Was kann es nicht? Bug Kategorien Beispiele Null-Pointer Annotations Live Team Code Orange 2

Allgemeine Beschreibung Fokus: echte Bugs und Performance- Probleme finden Durchsuchen des (Java) Bytecodes mittels statischer Code-Analyse nach Fehlermustern ( bug pattern ) Drei verschiedene Ausführungsarten: Kommandozeile Eigenständige GUI Plugin für Entwicklungsumgebungen Team Code Orange 3

Was kann es? Finden von Bugs (200+) vor der Ausführung Kein Quellcode nötig, da Durchsuchung von Bytecode Priorisierung von Bugs Erweiterbar durch eigene Bugs Integration in Build-Prozess (ANT) Export als XML (HTML) möglich Team Code Orange 4

Was kann es nicht? Eigene Überlegungen ersetzen Nicht alle Bugs sind Bugs Funktionalität wird nicht getestet..nur Java Team Code Orange 5

Bug Kategorien Unterteilung der Bugs in 10 Kategorien Gezieltes Suchen nach bestimmten Kategorien http://findbugs.sourceforge.net/bugdescriptions.html Team Code Orange 6

Kategorie: Dodgy Team Code Orange 7

Kategorie: Security Team Code Orange 8

Beispiel: Null-Pointer Eclipse erkennt Null-Pointer Dereferenzierung nicht Fehler zur Laufzeit! Team Code Orange 9

Beispiel: Null-Pointer Auswertung mit Findbugs Erkennung vor Ausführung Team Code Orange 10

Beispiel: Annotations Fehlererkennung durch Annotations Benötigt werden annotations.jar und jsr305.jar (Findbugs-Ordner/libs/) Team Code Orange 11

Beispiel: Annotations Team Code Orange 12

Quellen FindBugs Hompage - http://findbugs.sourceforge.net Erklärung des Eclipse-Plugins - http://andrei.gmxhome.de/findbugs/index.html IBM Tutorial zu FindBugs - http://www.ibm.com/developerworks/java/library/j-fin Team Code Orange 13

Code-Metriken Teil II The overview pyramid Abstractness/Instability Chart Tools Team Code Orange 1

Overview Pyramid: Basisstruktur Charakterisierung der Struktur eines Systems Größe & Komplexität Verwendung der Vererbung Kopplung Team Code Orange 2

Overview Pyramid: Größe und Komplexität I Direkt erfassbare Kennzahlen CYCLO: zyklomatische Komplexität ( JavaNCSS) LOC: (Executable) Lines of Code NOM: Number of Methods NOC: Number of Classes NOP: Number of Packages Team Code Orange 3

Overview Pyramid: Größe und Komplexität II Abgeleitete Kennzahlen Intrinsic operation complexity (CYCLO/LOC) Operation structuring (LOC/NOM) Class structuring (NOM/NOC) High-Level structuring (NOC/NOP) Granularität des Systems Team Code Orange 4

Overview Pyramid: Kopplung Direkt erfassbare Kennzahlen FANOUT: Zahl der aufgerufenen Klassen CALLS: Zahl der Methoden-Aufrufe Abgeleitete Kennzahlen: Coupling disperson (FANOUT/CALLS): Wie stark sind die Klassen gekoppelt? Coupling intensity (CALLS/NOM) : Wie viele andere Operationen werden von einer Operation aus aufgerufen? Team Code Orange 5

Overview Pyramid: Vererbung Direkt erfassbare Kennzahlen AHH: Average Hierarchy Height (Tiefe des Vererbungsbaums) ANDC: Average Number of Derived Classes (Breite des Vererbungsbaums) Team Code Orange 6

Overview Pyramid: Beispiel PHP: Zend Framework Team Code Orange 7

Abstractness/Instability Chart Abhängigkeiten eines Paketes Ca: Afferent Coupling (incoming dependencies) Anzahl der Packages, die von Klassen innerhalb des Packages abhängen Ce: Efferent Coupling (outgoing dependencies) Anzahl der Packages, von denen Klassen innerhalb des Packages abhängen Beispiel: Package b Ca = 1 Ce = 2 Team Code Orange 8

Instability eines Package Instability I I = Ce Ce Ca [0,1] Bedeutung Von wie vielen anderen Packages hängt ein Package ab? Je mehr fremde Packages benutzt werden, umso größer die Instabilität. Instabil (I = 1): leicht änderbar Stabil (I = 0): schwer änderbar Team Code Orange 9

Abstractness eines Package Abstractness A A = ac ac cc [0,1] ac: Anzahl an abstrakten Klassen / Interfaces cc: Anzahl aller Klassen Team Code Orange 10

Abstractness/Instability Chart Abstractness/Instability Chart Team Code Orange 11

Abstractness/Instability Chart: Beispiel PHP: Zend Framework Team Code Orange 12

Tools Java JDepend (A/I Chart): auch als Eclipse-Plugin http://clarkware.com/software/jdepend.html IPlasma (Overview pyramid) http://loose.upt.ro/iplasma/ PHP PHP Depend (Overview pyramid + A/I Chart) http://www.pdepend.org Team Code Orange 13

Quellen / Abbildungsverzeichnis Quellen Tool-gestütztes Architekturmanagement in J2EE-Projekten http://www.valtech.de/etc/medialib/library/it_consulting/de/de_whitepapers.par.52397.f Using the Overview Pyramid http://www.manuel-pichler.de/archives/31-using-the-overview-pyramid.html#ml06 How reusable, extensible and maintainable is your software? http://www.manuel-pichler.de/archives/21-how-reusable,-extensible-and-maintainable-i Software-Metriken http://www.trautwein.fh-aachen.de/download/swe/swe_ausarbeitungen_ws2008/a_ Abbildungen Übersicht Overview Pyramid : http://www.manuel-pichler.de/archives/31-using-the-overview-pyramid.html#ml06 Team Code Orange 14

Cobertura Einführung Features Beispiel Integration in den Build-Prozess Demo Team Code Orange 1

Cobertura Einführung: la cobertura, spanisch für Abdeckung (von JCoverage) freies Java-Tool zur Berechnung der JUnit Testabdeckung zeigt ungetesteten oder unerreichbaren Code auf Team Code Orange 2

Cobertura Features zeigt den Anteil der getesteten Codezeilen von Klassen, Paketen oder dem Projekt zeigt die zyklomatische Komplexität von Klassen, Paketen oder dem Projekt generiert Reports in HTML oder XML kann über Kommandozeile oder von Buildern ausgeführt werden führt die Tests auf java bytecode aus Team Code Orange 3

Cobertura Beispiel: http://cobertura.sourceforge.net/sample/ Team Code Orange 4

Cobertura Integration in den Build-Prozess: Einschub: Build-Tools wie make, Apache-Ant oder Apache-Maven automatisieren Vorgänge wie: - Kompilierung - Test - Installation von Software Team Code Orange 5

Cobertura Integration in den Build-Prozess: Einschub: Apache-Ant Java Build-Tool Open Source Another Neat Tool XML-gesteuert (Standard: build.xml ) Eclipse-Integration Team Code Orange 6

Cobertura Integration in den Build-Prozess: Einschub: Apache-Ant Grundstrukturen der XML: Project Targets wie build oder clean Tasks (über 150 mitgeliefert; selbst implementierbar): Javac (Kompilieren von Quellcode) Copy, Delete, Move Cvs (CVS-Operationen) Mail (Versenden von E-mails) Junit Properties (z.b. zum Pfade setzen) Team Code Orange 7

Cobertura Integration in den Build-Prozess: build.xml für Cobertura (demo): Team Code Orange 8

Cobertura Integration in den Build-Prozess: Starten des Builds (demo): Team Code Orange 9

Cobertura Quellen und hilfreiche Links: http://cobertura.sourceforge.net/ http://www.ibm.com/developerworks/java/library/j-cobertura/ http://ant.apache.org/ http://www.joller-voss.ch/tools/eclipse/apacheantineclipsesta http://de.wikipedia.org/wiki/apache_ant Team Code Orange 10