Quellcode-Analyse

Definition - Was bedeutet Quellcode-Analyse?

Die Quellcode-Analyse ist das automatisierte Testen des Quellcodes eines Programms, um Fehler zu finden und zu beheben, bevor die Anwendung verkauft oder verteilt wird.

Die Quellcode-Analyse ist gleichbedeutend mit der statischen Code-Analyse, bei der der Quellcode einfach als Code analysiert wird und das Programm nicht ausgeführt wird. Dies macht das Erstellen und Verwenden von Testfällen überflüssig und kann sich von funktionsspezifischen Fehlern wie Schaltflächen trennen, die eine andere Farbe haben als in den Spezifikationen angegeben. Es konzentriert sich darauf, Fehler im Programm zu finden, die sich nachteilig auf seine ordnungsgemäße Funktion auswirken können, z. B. absturzverursachende Codezeilen.

Technische.me erklärt die Quellcode-Analyse

Die Quellcode-Analyse ist im Grunde ein automatisiertes Code-Debugging. Ziel ist es, Fehler zu finden, die für einen Programmierer möglicherweise nicht offensichtlich sind. Es soll Fehler wie mögliche Pufferüberläufe oder die unordentliche Verwendung von Zeigern und den Missbrauch von Speicherbereinigungsfunktionen finden, die alle von einem Hacker ausgenutzt werden können.

Codeanalysatoren arbeiten mit Regeln, die festlegen, wonach gesucht werden soll. Mit zu geringer Genauigkeit kann ein Analysator zu viele Fehlalarme ausspucken und den Benutzer mit nutzlosen Warnungen überfluten, während zu viel Genauigkeit zu lange dauern kann, bis der Vorgang abgeschlossen ist. daher muss ein Gleichgewicht sein.

Es gibt zwei Arten von Analysatoren:

  • Interprocedural - Erkennt Muster von einer Funktion zur nächsten und diese Muster werden korreliert, sodass der Analysator ein Modell erstellen und Ausführungspfade simulieren kann.
  • Intraprocedural - Konzentriert sich auf den Mustervergleich und hängt davon ab, nach welchen Arten von Mustern der Benutzer sucht.

Interprozedurale Analysegeräte sind moderner und komplexer. Gute Beispiele hierfür sind Coverity, Fortify und Microsofts eigenes zentrales Tool PREfix.