Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden...

77
Warum verwenden Softwareentwickler keine Werkzeuge zur stati- schen Codeanalyse? Thies Johannsen Freie Universität Berlin 9. Juli 2015

Transcript of Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden...

Page 1: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse?

Thies JohannsenFreie Universität Berlin

9. Juli 2015

Page 2: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Übersicht

EinführungWas ist statische Codeanalyse?

Ein einfaches Beispiel: unerreichbarer CodeWerkzeuge zur statischen Codeanalyse

Studie: Why Don’t Software Developers Use Static Analysis Tools to FindBugs?

Schwierigkeiten bei der statischen CodeanalyseFalse PositivesZu viele Meldungenschlechte Fehlermeldungen

Zusammenfassung

,Thies Johannsen, 9. Juli 2015 2/ 44

Page 3: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Was ist statische Codeanalyse?

Was ist statische Codeanalyse?

É wird auch Quellcodeanalyse genanntÉ formale Prüfung des Quellcodes auf FehlerÉ wird ausgeführt bevor der Code übersetzt wird

,Thies Johannsen, 9. Juli 2015 3/ 44

Page 4: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Was ist statische Codeanalyse?

Welche Fehler werden erkannt?

É Typechecking (passen die Datentypen)É Puffer-ÜberläufeÉ Speicherlecks (new ohne delete, verlorene Pointer)É unerreichbarer Code (siehe Beispiel)É Stylechecking (werden bei switch...case... alle Optionen beachet)É ...

,Thies Johannsen, 9. Juli 2015 4/ 44

Page 5: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

Ein einfaches Beispiel:Unerreichbarer Code

,Thies Johannsen, 9. Juli 2015 5/ 44

Page 6: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

1 #include <stdio .h>2 #include <stdint .h>34 int main( ) {5 uint32_t foo ;67 i f (1)8 foo = 0x12345678;9 else

10 foo = 0x89abcdef ;1112 pr int f ( "%x\n" , foo ) ;1314 return 0;15 }

,Thies Johannsen, 9. Juli 2015 6/ 44

Page 7: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

,Thies Johannsen, 9. Juli 2015 7/ 44

Page 8: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

,Thies Johannsen, 9. Juli 2015 7/ 44

Page 9: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

1 0: 55 push %rbp2 1: 48 89 e5 mov %rsp,%rbp3 4: 48 83 ec 10 sub $0x10,%rsp4 8: 48 bf 00 00 00 00 00 movabs $0x0,%rdi5 f: 00 00 006 12: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp)7 19: c7 45 f8 78 56 34 12 movl $0x12345678,-0x8(%rbp)8 20: 8b 75 f8 mov -0x8(%rbp),%esi9 23: b0 00 mov $0x0,%al

10 25: e8 00 00 00 00 callq 2a <main+0x2a>11 2a: 31 f6 xor %esi,%esi12 2c: 89 45 f4 mov %eax,-0xc(%rbp)13 2f: 89 f0 mov %esi,%eax14 31: 48 83 c4 10 add $0x10,%rsp15 35: 5d pop %rbp16 36: c3 retq

,Thies Johannsen, 9. Juli 2015 8/ 44

Page 10: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

É Der Code wird ohne Warnungen übersetzt.É Der tote Code wird vom Compiler wegoptimiert.É Das Programm arbeitet genau wie erwartet.

É Also alles in Ordnung?

É Konnte der Code wirklich wegoptimiert werden oder liegt dasProblem eventuell woanders?

É Warum informiert mich der Compiler nicht darüber, dass kompletteCodeblöcke entfernt werden?

É Codezeilen werden üblicherweise nicht ohne Grund geschrieben.

,Thies Johannsen, 9. Juli 2015 9/ 44

Page 11: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

É Der Code wird ohne Warnungen übersetzt.É Der tote Code wird vom Compiler wegoptimiert.É Das Programm arbeitet genau wie erwartet.É Also alles in Ordnung?

É Konnte der Code wirklich wegoptimiert werden oder liegt dasProblem eventuell woanders?

É Warum informiert mich der Compiler nicht darüber, dass kompletteCodeblöcke entfernt werden?

É Codezeilen werden üblicherweise nicht ohne Grund geschrieben.

,Thies Johannsen, 9. Juli 2015 9/ 44

Page 12: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

É Der Code wird ohne Warnungen übersetzt.É Der tote Code wird vom Compiler wegoptimiert.É Das Programm arbeitet genau wie erwartet.É Also alles in Ordnung?

É Konnte der Code wirklich wegoptimiert werden oder liegt dasProblem eventuell woanders?

