CW-Leser testen: Oracle PL/SQL-Analyzer

03.11.2006
Von Leo Albert
Mit der Software lassen sich Schwachstellen in Programmen aufspüren.

Programme werden meist unter Termindruck getestet, abgenommen und dann freigegeben. Manuelle Verfahren zur Code-Inspektion (Schreibtischtests) sind zeitaufwändig, erfordern hohes Expertenwissen und führen zu nicht reproduzierbaren Ergebnissen. Ab einer bestimmten Komplexität der Anwendungen sind manuelle Verfahren überhaupt nicht mehr möglich.

Auch komplexe PL/SQL-Anwendungen lassen sich mit Oplan schnell analysieren. Das Tool findet Fehler und kritische Stellen.
Auch komplexe PL/SQL-Anwendungen lassen sich mit Oplan schnell analysieren. Das Tool findet Fehler und kritische Stellen.

Auf der Suche nach einem Abnahmewerkzeug, das die Code-Inspektion für Anwendungen auf Basis von Oracles Programmiersprache PL/SQL maschinell vollzieht, hatten wir endlich Erfolg. Itdoc24, eine kleine Softwareschmiede aus Frankfurt am Main, hat ein Werkzeug namens "Oplan" ("Oracle PL/ SQL-Analyzer") entwickelt. Wir haben verblüffende Ergebnisse erzielt; unsere Erwartungen wurden sogar übertroffen.

Kritische Stellen finden

Auch komplexe Anwendungen lassen sich damit schnell analysieren. Das Tool findet dabei Fehler oder kritische Stellen wie:

  • nicht verwendete oder überflüssige Variablen, Cursor und Exceptions;

  • nicht erreichbare Anweisungen und toten Code;

  • fehlerhafte Konstruktionen wie zum Beispiel "if i=3 and i>3";

  • unzulässige Verwendung reservierter Wörter;

  • falsche Anwendung von Operatoren (zum Beispiel "=NULL");

  • Loops ohne Exit-Anweisung (Endlosschleifen);

  • gleichnamige Variablen mit überlappenden Geltungsbereichen;

  • Open- ohne Close-Cursor;

  • überschriebene Objekte des Packages "Standard";

  • unzulässig unterdrückte Fehlerbehandlung;

  • unnötige Verwendungen von Variablen (wie etwa Variablen, auf die nie eine Abfrage erfolgt);

  • Else-if-Kaskaden ohne Else-Zweig (gefährliche Konstruktion, da vermutlich nicht alle möglichen Fälle systematisch verarbeitet werden);

  • Return innerhalb von Prozeduren sowie

  • Funktionen ohne Return-Statement.