Refactoring wird angewandt, wenn eine Software-Inspektion Defekte im Programmcode feststellt. Code-Smells sind Beispiele solcher Defekte im Programmcode. Clean-Code ist ein neuerer Ansatz, der genauso wie das Code-Smell-Konzept festlegt, wann Defekte im Programmcode vorliegen. Für Code-Smells gibt es bereits zahlreiche Code-Analyse-Tools, die die automatische Erkennung solcher Defekte ermöglicht. Die vorliegende Arbeit implementiert ein Clean-Code-Analyse-Tool für Programmcode mithilfe von statischer Code-Analyse, das Refactoring-Hinweise ausgibt. Für diesen Zweck werden ein Lexer und ein Parser zur syntaktischen Analyse eines Subsets der Programmiersprache C++ implementiert. Die Evaluation durch quantitative Datenanalyse zeigt, wie nützlich die automatische Erkennung von Clean-Code mithilfe eines statischen Code-Analyse-Tools bei der Erstellung von Programmcode mit höherer Lesbarkeit für Entwicklerinnen und Entwickler ist.:Inhaltsverzeichnis 6
Abbildungsverzeichnis 9
Tabellenverzeichnis 10
Akronyme 13
1. Einleitung 14
2. Theoretische Grundlagen 17
2.1. Wichtige Begriffe und Definitionen 17
2.1.1. Software-Inspektion 17
2.1.2. Fagan-Inspektion 18
2.1.3. Checklistenbasiertes Code-Review 19
2.1.4. Statische vs. dynamische Code-Analyse-Tools 21
2.1.5. Refactoring 24
2.1.6. Code-Smells 24
2.1.7. Clean-Code 25
2.2. Code-Smell-Heuristiken im Detail 27
2.3. Einführung in den Compilerbau 32
2.3.1. Kurze Einführung in die Sprachtheorie 32
2.3.2. Die lexikalische Analyse 34
2.3.3. Die syntaktische Analyse 35
3. Forschungsstand 38
3.1. Code-Smell-Analyse-Tools auf Grundlage von Strukturinformationen 42
3.2. Code-Smell-Analyse durch maschinelles Lernen 50
3.3. Code-Smell-Suche mithilfe von Änderungsdaten 52
3.4. Code-Smell-Erkennung durch Textanalyse 54
4. Forschungsfragen und Konzeptentwicklung 56
4.1. Clean-Code: Welche Teile sind messbar? - Die Konzeptionalisierung hin zu einem maschinenlesbaren Ansatz 56
4.1.1. Größe von Entitäten im Clean-Code 57
4.1.2. Clean-Code und Zugriffsmodifikatoren 59
4.1.3. Bezeichner von Entitäten im Clean-Code 60
4.1.4. Formatierungskonventionen des Clean-Codes 62
4.1.5. Funktionsparameterübergabe im Clean-Code-Konzept 63
4.1.6. Clean-Code-Kommentare 65
4.1.7. Clean-Code — Was nicht geht 66
4.1.8. Platzierung von Entitäten im Clean-Code 67
4.2. Forschungsfragen und Hypothesen 69
5. Methodik 71
5.1. Implementierung des statischen Clean-Code-Analyse-Tools 71
5.1.1. Abhängigkeiten 72
5.1.2. Umsetzung des statischen Clean-Code-Analyse-Tools 72
5.1.3. Abhängige Variablen 78
5.2. Checklistenbasiertes Code-Review 80
5.2.1. Begründung der Methodenauswahl 80
5.2.2. Fragebogen 81
5.2.3. Unabhängige Variablen 85
5.2.4. Ablauf der Studie 86
6. Ergebnisse 87
6.1. Populationsbeschreibung 88
6.2. Deskriptive Werte der Evaluationsitems aus der Lesbarkeitsstudie 88
6.3. Deskriptive Werte der Evaluation des statischen Clean-Code-Analyse-Tools 90
6.4. Inferenzstatistik 91
7. Diskussion 96
7.1. Beantwortung der Forschungsfrage 96
7.2. Bedrohungen der Validität 97
7.3. Ausblick und Vergleich mit ähnlichen Code-Analyse-Tools 98
8. Fazit 100
Literaturverzeichnis 102
A. Anhang 112
A.1. Tabellen 112
A.2. Clean-Code Analyse-Tool Ein- und Ausgabe 124
A.3. Lesbarkeitsstudie 135
A.4. Regressionsergebnisse 144
B. CD 148
C. Selbstständigkeitserklärung 148
Identifer | oai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:90440 |
Date | 14 March 2024 |
Creators | Eichenseer, Maurice |
Contributors | Wilhelm-Stein, Thomas, Müller, Andreas, Technische Universität Chemnitz |
Source Sets | Hochschulschriftenserver (HSSS) der SLUB Dresden |
Language | German |
Detected Language | German |
Type | info:eu-repo/semantics/updatedVersion, doc-type:masterThesis, info:eu-repo/semantics/masterThesis, doc-type:Text |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0023 seconds