É Warum informiert mich der Compiler nicht darüber, dass kompletteCodeblöcke entfernt werden?

É Codezeilen werden üblicherweise nicht ohne Grund geschrieben.

,Thies Johannsen, 9. Juli 2015 9/ 44

Page 13: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

É Der Compiler prüft auf lexikalische/syntaktische Korrektheit.

É Ist der Quellcode korrekt, wird er übersetzt und optimiert.É Semantik wird nicht betrachtet.

Eine mögliche Lösung:

Mit statischer Codeanalyse den Quelltext untersuchen.

,Thies Johannsen, 9. Juli 2015 10/ 44

Page 14: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

É Der Compiler prüft auf lexikalische/syntaktische Korrektheit.É Ist der Quellcode korrekt, wird er übersetzt und optimiert.

É Semantik wird nicht betrachtet.

Eine mögliche Lösung:

Mit statischer Codeanalyse den Quelltext untersuchen.

,Thies Johannsen, 9. Juli 2015 10/ 44

Page 15: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

É Der Compiler prüft auf lexikalische/syntaktische Korrektheit.É Ist der Quellcode korrekt, wird er übersetzt und optimiert.É Semantik wird nicht betrachtet.

Eine mögliche Lösung:

Mit statischer Codeanalyse den Quelltext untersuchen.

,Thies Johannsen, 9. Juli 2015 10/ 44

Page 16: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

É Der Compiler prüft auf lexikalische/syntaktische Korrektheit.É Ist der Quellcode korrekt, wird er übersetzt und optimiert.É Semantik wird nicht betrachtet.

Eine mögliche Lösung:

Mit statischer Codeanalyse den Quelltext untersuchen.

,Thies Johannsen, 9. Juli 2015 10/ 44

Page 17: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

1 #include <stdio .h>2 #include <stdint .h>34 int main( ) {5 uint32_t foo ;67 i f (1)8 foo = 0x12345678;9 else

10 foo = 0x89abcdef ;1112 pr int f ( "%x\n" , foo ) ;1314 return 0;15 }

,Thies Johannsen, 9. Juli 2015 11/ 44

Page 18: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

Clang Static Analyzer

scan-build: Using ’/usr/lib/llvm-3.6/bin/clang’for static analysis

if_true.c:10:11: warning: This statement is never executedfoo = 0x89abcdef;

^~~~~~~~~~1 warning generated.scan-build: 1 bug found.scan-build: Run

’scan-view /tmp/scan-build-2015-07-01-111953-6304-1’to examine bug reports.

,Thies Johannsen, 9. Juli 2015 12/ 44

Page 19: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

,Thies Johannsen, 9. Juli 2015 13/ 44

Page 20: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Beispiel: unerreichbarer Code

,Thies Johannsen, 9. Juli 2015 14/ 44

Page 21: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Übersicht über Werkzeuge zur statischenCodeanalyse

Tabelle: Gängige Analysewerkzeuge

Tool ProgrammierspracheFxCop .NET (prüft CIL)Clang C, C++, Objective-C, Objective-C++Cppcheck C, C++Lint/Splint C, C++Checkstyle JavaFindBugs Java

Plugins sind für diverse IDEs verfügbar

,Thies Johannsen, 9. Juli 2015 15/ 44

Page 22: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Übersicht über Werkzeuge zur statischenCodeanalyse

In die meisten IDEs ist bereits eine einfache Analysefunktion integriert.

Abbildung: Hinweis auf unbenutzte Variable in QtCreator

,Thies Johannsen, 9. Juli 2015 16/ 44

Page 23: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Funktionsweise

1 i f (a > b) {2 nConsec = 0;3 } else {4 s1 = getHexChar(1) ;5 s2 = getHexChar(2) ;6 }7 return nConsec;

,Thies Johannsen, 9. Juli 2015 17/ 44

Page 24: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Funktionsweise

(B. Chess, J. West, “Secure Programming with Static Analysis: Getting Software Security Right with StaticAnalysis“, Addison-Wesley Professional, 2007)

,Thies Johannsen, 9. Juli 2015 18/ 44

Page 25: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Funktionsweise

É Aufrufgraph für Funktionen wird erzeugtÉ Datenfluss wird kontrolliert

É Wird eine Variable mehrfach beschrieben ohne gelesen zu werden?É Wird aus uninitialisierten Variablen gelesen?

É Mit Hilfe eines Zustandsautomaten wird geprüft, ob auf jedes new eindelete folgt.

É weitere Sprachenabhängige Regeln

,Thies Johannsen, 9. Juli 2015 19/ 44

