Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Statische Analysetools - ein Überblick Wolfram Heinz Übung Testen von Software SoSe 2006.

Ähnliche Präsentationen


Präsentation zum Thema: "Statische Analysetools - ein Überblick Wolfram Heinz Übung Testen von Software SoSe 2006."—  Präsentation transkript:

1 Statische Analysetools - ein Überblick Wolfram Heinz Übung Testen von Software SoSe 2006

2 Programm Tester - ein Überblick2 Inhaltsübersicht Einführung Lint/Splint Jlint Checkstyle Demo Fazit

3 Programm Tester - ein Überblick3 Analysetools: Lint/Splint Jlint 2.3 Checkstyle 4.1 Statischer Test: Semantische Überprüfung von Quellcode eines Programms auf Fehler Programm selbst wird nicht ausgeführt Einführung (1)

4 Programm Tester - ein Überblick4 Einführung (2) Lint/SplintJlintCheckstyle Zielsprache(n) C Java (C, C++, Objective C) Java Zielsysteme Windows, Linux, Solaris, Free BSD alle gängigen Lizenzstatus frei verfügbar nach GPL/LGPL Herkunft, Entwickler Universität Virginia, David Evans Konstantin Knizhnik, Cyrille Artho Oliver Burn Typ Konsolenanwendung Konsole + ANT-Task

5 Programm Tester - ein Überblick5 Ende der 70er: Lint Entwicklung als Vorläufer von Splint durch S.C. Johnson erstes Tool zur statischen Überprüfung von C-Programmen seit 2003: Splint zusätzliche und stärkere Prüfoptionen Schwerpunkt der Überprüfung liegt auf Sicherheitsanfälligkeiten und Fehler bei der Codierung (Secure Programming Lint) Nutzung von speziellen Kommentaren (annotations) Lint/Splint (1)

6 Programm Tester - ein Überblick6 4 Prüfstufen Lint/Splint (2) weak standard checks strict

7 Programm Tester - ein Überblick7 Lint/Splint (3) - Fehlertypen LintSplint - nicht benutzte Bezeichner - Typinkonsistenzen - Zugriff auf Variablen oder Funktionen ohne vorherige Definition - unerreichbarer Code - ignorierte return-Werte - Ausführungspfade ohne return - Endlosschleifen … wie Lint, jedoch zusätzlich: - Dereferenzierung eines möglichen Nullzeigers - Fehler im Speichermanagement - Makroimplementierungen bzw. -aufrufe - Puffer-Überlauf …

8 Programm Tester - ein Überblick8 Lint/Splint (4)

9 Programm Tester - ein Überblick9 Vorteile: Programm/Projekt insgesamt analysiert Keine Compilierung des Quellcodes nötig Aussagekräftigere Fehlermeldungen + Lösungsvorschläge Nachteile: C++ nicht unterstützt Bestimmte Fehlertypen nicht erkannt Lint/Splint (5) Bsp.: int a = 14l; int b = 020; int c; c=a/b; Bsp.: int a = 14; int b = 16; int c; c=a/b;

10 Programm Tester - ein Überblick10 2 Komponenten: Jlint und AntiC AntiC Basis-Syntaxchecker für alle Sprachen der C-Familie und Java Scanner + Top-Down-Parser zur Erkennung von einfachen Fehlertypen und einigen Syntax-Fehlern Jlint überprüft Semantik des Quellcodes (nur für Java-Programme) Ausführung lokaler und globaler Datenflussanalysen Erkennung von Blockaden und Laufzeitproblemen Steuerung über Flags Fehlerbericht + History-Funktion Jlint (1)

11 Programm Tester - ein Überblick11 Jlint (2) - Fehlertypen AntiCJlint Fehlerhafte Zeichenketten long l = 0x111111l; printf("\x"); Operatorprioritäten if (x = y) x || y && z Fehler in Anweisungsblöcken if (rc != 0) if (perr) *perr = rc; else return Ok; Synchronisation nicht deterministisch/reproduzierbar z.B. bei Client/Server-Anwendungen Vererbung falsch zugeordnete Methoden- profile, verdeckte Komponenten z.B. gleiche Methodennamen in innerer und äußerer Klasse Datenfluss

