Statische Code-Analyse

Statische Code-Analyse

Statische Code-Analyse oder kurz statische Analyse ist ein statisches Software-Testverfahren. Der Quelltext wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von Fehlern entdeckt werden können, noch bevor die entsprechende Software (z. B. im Modultest) ausgeführt wird. Die Methodik gehört zu den falsifizierenden Verfahren, d. h. es wird die Anwesenheit von Fehlern bestimmt.

In Anlehnung an das klassische Programm Lint, wird der Vorgang auch als linten (englisch linting) bezeichnet.

Inhaltsverzeichnis

Methodischer Zusammenhang

Einordnung

Im Rahmen der Softwaretestverfahren ist die Statische Code-Analyse den White-Box-Test-Verfahren zuzuordnen (man benötigt den Quellcode). Die Analyse kann durch manuelle Inspektion erfolgen, aber auch automatisch durch ein Programm. Man spricht dann von statischer Analyse, da die zu testende Software in Form von Algorithmen und Daten in ihrer Formulierung und Beschaffenheit (statisch) dem Prüfer (oder Werkzeug) vorliegt. Das ist in etwa vergleichbar mit statischen Berechnungen im Ingenieurbau.

Abgrenzung

Vorläufer der statischen Analyse sind die Prüfverfahren der normierten Programmierung und die Werkzeuge zur Erkennung von Code-Mustern, die sogenannten Style Checker.

Dynamische Code-Analyse setzt im Gegensatz zur statischen Analyse ein laufendes Programm voraus.

Verfahren

Neben dem gewissenhaften Studium von Quelltext durch Entwickler ist es möglich, viele inhaltliche Fehler werkzeuggestützt oder automatisch zu erkennen. Die Bandbreite reicht von der Sicherstellung von einfachen Coding-Standards (z. B. ein return-Statement pro Funktion) über die Prüfung von Typumwandlungen und Bereichsgrenzen über die Suche nach bestimmten Arten von Speicherlecks bis hin zur technischen Verifikation von Quelltext.

Einfache Analysen sind häufig bereits im Compiler (Übersetzer) einer Programmiersprache integriert, z. B. die Prüfung auf Initialisierung einer Variablen. Darüber hinaus gibt es Methoden, die den Programmierstil auf Ästhetik und Pragmatik prüfen, nämlich die stilistischen Methoden. Allerdings werden häufig nur Warnmeldungen angezeigt, die ignoriert werden können. Bei sogenannten Profilern wird zusätzlicher Objektcode generiert, welcher Aussagen über Codeabdeckung und Codefrequentierung generiert. Echte statische Analysierer gibt es nur wenige.

Automatisierte Codereview-Software vereinfacht die Aufgabe der Durchsicht großer Programmteile durch systematische Überprüfungen auf angreifbare Stellen wie:

Werkzeuge

Als „Klassiker“ auf diesem Gebiet ist Lint zu nennen (siehe hierzu auch Splint). Neuere Werkzeuge beschränken sich nicht nur auf funktionale Fehler, sondern erkennen auch qualitative Schwachstellen im Code (so genannte Bad Smells), wie zum Beispiel duplizierten Code (auch Software-Klone genannt). Sie gehen auch über den Quellcode hinaus und prüfen Konformität des Codes mit der Architekturspezifikation. Ebenso sind durch die neueren Werkzeuge auch Programmierregeln wie die MISRA-C-Regeln überprüfbar. Flawfinder und Rough Auditing Tool for Security (RATS) sind zwei bekannte Werkzeuge für den Codereview. StyleCop ist ein Open-Source Werkzeug von Microsoft welches zur statischen Code-Analyse von C# Code dient und direkt in Visual Studio integriert werden kann. [1]

Weiterhin besteht eine Abgrenzung zu den Style Checkern.

Einzelnachweise

  1. StyleCop auf CodePlex

Weblinks

Dieser Artikel existiert auch als Audiodatei.

Literatur

  • Ch. Bommer, M. Spindler, V. Barr: Softwarewartung - Grundlagen, Management und Wartungstechniken, dpunkt.verlag, Heidelberg 2008, ISBN 3-89864-482-0

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Statische Analyse — Statische Code Analyse oder kurz statische Analyse ist ein statisches Software Testverfahren. Der Quelltext wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von Fehlern entdeckt werden können, noch bevor die… …   Deutsch Wikipedia

  • Code-Duplikation — Als Code Duplizierung (code duplication) wird in der Informatik das Auftreten der gleichen Codestruktur an mehreren Stellen im Programmcode bezeichnet. Duplizierter Code entsteht gewöhnlich durch Kopieren vorhandener Programmteile und gilt als… …   Deutsch Wikipedia

  • Code-Duplizierung — Als Code Duplizierung (code duplication) wird in der Informatik das Auftreten der gleichen Codestruktur an mehreren Stellen im Programmcode bezeichnet. Duplizierter Code entsteht gewöhnlich durch Kopieren vorhandener Programmteile und gilt als… …   Deutsch Wikipedia

  • Code duplication — Als Code Duplizierung (code duplication) wird in der Informatik das Auftreten der gleichen Codestruktur an mehreren Stellen im Programmcode bezeichnet. Duplizierter Code entsteht gewöhnlich durch Kopieren vorhandener Programmteile und gilt als… …   Deutsch Wikipedia

  • Code-Review — Mit dem Review werden Arbeitsergebnisse der Softwareentwicklung manuell geprüft. Jedes Arbeitsergebnis kann einer Durchsicht durch eine andere Person unterzogen werden. Das Review ist eine statische Testmethode und gehört in die Kategorie der… …   Deutsch Wikipedia

  • Code Review — Mit dem Review werden Arbeitsergebnisse der Softwareentwicklung manuell geprüft. Jedes Arbeitsergebnis kann einer Durchsicht durch eine andere Person unterzogen werden. Das Review ist eine statische Testmethode und gehört in die Kategorie der… …   Deutsch Wikipedia

  • Statisches Software-Testverfahren — Statische Software Testverfahren (kurz: statische Tests) gehören zu den analysierenden Verfahren beim Softwaretest und unterteilen sich in Strukturierte Gruppenprüfung (engl. Review) Statische Code Analyse bzw. kurz statische Analyse Statische… …   Deutsch Wikipedia

  • Memory leak — Speicherleck (englisch memory leak, gelegentlich auch Speicherloch oder kurz memleak) werden Fehler in einem Computerprogramm genannt, die es ermöglichen, dass ein laufender Prozess einen Speicherbereich belegt, diesen jedoch im Zuge der… …   Deutsch Wikipedia

  • Memoryleak — Speicherleck (englisch memory leak, gelegentlich auch Speicherloch oder kurz memleak) werden Fehler in einem Computerprogramm genannt, die es ermöglichen, dass ein laufender Prozess einen Speicherbereich belegt, diesen jedoch im Zuge der… …   Deutsch Wikipedia

  • Lint (Programmierwerkzeug) — Lint (engl. lint Fluse, Fussel) ist der Name eines Computerprogramms, das zur statischen Code Analyse von Quelltexten von Computerprogrammen verwendet wurde. Das Verb linten (englisch linting) für das Durchführen der statischen Code Analyse… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”