Page 26: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Why Don’t Software Developers Use Static Analysis Tools toFind Bugs?

Brittany Johnson, Yoonki Song, Emerson Murphy-Hill, Robert BowdidgeICSE 2013

,Thies Johannsen, 9. Juli 2015 20/ 44

Page 27: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

É Analysetools machen das finden von Bugs schneller und günstiger.

É Alle Teilnehmer der Studie sind der Meinung, dass die Verwendungvon Analysetools Vorteile bringt.

É Warum benutzt es trotzdem kaum jemand?

,Thies Johannsen, 9. Juli 2015 21/ 44

Page 28: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

É Analysetools machen das finden von Bugs schneller und günstiger.É Alle Teilnehmer der Studie sind der Meinung, dass die Verwendung

von Analysetools Vorteile bringt.

É Warum benutzt es trotzdem kaum jemand?

,Thies Johannsen, 9. Juli 2015 21/ 44

Page 29: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

É Analysetools machen das finden von Bugs schneller und günstiger.É Alle Teilnehmer der Studie sind der Meinung, dass die Verwendung

von Analysetools Vorteile bringt.

É Warum benutzt es trotzdem kaum jemand?

,Thies Johannsen, 9. Juli 2015 21/ 44

Page 30: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Forschungsfragen:

É What reasons do developers have for using or not using staticanalysis tools to find bugs?

É How well do current static analysis tools fit into the workflows ofdevelopers? We define a workflow as the steps a developer takeswhen writing, inspecting and modifying their code.

É What improvements do developers want to see being made to staticanalysis tools?

,Thies Johannsen, 9. Juli 2015 22/ 44

Page 31: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Forschungsfragen:

É What reasons do developers have for using or not using staticanalysis tools to find bugs?

É How well do current static analysis tools fit into the workflows ofdevelopers? We define a workflow as the steps a developer takeswhen writing, inspecting and modifying their code.

É What improvements do developers want to see being made to staticanalysis tools?

,Thies Johannsen, 9. Juli 2015 22/ 44

Page 32: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Forschungsfragen:

É What reasons do developers have for using or not using staticanalysis tools to find bugs?

É How well do current static analysis tools fit into the workflows ofdevelopers? We define a workflow as the steps a developer takeswhen writing, inspecting and modifying their code.

É What improvements do developers want to see being made to staticanalysis tools?

,Thies Johannsen, 9. Juli 2015 22/ 44

Page 33: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Teilnehmer an der Studie:

É 20 Teilnehmer insgesamtÉ 16 professionelle EntwicklerÉ 4 Studenten (graduate) mit Berufserfahrung

É 2 Teilnehmer hatten Erfahrung im Erstellen von StatischenAnalysetools.

É 2 Teilnehmer wurden per Telefon, bzw. Videochat befragt.

,Thies Johannsen, 9. Juli 2015 23/ 44

Page 34: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

,Thies Johannsen, 9. Juli 2015 24/ 44

Page 35: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?Methodik:

É „halb-strukturiertes“ Interview, 40 - 60 MinutenÉ Es wurde ein Frageboden vorbereitet, aber abhängig von den Antworten

der Teilnehmer wurden spontan weitere Fragen gestellt oder ausgelassen.

É Interaktives InterviewÉ Die Teilnehmer wurden bei ihrer Arbeit beobachtet und gebeten ihren

Arbeitsablauf zu erklären.É Währenddessen wurden Fragen gestellt:

É Now that you have run your tool and gotten your feedback, what is your nextmove(s)?

É Do you configure the settings of your tool from default? If so, how?É Does this static analysis tool aid in assessing what to do about a warning?É Do you feel that ”quick fixes” or code suggestions would be helpful if they

were available?É 6 Teilnehmer konnten aus Vertraulichkeitsgründen nicht am interaktiven

Interview teilnehmen, diese bekamen Aufgaben gestellt.É Den 2 Teilnehmern, die per Telefon, bzw. Videochat befragt wurden,

wurde ein Szenario vorgelegt und es wurde gefragt, wie sie vorgehenwürden.

É Participatory DesignÉ Den Teilnehmern wurde ein leeres Blatt Papier gegeben und sie durften

nach belieben schreiben/zeichnen, welche Verbesserungen an denAnalysewerkzeugen sie gerne hätten.

,Thies Johannsen, 9. Juli 2015 25/ 44

Page 36: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?Methodik:

É „halb-strukturiertes“ Interview, 40 - 60 MinutenÉ Es wurde ein Frageboden vorbereitet, aber abhängig von den Antworten

der Teilnehmer wurden spontan weitere Fragen gestellt oder ausgelassen.É Interaktives Interview

É Die Teilnehmer wurden bei ihrer Arbeit beobachtet und gebeten ihrenArbeitsablauf zu erklären.

É Währenddessen wurden Fragen gestellt:É Now that you have run your tool and gotten your feedback, what is your next

move(s)?É Do you configure the settings of your tool from default? If so, how?É Does this static analysis tool aid in assessing what to do about a warning?É Do you feel that ”quick fixes” or code suggestions would be helpful if they

were available?É 6 Teilnehmer konnten aus Vertraulichkeitsgründen nicht am interaktiven

Interview teilnehmen, diese bekamen Aufgaben gestellt.É Den 2 Teilnehmern, die per Telefon, bzw. Videochat befragt wurden,

wurde ein Szenario vorgelegt und es wurde gefragt, wie sie vorgehenwürden.

É Participatory DesignÉ Den Teilnehmern wurde ein leeres Blatt Papier gegeben und sie durften

nach belieben schreiben/zeichnen, welche Verbesserungen an denAnalysewerkzeugen sie gerne hätten.

,Thies Johannsen, 9. Juli 2015 25/ 44

Page 37: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?Methodik:

É „halb-strukturiertes“ Interview, 40 - 60 MinutenÉ Es wurde ein Frageboden vorbereitet, aber abhängig von den Antworten

der Teilnehmer wurden spontan weitere Fragen gestellt oder ausgelassen.É Interaktives Interview

É Die Teilnehmer wurden bei ihrer Arbeit beobachtet und gebeten ihrenArbeitsablauf zu erklären.

É Währenddessen wurden Fragen gestellt:É Now that you have run your tool and gotten your feedback, what is your next

move(s)?É Do you configure the settings of your tool from default? If so, how?É Does this static analysis tool aid in assessing what to do about a warning?É Do you feel that ”quick fixes” or code suggestions would be helpful if they

were available?É 6 Teilnehmer konnten aus Vertraulichkeitsgründen nicht am interaktiven

Interview teilnehmen, diese bekamen Aufgaben gestellt.É Den 2 Teilnehmern, die per Telefon, bzw. Videochat befragt wurden,

wurde ein Szenario vorgelegt und es wurde gefragt, wie sie vorgehenwürden.

É Participatory DesignÉ Den Teilnehmern wurde ein leeres Blatt Papier gegeben und sie durften

nach belieben schreiben/zeichnen, welche Verbesserungen an denAnalysewerkzeugen sie gerne hätten.

,Thies Johannsen, 9. Juli 2015 25/ 44

Page 38: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Auswerten der Antworten:

É abschreiben aller gegebenen AntwortenÉ Kategorisieren nach R. Gordon „Coding interview responses“

É Tool OutputÉ Supporting TeamworkÉ User Input and CustomizabilityÉ Result UnderstandabilityÉ Developer Workflows

É Jede Antwort wurde markiert, in welche Kategorie sie eingeordnetwerden kann und ob die Antwort positiv oder negativ ist.

,Thies Johannsen, 9. Juli 2015 26/ 44

Page 39: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Auswerten der Antworten:

É abschreiben aller gegebenen AntwortenÉ Kategorisieren nach R. Gordon „Coding interview responses“

É Tool OutputÉ Supporting TeamworkÉ User Input and CustomizabilityÉ Result UnderstandabilityÉ Developer Workflows

É Jede Antwort wurde markiert, in welche Kategorie sie eingeordnetwerden kann und ob die Antwort positiv oder negativ ist.

,Thies Johannsen, 9. Juli 2015 26/ 44

Page 40: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Auswerten der Antworten:

É abschreiben aller gegebenen AntwortenÉ Kategorisieren nach R. Gordon „Coding interview responses“

É Tool OutputÉ Supporting TeamworkÉ User Input and CustomizabilityÉ Result UnderstandabilityÉ Developer Workflows

É Jede Antwort wurde markiert, in welche Kategorie sie eingeordnetwerden kann und ob die Antwort positiv oder negativ ist.

,Thies Johannsen, 9. Juli 2015 26/ 44

Page 41: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

,Thies Johannsen, 9. Juli 2015 27/ 44

Page 42: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Einige beispielhafte Antworten:

É ”...like I mentioned with FlexLint it gives you so many warnings andsifting through them is so, arduous that whenever I just look at it I’mlike ehhh forget this.”

É ”so now I wanna know why raising a string exception is bad. Likewhat should I be doing instead?”

