Codeanalyse mit FindBugs, PMD, Checkstyle und JDepend

Dieses Seminar führen wir im Moment nicht durch.

Empfohlene Schulungsdauer: 2 Tage, insgesamt 16 Unterrichtsstunden à 45 Minuten

Kursziele

Statische Analysetools wie FindBugs, PMD, Checkstyle und JDepend erkennen eigenständig Fehler, Schwachstellen und Konventionsverstöße in Java-Programmen. Anders als dynamische Tests auf Korrektheit via JUnit oder Performancetests finden diese Analysewerkzeuge sowohl unbenutzte Variablen/Methoden oder öffentliche Methoden ohne API-Dokumentation als auch inkonsistente Namensgebungen, leere catch-Blöcke, falsche Synchronisation und Performance-Fallen. Teilnehmer des Seminars lernen die Programme ausführlich kennen, sodass Regeln präzise ausgewählt und im Build-Management etwa über Ant and Maven eingebunden werden können. Da sich die Tools in ihrer Funktion überschneiden, geht das Seminar speziell auf die jeweiligen Besonderheiten ein. PMD etwa findet Quellcode-Duplizierungen durch die Analyse des Quellcodes selbst, dagegen kann FindBugs Fremdbibliotheken auf Bytecode-Basis analysieren und auch risikohafte Konstruktionen erkennen. Zyklische Abhängigkeiten werden optimal von JDepend und Verstöße gegen Quellcodekonventionen von Checkstyle angezeigt. Ein weiteres wichtiges Thema ist die Konfiguration der Fehlermeldungen. Eine unzureichende Konfiguration führt zu einer Häufung von Falsch-Positiv-Meldungen (korrekter Code trotz Warnung) und im ungünstigsten Fall zum Ausbleiben einer Meldung bei fehlerhaftem Code (Falsch-Negativ-Situation). Seminarteilnehmer lernen daher genau, welche Verstöße im Einzelnen getestet und die Werkzeuge passend konfiguriert werden. Ein Ausblick auf die Erweiterung der Analysefunktionen durch eigene Regeln rundet die Schulung ab. Eine Kurzeinführung in interne Repräsentationen von Quell- oder Bytecode wird an dieser Stelle gegeben.

Zielgruppe

Entwickler

Kursvoraussetzungen

Gute Praxiserfahrung in Java.

Seminarinhalte

  • Analysewerkzeuge in Java

    - Qualitätskontrolle durch Code-Review Tools
    - Toolfokus: Konventionen, schlechter Programmierstil, Bugs, Kennzahlen
    - IDE-Integration, Plugins für Eclipse und NetBeans
    - Grundsätzliche Kritik an Code-Review Tools
    - Statische und dynamische Codeanalyse – ein Ausblick
  • Stilanalyse mit Checkstyle

    - Installation und Voraussetzungen
    - Aufrufoptionen in der Kommandozeile
    - Integration in Eclipse, Ant und Maven2
    - Übersicht über Checkstyle-Regeln mit Code-Beispielen
    - Erstellung eigener Regeln, Checkstyle-SDK-GUI
    - Konfiguration mit Filtern, Reduktion der Regeln auf ein sinnvolles Maß
  • FindBugs

    - Installation und Voraussetzungen
    - FindBugs GUI, Aufrufoptionen in der Kommandozeile
    - Integration in Eclipse/NetBeans, Ant-Task, Maven-Plugin
    - Übersicht über die Fehlerkategorien mit Code-Beispielen
    - Kategorien: Schlechte Programmierpraxis, Korrektheit, Multithreading, Performance, …
    - Konfiguration mit Filter Files und Match-Klauseln
    - FindBugs-Annotationen: CheckForNull, CheckReturnValue, …
    - Eigene Bug-Detektoren schreiben, BCEL
  • PMD

    - Installation und Voraussetzungen
    - Aufrufoptionen in der Kommandozeile
    - Integration in Eclipse/NetBeans, Ant-Task, Maven-Plugin
    - Übersicht über PMD Regeln mit Code-Beispielen
    - Basisregeln, Regeln für Blöcke, Quellcodegrößen, Designschwächen, …
    - SuppressWarnings-Annotation
    - Quellcodeduplikate mit PMDs Copy/Paste Detector (CPD) finden
    - JavaServer Pages mit PMD prüfen
    - PMD-Renderer (Text, XML, HTML, schönes HTML)
    - Erstellung eigener Regeln mit Java oder XPath, AST durch JavaCC
    - Schwellwerte für Regelverletzungen einstellen
  • JDepend

    - Installation und Voraussetzungen
    - Graphische Interfaces
    - Integration in Eclipse, Ant und Maven2
    - Übersicht über Arten von Abhängigkeit
    - Wichtig: auf zyklische Abhängigkeiten prüfen
    - Konfiguration von JDepend
  • Weiterführendes

    - Hammurapi
    - Metriken und Code-Reports: XRadar, SonarJ, Dependometer
    - Maven Dashboard Report Plugin

Schlagwörter

Weiterführende Seminare

[Addthis] [Google Bookmarks] [Yahoo! Bookmarks] [Delicius] [Mister Wong]

 

[Nach oben]