12 Programm Tester - ein Überblick12 Beispiele: Synchronisation: Kategorie Blockierung Vererbung: Kategorie Variablenverdeckung Datenfluss: Kategorie Puffer-Überlauf Jlint (3) - Fehlertypen public long multiply(int a, int b) return a*b; // Multiplikation 2er Integer-Operanden, // Konvertierung des Ergebnisses in Datentyp long public void foo() synchronized (a) synchronized (b) public void bar() synchronized (b) synchronized (a) class A public int a; public void f(int a) this.a = a; // verursacht keine Fehlermeldung public int g(int a) return a; // Meldung: shadow_local

13 Programm Tester - ein Überblick13 Vorteile: schnelle Überprüfung des Quellcodes auf ca. 50 verschiedene Fehler einfaches Hinzu- oder Abschaltenvon Optionen zur Fehlerberichterstattung (z.B: -all +synchronisation) geringer Ressourcenverbrauch Nachteile: Compilierung des zu prüfenden Quellcodes notwendig JDK oder vergleichbare Entwicklungsumgebung muss installiert sein Jlint (4)

14 Programm Tester - ein Überblick14 Unterstützt den Programmierer bei der Einhaltung von Coding Conventions umfangreiche Konfigurationsmöglichkeiten über XML-Datei Festlegung der durchzuführenden Checks (Module) über modulspezifische Eigenschaften (Properties) erfolgt Ausgabesteuerung Plugin für Entwicklungsumgebungen (z.B. Eclipse, JEdit, Emacs JDE, Borland JBuilder, …) Checkstyle (1)

15 Programm Tester - ein Überblick15 Aufruf über Konsole: java -D = \ com.puppycrawl.tools.checkstyle.Main \ -c Prüfmodule [-n ] \ Paketname [-f ] Ausgabeformat: XML/Plain [-p ] spezielle Eigenschaften [-o ] \ Pfad der Ausgabedatei [-r ]Dateisuche in Verzeichnis file java com.puppycrawl.tools.checkstyle.Main -c docs/sun_checks.xml \ -f xml -o build/checkstyle_errors.xml Check.java oder java -jar checkstyle-all-4.1.jar \ -c docs/sun_checks.xml Check.java Checkstyle (2)

16 Programm Tester - ein Überblick16 Aufruf als ANT-Task: ANT Another Neat Tool plattformunabhängig Tool zur automatisierten Generierung von Programmen aus vorhandenem Quellcode Steuerung durch XML-Datei (Build-Datei) Checkstyle (3)

17 Programm Tester - ein Überblick17 Standard Checks: keine zusätzlichen Bibliotheken nötig Javadoc Comments Naming Conventions Headers Coding, Class Design … Optionale Checks (J2EE): Entity Bean Session Bean … Checkstyle (4) - Fehlertypen

18 Programm Tester - ein Überblick18 Vorteile: einfache und schnelle Prüfung auf Einhaltung von Stilrichtlinien Möglichkeit, eigene Checks zu definieren Ausgabe des Fehlerreports als Text oder XML-Datei Fehlerreport unter ANT: Übermittlung via möglich Ausgabe als HTML unter Nutzung von Stylesheet-Infos (XSLT) Nachteile: grundlegende XML-Kenntnisse erforderlich Browser muss über XML-Parser verfügen Checkstyle (5)

19 Programm Tester - ein Überblick19 Tools insgesamt mächtiger als Standard-Compiler frühzeitige Erkennung von Fehlern möglich Qualitätskontrolle geringere Entwicklungskosten Grenzen statischer Analysetools: Programmtest mit bestimmter Variablenbelegung nicht möglich Test auf Fehler, die erst zur Laufzeit auftreten nicht durchführbar Fazit

20 Vielen Dank für Ihre Aufmerksamkeit !


Herunterladen ppt "Statische Analysetools - ein Überblick Wolfram Heinz Übung Testen von Software SoSe 2006."

Ähnliche Präsentationen


Google-Anzeigen