Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard...

21
Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen Automatische Erkennung von „Bad Smells“

Transcript of Automatische Erkennung von „Bad Smells“ · 1.1 ∧ woc c 0.5 ∧ nopa c 4 ∨ noam c 4 Bernhard...

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

Quellen

● Fowler: Fowler, Martin; Refactoring; Addison-Wesley

● Mäntylä: Mäntylä, Mika; Bad Smells in Software; Helsinki University

● Raţiu: Raţiu, Danuiel et al; Using History Information to Improve Design Flaws Detection

Bernhard Berger Seminar Transformationstechnik Bad Smells Universität Bremen