É ”I find that the information they provide is not very useful, so I tendto ignore them.”

É ”Clang is my favorite. Its built into the compiler. You don’t have toinvoke anything special.”

,Thies Johannsen, 9. Juli 2015 28/ 44

Page 43: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Einige beispielhafte Antworten:

É ”...like I mentioned with FlexLint it gives you so many warnings andsifting through them is so, arduous that whenever I just look at it I’mlike ehhh forget this.”

É ”so now I wanna know why raising a string exception is bad. Likewhat should I be doing instead?”

É ”I find that the information they provide is not very useful, so I tendto ignore them.”

É ”Clang is my favorite. Its built into the compiler. You don’t have toinvoke anything special.”

,Thies Johannsen, 9. Juli 2015 28/ 44

Page 44: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Einige beispielhafte Antworten:

É ”...like I mentioned with FlexLint it gives you so many warnings andsifting through them is so, arduous that whenever I just look at it I’mlike ehhh forget this.”

É ”so now I wanna know why raising a string exception is bad. Likewhat should I be doing instead?”

É ”I find that the information they provide is not very useful, so I tendto ignore them.”

É ”Clang is my favorite. Its built into the compiler. You don’t have toinvoke anything special.”

,Thies Johannsen, 9. Juli 2015 28/ 44

Page 45: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Einige beispielhafte Antworten:

É ”...like I mentioned with FlexLint it gives you so many warnings andsifting through them is so, arduous that whenever I just look at it I’mlike ehhh forget this.”

É ”so now I wanna know why raising a string exception is bad. Likewhat should I be doing instead?”

É ”I find that the information they provide is not very useful, so I tendto ignore them.”

É ”Clang is my favorite. Its built into the compiler. You don’t have toinvoke anything special.”

,Thies Johannsen, 9. Juli 2015 28/ 44

Page 46: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Einige beispielhafte Antworten:

É ”...like I mentioned with FlexLint it gives you so many warnings andsifting through them is so, arduous that whenever I just look at it I’mlike ehhh forget this.”

É ”so now I wanna know why raising a string exception is bad. Likewhat should I be doing instead?”

É ”I find that the information they provide is not very useful, so I tendto ignore them.”

É ”Clang is my favorite. Its built into the compiler. You don’t have toinvoke anything special.”

,Thies Johannsen, 9. Juli 2015 28/ 44

Page 47: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

What reasons do developers have for using or not using static analysistools to find bugs?

+ Bugs können automatisch gefunden werden.É ”anything that will automate a mundane task is great.”

+ Das Tool ist bereits in der IDE integriert.

+ Es motiviert in Teams auf „dumme Fehler“ zu achten.

- false positives- schlechte/unverständliche Fehlermeldungen

É ”it’s one thing to give an error message, it’s another thing to give auseful error message.”

- umständliches Arbeiten in Teams

É Einstellungen lassen sich nicht kopieren

- schwer zu konfigurieren

- ”quick fixes” fehlen oder sind schlecht implementiert

,Thies Johannsen, 9. Juli 2015 29/ 44

Page 48: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

What reasons do developers have for using or not using static analysistools to find bugs?

+ Bugs können automatisch gefunden werden.É ”anything that will automate a mundane task is great.”

+ Das Tool ist bereits in der IDE integriert.

+ Es motiviert in Teams auf „dumme Fehler“ zu achten.

- false positives- schlechte/unverständliche Fehlermeldungen

É ”it’s one thing to give an error message, it’s another thing to give auseful error message.”

- umständliches Arbeiten in TeamsÉ Einstellungen lassen sich nicht kopieren

- schwer zu konfigurieren

- ”quick fixes” fehlen oder sind schlecht implementiert

,Thies Johannsen, 9. Juli 2015 29/ 44

Page 49: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

How well do current static analysis tools fit into the workflows ofdevelopers?

É 19 der 20 Teilnehmer ist eine gute Integration in den Arbeitsablaufwichtig.É gute Integration in die IDEÉ gute Integration in den Compiler

É Arbeitsumgebung sollte nicht gewechselt werden müssen

É ”if it disrupts your flow, you’re not gonne use it.”

,Thies Johannsen, 9. Juli 2015 30/ 44

Page 50: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

How well do current static analysis tools fit into the workflows ofdevelopers?

É 19 der 20 Teilnehmer ist eine gute Integration in den Arbeitsablaufwichtig.É gute Integration in die IDEÉ gute Integration in den Compiler

É Arbeitsumgebung sollte nicht gewechselt werden müssenÉ ”if it disrupts your flow, you’re not gonne use it.”

