Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Automatische Erkennung von „Bad Smells“
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Automatische Erkennung von „Bad Smells“
● Was sind „Bad Smells“?
● Warum automatische Erkennung?
● Welche Ansätze gibt es?
● Vergleich!
Inhalt
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Was sind „Bad Smells“?
● Warum automatische Erkennung?
● Welche Ansätze gibt es?
● Vergleich!
Inhalt
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Indikatoren für schlechte Programmierung
● Fowler definiert 22 Bad Smells● Weitere im Internet
„Bad Smells“ nach Fowler
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Beispiel:
„Bad Smells“ nach Fowler
„Jede Klasse, die Sie erstellen kostet Geld, um sie zu warten und zu verstehen. Eine Klasse, die nicht genug leistet, um ihr Geld wert zu sein, sollte eliminiert werden. [...]“ (Fowler)
„Nach unserer Erfahrung erreicht kein System von Metriken die informierte menschliche Intuition. [...]“ (Fowler)
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Was sind „Bad Smells“?
● Warum automatische Erkennung?
● Welche Ansätze gibt es?
● Vergleich!
Inhalt
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Automatische Erkennung
● Wieso keine Suche durch die Programmierer?
● Finanzieller Vorteil● Mensch unzuverlässig
Je länger eine Programmierer im Projekt, desto schlechter ist die Beurteilung von Bad Smells. (Mäntylä)
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Was sind „Bad Smells“?
● Warum automatische Erkennung?
● Welche Ansätze gibt es?
● Vergleich!
Inhalt
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Ansätze
Mustersuche
Metriken
Erkennung auf der Ebene des Quellcodes
Erkennung auf der Ebene von Metainformationen
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Mustersuche
● Suche nach Mustern● Erkennung auf verschiedenen Ebenen:
– Quellcode– Tokenstrom– (abstrakter) Syntaxbaum
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Quellcodeebene
● Tools bereits vorhanden:– diff – exakte Kopien – grep – reguläre Ausdrücke
● Eingeschränkte Fähigkeiten
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Tokenstrom
● Zeichen erhalten Bedeutungen
● Sequenz von Token● Benötigt Parser
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Syntaxbaum
= = =
ls1 rs1 ls2 rs2 ls3 rs3
list of statements
● Zusätzliche Informationen:– Datentypen– Datenfluss– Kontrollfluss (dom, pdom)– ...
● Flexiblere Suchmuster
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Ansätze
Mustersuche
Metriken
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Metriken (1)
● Bad Smells kann man messen● Viele Metriken vorhanden● Metriken auf Klassen- und
Funktionsebene● Korrelation zwischen Bad Smell und
Metrik(en)
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
Metriken (2)
● Beispiel von Raţiu:
● „Willkürliche“ Grenzen● Wie zuverlässig sind diese Grenzen?● Metriken enstehen aus u.a. AST
DataClass C =WMC C NOM C
1.1∧WOC C 0.5∧NOPA C 4∨NOAM C 4
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Was sind „Bad Smells“?
● Warum automatische Erkennung?
● Welche Ansätze gibt es?
● Vergleich!
Inhalt
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Mustersuche:– Duplizierter Code– Lange Parameterlisten
● Metriken:– Schrotkugeln herausoperieren– Neid– viele andere
Vergleich (1) Beispiele
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Mustersuche:
+ Arbeiten auf Codeebene
- Nicht für alles anwendbar● Metriken:
+ Anwendbar für fast alles
- Auf relativ hohem Niveau
Vergleich (2)
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen
● Reine Mustersuche selten anwendbar● Metriken „ungenauer“● Metriken werden z.t. über Muster
gewonnen● Metriken nicht immer ausreichend
Zusammenfassung
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen