Statische Codeanalyse mit Uno

Statische Codeanalyse ist eine Art von Softwaretest, bei der Quellcode bestimmten formalen und algorithmischen Prüfungen unterzogen wird um Fehler in Software zu finden. Die Überprüfung erfolgt hier im Gegensatz zur dynamischen Analyse nicht zur Laufzeit und wird deswegen als statische Analyse bezeichnet.

Uno ist ein Tool, mit dem man nach drei der häufigsten Fehlerarten in C-Quellcode suchen kann:

  • Nutzung uninitialisierter Variablen
  • Dereferenzierung von NULL-Pointern
  • Bereichsüberschreitung bei der Array-Adressierung

Entsprechende Beispiele und ein Download des Werkzeuges sind auf der Seite von Uno zu finden. Eine kurze Probe hier hat gezeigt, daß sich sowohl einfache Beispiele konstruieren lassen bei dem Dereferenzierungsfehler gefunden werden, als auch Beispiele, bei dem das Werkzeug die Fehler übersieht.

Hier wird der Fehler gefunden:

1
2
3
4
5
6
7
8
9
int *ptr;
 
int main() {
    if (ptr)
        *ptr = 123;
    else
        *ptr = 345;
    return 0; 
}
uno:#1: possible global use or deref before def:
[R ptr global_nullptr_deref.c 9]
in fct main global_nullptr_deref.c 4

und hier nicht:

1
2
3
4
5
6
7
8
9
10
11
int main() {
 
    int *ptr;
    ptr = NULL;
 
    if (ptr)
        *ptr = 123;
    else
        *ptr = 345;
    return 0;
}

Generell ist die quelloffene Verfügbarkeit von leistungsfähigen Werkzeugen zur Codeanalyse nicht gegeben, die Werkzeuge übersehen Fehler oder liefern zuviele Falschpositive. Professionelle Tools wie Coverity stehen wiederum nicht zur freien Verfügung. Wer sich mehr mit diesem Thema beschäftigen will, findet allerdings auf der Seite von Dawson Engler, dem Gründer von Coverity, einen guten Einstiegspunkt mit ein paar interessanten Veröffentlichungen, auch zur probalistischen Analyse von Quellcode.

Ähnliche Artikel:

  1. Arithmetik ohne Begrenzungen
  2. Cache Attack auf AES
  3. Unmaintainable Code
  4. Chumby
  5. Primzahlen

Artikel verlinken:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Netvibes
  • StumbleUpon
  • Technorati
  • Live
  • MisterWong.DE
  • Print
  • Reddit
  • Slashdot
  • Twitter

0 Kommentar zu “Statische Codeanalyse mit Uno”


  • Keine Kommentare

Kommentar schreiben