,Thies Johannsen, 9. Juli 2015 30/ 44

Page 51: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

What improvements do developers want to see being made to staticanalysis tools?

É bessere Darstellung von ”quick fixes”É es sollte eine Vorschau geben, wie der Code geändert wird, z.B. geteilte

AnsichtenÉ ”three option dialog” (anwenden, abbrechen, Schritt für Schritt)

É Feedback sollte schneller kommen

É Analyse sollte immer im Hintergrund laufenÉ Analyse sollte bei jedem Compile-Vorgang durchgeführt werden

É gefundene Fehler sollten einfach temporär zurückgestellt und mitanderen geteilt werden können

É eine Übersicht, wo im Code sich viele Fehler befinden (ähnlichCodeCity)

É statt verschiedener Farben für unterschiedlich schwere Fehler liebereine Farbe mit unterschiedlicher Intensität

,Thies Johannsen, 9. Juli 2015 31/ 44

Page 52: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

What improvements do developers want to see being made to staticanalysis tools?

É bessere Darstellung von ”quick fixes”É es sollte eine Vorschau geben, wie der Code geändert wird, z.B. geteilte

AnsichtenÉ ”three option dialog” (anwenden, abbrechen, Schritt für Schritt)

É Feedback sollte schneller kommenÉ Analyse sollte immer im Hintergrund laufenÉ Analyse sollte bei jedem Compile-Vorgang durchgeführt werden

É gefundene Fehler sollten einfach temporär zurückgestellt und mitanderen geteilt werden können

É eine Übersicht, wo im Code sich viele Fehler befinden (ähnlichCodeCity)

É statt verschiedener Farben für unterschiedlich schwere Fehler liebereine Farbe mit unterschiedlicher Intensität

,Thies Johannsen, 9. Juli 2015 31/ 44

Page 53: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

What improvements do developers want to see being made to staticanalysis tools?

É bessere Darstellung von ”quick fixes”É es sollte eine Vorschau geben, wie der Code geändert wird, z.B. geteilte

AnsichtenÉ ”three option dialog” (anwenden, abbrechen, Schritt für Schritt)

É Feedback sollte schneller kommenÉ Analyse sollte immer im Hintergrund laufenÉ Analyse sollte bei jedem Compile-Vorgang durchgeführt werden

É gefundene Fehler sollten einfach temporär zurückgestellt und mitanderen geteilt werden können

É eine Übersicht, wo im Code sich viele Fehler befinden (ähnlichCodeCity)

É statt verschiedener Farben für unterschiedlich schwere Fehler liebereine Farbe mit unterschiedlicher Intensität

,Thies Johannsen, 9. Juli 2015 31/ 44

Page 54: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

What improvements do developers want to see being made to staticanalysis tools?

É bessere Darstellung von ”quick fixes”É es sollte eine Vorschau geben, wie der Code geändert wird, z.B. geteilte

AnsichtenÉ ”three option dialog” (anwenden, abbrechen, Schritt für Schritt)

É Feedback sollte schneller kommenÉ Analyse sollte immer im Hintergrund laufenÉ Analyse sollte bei jedem Compile-Vorgang durchgeführt werden

É gefundene Fehler sollten einfach temporär zurückgestellt und mitanderen geteilt werden können

É eine Übersicht, wo im Code sich viele Fehler befinden (ähnlichCodeCity)

É statt verschiedener Farben für unterschiedlich schwere Fehler liebereine Farbe mit unterschiedlicher Intensität

,Thies Johannsen, 9. Juli 2015 31/ 44

Page 55: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

What improvements do developers want to see being made to staticanalysis tools?

É bessere Darstellung von ”quick fixes”É es sollte eine Vorschau geben, wie der Code geändert wird, z.B. geteilte

AnsichtenÉ ”three option dialog” (anwenden, abbrechen, Schritt für Schritt)

É Feedback sollte schneller kommenÉ Analyse sollte immer im Hintergrund laufenÉ Analyse sollte bei jedem Compile-Vorgang durchgeführt werden

É gefundene Fehler sollten einfach temporär zurückgestellt und mitanderen geteilt werden können

É eine Übersicht, wo im Code sich viele Fehler befinden (ähnlichCodeCity)

É statt verschiedener Farben für unterschiedlich schwere Fehler liebereine Farbe mit unterschiedlicher Intensität

,Thies Johannsen, 9. Juli 2015 31/ 44

Page 56: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Externe Gültigkeit:

É nur 20 TeilnehmerÉ Mehr Teilnehmer hätten andererseits den Aufwand der Auswertung

enorm erhöht und dadurch hätte eventuell die Sorgfalt gelitten.

É Alle Teilnehmer arbeiten auch außerhalb der Studie mit Werkzeugenzur statischen Analyse.

É 2 Teilnehmer haben bereits selbst Werkzeuge zur statischen Analyseentwickelt und haben so eventuell eine nicht repräsentative Sicht.

,Thies Johannsen, 9. Juli 2015 32/ 44

Page 57: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Externe Gültigkeit:

É nur 20 TeilnehmerÉ Mehr Teilnehmer hätten andererseits den Aufwand der Auswertung

enorm erhöht und dadurch hätte eventuell die Sorgfalt gelitten.

É Alle Teilnehmer arbeiten auch außerhalb der Studie mit Werkzeugenzur statischen Analyse.

É 2 Teilnehmer haben bereits selbst Werkzeuge zur statischen Analyseentwickelt und haben so eventuell eine nicht repräsentative Sicht.

,Thies Johannsen, 9. Juli 2015 32/ 44

Page 58: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Externe Gültigkeit:

É nur 20 TeilnehmerÉ Mehr Teilnehmer hätten andererseits den Aufwand der Auswertung

enorm erhöht und dadurch hätte eventuell die Sorgfalt gelitten.

É Alle Teilnehmer arbeiten auch außerhalb der Studie mit Werkzeugenzur statischen Analyse.

É 2 Teilnehmer haben bereits selbst Werkzeuge zur statischen Analyseentwickelt und haben so eventuell eine nicht repräsentative Sicht.

,Thies Johannsen, 9. Juli 2015 32/ 44

Page 59: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Interne Gültigkeit:

É 2 Teilnehmer waren nicht vor Ort und mussten überTelefon/Videochat befragt werden.

É 6 Teilnehmer durften nicht an ihrem normalen Arbeitsplatz arbeitenund bekamen daher andere Aufgaben.

É Zu Beginn wurden den Teilnehmern die Ziele der Studie genannt.

,Thies Johannsen, 9. Juli 2015 33/ 44

Page 60: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Interne Gültigkeit:

É 2 Teilnehmer waren nicht vor Ort und mussten überTelefon/Videochat befragt werden.

É 6 Teilnehmer durften nicht an ihrem normalen Arbeitsplatz arbeitenund bekamen daher andere Aufgaben.

É Zu Beginn wurden den Teilnehmern die Ziele der Studie genannt.

,Thies Johannsen, 9. Juli 2015 33/ 44

Page 61: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Why Don’t Software Developers Use StaticAnalysis Tools to Find Bugs?

Interne Gültigkeit:

É 2 Teilnehmer waren nicht vor Ort und mussten überTelefon/Videochat befragt werden.

É 6 Teilnehmer durften nicht an ihrem normalen Arbeitsplatz arbeitenund bekamen daher andere Aufgaben.

É Zu Beginn wurden den Teilnehmern die Ziele der Studie genannt.

,Thies Johannsen, 9. Juli 2015 33/ 44

Page 62: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

False Positive

1 #include <stdio .h>23 int main( int argc , char *argv [ ] )4 {5 pr int f ( "%s \n" , argv [0 ] ) ;6 return 0;7 }

,Thies Johannsen, 9. Juli 2015 34/ 44

Page 63: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

False Positive

1 #include <stdio .h>23 int main( int argc , char *argv [ ] )4 {5 pr int f ( "%s \n" , argv [0 ] ) ;6 return 0;7 }

unused.c: (in function main)unused.c:3:14: Parameter argc not usedA function parameter is not used in the body of the function. If theargument is needed for type compatibility or future plans, use/*@unused@*/ in the argument declaration. (Use -paramuse to inhibitwarning)

,Thies Johannsen, 9. Juli 2015 34/ 44

Page 64: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

False Positive

1 void foo (char c) {2 unsigned uppercase = 0;3 unsigned keycode = 0;45 switch(c ) {6 case ’A ’ : uppercase = 1;7 case ’a ’ : keycode = 65;8 break;9 case ’B ’ : uppercase = 1;

10 case ’b ’ : keycode = 66;11 break;12 /* . . . * /13 }14 /* stuf f * /15 }

,Thies Johannsen, 9. Juli 2015 35/ 44

Page 65: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

False Positive

1 void foo (char c) {2 unsigned uppercase = 0;3 unsigned keycode = 0;45 switch(c ) {6 case ’A ’ : uppercase = 1;7 case ’a ’ : keycode = 65;8 break;9 case ’B ’ : uppercase = 1;

10 case ’b ’ : keycode = 66;11 break;12 /* . . . * /13 }14 /* stuf f * /15 }

fallthrough.c: (in function foo)fallthrough.c:7:10: Fall through case (no preceding break)Execution falls through from the previous case (use /*@fallthrough@*/to mark fallthrough cases). (Use -casebreak to inhibit warning)fallthrough.c:10:10: Fall through case (no preceding break)

(Hoffmann, „Software-Qualität“, Springer Vieweg, 2013)

,Thies Johannsen, 9. Juli 2015 35/ 44

Page 66: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

False Positive

Können false positives verhindert werden?

É Schwierig bis unmöglichÉ Code, der in einem Fall korrekt ist, kann in einem anderen Fall ein

Fehler seinÉ es ist möglich einzelne Meldungen zu unterdrücken

,Thies Johannsen, 9. Juli 2015 36/ 44

Page 67: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

False Positive

1 void foo (char c) {2 unsigned uppercase = 0;3 unsigned keycode = 0;45 switch(c ) {6 case ’A ’ : uppercase = 1;7 /*@fallthrough@* /8 case ’a ’ : keycode = 65;9 break;

10 case ’B ’ : uppercase = 1;11 /*@fallthrough@* /12 case ’b ’ : keycode = 66;13 break;14 /* . . . * /15 }16 /* stuf f * /17 }

,Thies Johannsen, 9. Juli 2015 37/ 44

Page 68: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

False Positive

Können false positives verhindert werden?

É schwierig bis unmöglichÉ Code, der in einem Fall korrekt ist, kann in einem anderen Fall ein

Fehler seinÉ es ist möglich einzelne Meldungen zu unterdrücken

É nicht sehr komfortabelÉ der Code wird unübersichtlich

,Thies Johannsen, 9. Juli 2015 38/ 44

Page 69: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Überflutung

Was passiert, wenn eine neue Klasse hinzugefügt wird?

É Wir bekommen für jede nicht benutzte Funktion eine Warnung.

,Thies Johannsen, 9. Juli 2015 39/ 44

Page 70: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Überflutung

Was passiert, wenn eine neue Klasse hinzugefügt wird?

É Wir bekommen für jede nicht benutzte Funktion eine Warnung.

,Thies Johannsen, 9. Juli 2015 39/ 44

Page 71: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Überflutung

,Thies Johannsen, 9. Juli 2015 40/ 44

Page 72: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Quick Fixes

Abbildung: quick fix in eclipse (help.eclipse.org)

É Vorschläge, den Code automatisch anzupassenÉ bei größeren Änderungen sehr riskant

É Ist die Semantik erhalten geblieben?É Kommt es dadurch zu neuen Fehlern?

,Thies Johannsen, 9. Juli 2015 41/ 44

Page 73: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Quick Fixes

Abbildung: quick fix in eclipse (help.eclipse.org)

É Vorschläge, den Code automatisch anzupassenÉ bei größeren Änderungen sehr riskant

É Ist die Semantik erhalten geblieben?É Kommt es dadurch zu neuen Fehlern?

,Thies Johannsen, 9. Juli 2015 41/ 44

Page 74: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

schlechte Fehlermeldungen

É ”D’oh! A nonsensical method invocation”É This partical method invocation doesn’t make sense, for reasons that

should be apparent from inspection.

É Wäre der Funktionsaufruf so offensichtlich sinnlos, dann hätte derProgrammierer ihn nicht gemacht.

,Thies Johannsen, 9. Juli 2015 42/ 44

Page 75: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

schlechte Fehlermeldungen

É ”D’oh! A nonsensical method invocation”É This partical method invocation doesn’t make sense, for reasons that

should be apparent from inspection.

É Wäre der Funktionsaufruf so offensichtlich sinnlos, dann hätte derProgrammierer ihn nicht gemacht.

,Thies Johannsen, 9. Juli 2015 42/ 44

Page 76: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

Zusammenfassung

É statische Codeanalyse kann eine Wertvolle Hilfe seinÉ statische Codeanalyse ist kein Allheilmittel, die eigentliche Arbeit

liegt weiter beim ProgrammiererÉ die größten Probleme

É Anzahl der FehlermeldungenÉ False PositivesÉ umständliche Konfiguration

,Thies Johannsen, 9. Juli 2015 43/ 44

Page 77: Warum verwenden Softwareentwickler keine Werkzeuge zur ...€¦ · Warum verwenden Softwareentwickler keine Werkzeuge zur stati-schen Codeanalyse? Thies Johannsen Freie Universität

,Thies Johannsen, 9. Juli 2015 44/ 44