<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Statische_Code-Analyse</id>
	<title>Statische Code-Analyse - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Statische_Code-Analyse"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Statische_Code-Analyse&amp;action=history"/>
	<updated>2026-05-21T14:24:06Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Statische_Code-Analyse&amp;diff=660826&amp;oldid=prev</id>
		<title>imported&gt;Aka: /* Verfahren */ typografische Anführungszeichen, Kleinkram</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Statische_Code-Analyse&amp;diff=660826&amp;oldid=prev"/>
		<updated>2025-04-23T07:04:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Verfahren: &lt;/span&gt; typografische Anführungszeichen, Kleinkram&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Statische Code-Analyse&amp;#039;&amp;#039;&amp;#039; oder kurz &amp;#039;&amp;#039;&amp;#039;statische Analyse&amp;#039;&amp;#039;&amp;#039; ist ein [[statisches Software-Testverfahren]], das zur [[Übersetzungszeit]] durchgeführt wird. Der [[Quelltext]] wird hierbei einer Reihe formaler Prüfungen unterzogen, bei denen bestimmte Sorten von [[Programmfehler|Fehlern]] entdeckt werden können, noch bevor die entsprechende Software (z.&amp;amp;nbsp;B. im [[Modultest]]) ausgeführt wird. Die Methodik gehört zu den [[Falsifizierung|falsifizierenden]] Verfahren, d.&amp;amp;nbsp;h., es wird die Anwesenheit von Fehlern bestimmt.&lt;br /&gt;
&lt;br /&gt;
In Anlehnung an das klassische Programm [[Lint (Programmierwerkzeug)|&amp;#039;&amp;#039;Lint&amp;#039;&amp;#039;]] wird der Vorgang auch als &amp;#039;&amp;#039;linten&amp;#039;&amp;#039; ({{enS|&amp;#039;&amp;#039;linting&amp;#039;&amp;#039;}}) bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Methodischer Zusammenhang ==&lt;br /&gt;
=== Einordnung ===&lt;br /&gt;
Im Rahmen der [[Softwaretest]]verfahren ist die Statische Code-Analyse den [[White-Box-Test]]-Verfahren zuzuordnen (man benötigt den [[Quelltext|Quellcode]]). Die Analyse kann durch manuelle Inspektion erfolgen, aber auch automatisch durch ein Programm. Man spricht dann von &amp;#039;&amp;#039;statischer&amp;#039;&amp;#039; Analyse, da die zu testende Software in Form von Algorithmen und Daten in ihrer Formulierung und Beschaffenheit (&amp;#039;&amp;#039;statisch&amp;#039;&amp;#039;) dem Prüfer (oder Werkzeug) vor&amp;#039;&amp;#039;liegt&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Abgrenzung ===&lt;br /&gt;
Vorläufer der statischen Analyse sind die Prüfverfahren der [[Normierte Programmierung|normierten Programmierung]] und die Werkzeuge zur Erkennung von Code-Mustern, die sogenannten [[Style Checker]].&lt;br /&gt;
&lt;br /&gt;
[[Dynamisches Software-Testverfahren|Dynamische Code-Analyse]] setzt im Gegensatz zur statischen Analyse ein laufendes Programm voraus. Ein dynamisches [[Pendant]] zur statischen Code-Analyse zur [[Compilezeit]] ist z.&amp;amp;nbsp;B. das [[Profiler (Programmierung)|Profiling]] zur [[Laufzeit (Informatik)|Laufzeit]].&lt;br /&gt;
&lt;br /&gt;
== Verfahren ==&lt;br /&gt;
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.&amp;amp;nbsp;B. ein &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;-Statement pro Funktion) über die Prüfung von Typumwandlungen und Bereichsgrenzen über die Suche nach bestimmten Arten von [[Speicherleck]]s bis hin zur technischen [[Korrektheit (Informatik)|Verifikation]] von Quelltext.&lt;br /&gt;
&lt;br /&gt;
Einfache Analysen sind häufig bereits im [[Compiler]] (Übersetzer) einer [[Programmiersprache]] integriert, z.&amp;amp;nbsp;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 [[Style Checker|stilistischen Methoden]]. Allerdings werden häufig nur Warnmeldungen angezeigt, die ignoriert werden können. Bei sogenannten [[Profiler (Programmierung)|Profilern]] wird zusätzlicher Objektcode generiert, welcher Aussagen über Codeabdeckung und Codefrequentierung generiert.&lt;br /&gt;
&lt;br /&gt;
Semantik-basierte statische Analysatoren vereinfachen die Aufgabe der Durchsicht großer Programmteile durch systematische Überprüfungen auf angreifbare Stellen wie:&lt;br /&gt;
&lt;br /&gt;
* [[Race Condition]]s&lt;br /&gt;
* [[Formatstring-Angriff]]e&lt;br /&gt;
* [[Pufferüberlauf|Pufferüberläufe]]&lt;br /&gt;
* [[Speicherleck]]s&lt;br /&gt;
* Zugriffe außerhalb gültiger Grenzen („Out of Bound“) bei [[Feld (Datentyp)|Arrays]]&lt;br /&gt;
* Division durch 0&lt;br /&gt;
&lt;br /&gt;
Der Einsatz von statischen Analyseverfahren wird mittlerweile von Safety-Normen wie [[ISO 26262]], [[IEC 61508]] oder [[DO-178C]] für sicherheitsrelevante Software vorgeschrieben.&lt;br /&gt;
&lt;br /&gt;
== Werkzeuge ==&lt;br /&gt;
{{Hauptartikel|Liste von Werkzeugen zur statischen Codeanalyse}}&lt;br /&gt;
Als „Klassiker“ auf diesem Gebiet sind neben [[Lint (Programmierwerkzeug)|Lint]] auch [[Checkstyle]], [[FindBugs]] und [[PMD (Software)|PMD]] für [[Java (Programmiersprache)|Java]] oder [[Cppcheck]] für C/C++, [[Splint (Software)|Splint]] für C oder [[FxCop]] bzw. [[StyleCop]] für C# zu nennen.&lt;br /&gt;
&lt;br /&gt;
Derartige Werkzeuge können nicht nur alleinstehend laufen, sondern auch integriert in die Entwicklungsumgebung bzw. in den [[Kontinuierliche Integration|Build Server]]. Sie beschränken sich nicht nur auf Kodierungsregeln wie beispielsweise die [[MISRA-C]]-Regeln, sondern erkennen auch funktionale und technische Fehler, potentielle Bugs sowie auch qualitative Schwachstellen im Code (so genannte &amp;#039;&amp;#039;{{lang|en|[[Code-Smell]]s}}&amp;#039;&amp;#039;), wie zum Beispiel [[Code-Duplizierung|duplizierten Code]] (auch Software-Klone genannt).&lt;br /&gt;
&lt;br /&gt;
Einige Werkzeuge können den Code auch auf sicherheitsrelevante Programmierfehler wie zum Beispiel [[Pufferüberlauf|Pufferüberläufe]] oder [[Wettlaufsituation]]en prüfen, wie beispielsweise [[Rough Auditing Tool for Security]] (RATS).&lt;br /&gt;
&lt;br /&gt;
Weiters gibt es noch Werkzeuge, die auch [[Architekturmetrik]]en und die Konformität des Codes mit der Architekturspezifikation prüfen. Dazu gehören beispielsweise die Axivion Bauhaus Suite, [[ConQAT]] und Teamscale sowie Sonargraph und Sotograph.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Christoph Bommer, Markus Spindler, Volkert Barr: &amp;#039;&amp;#039;Softwarewartung. Grundlagen, Management und Wartungstechniken.&amp;#039;&amp;#039; dpunkt-Verlag, Heidelberg 2008, ISBN 978-3-89864-482-2.&lt;br /&gt;
* [[Peter Liggesmeyer]]: &amp;#039;&amp;#039;Software-Qualität. Testen, Analysieren und Verifizieren von Software.&amp;#039;&amp;#039; 2. Auflage. Spektrum Akademischer Verlag, Heidelberg 2009, ISBN 978-3-8274-2056-5.&lt;br /&gt;
* [[Harry M. Sneed]], [[Richard Seidl]], Manfred Baumgartner: &amp;#039;&amp;#039;Software in Zahlen. Die Vermessung von Applikationen.&amp;#039;&amp;#039; Hanser, München 2010, ISBN 978-3-446-42175-2.&lt;br /&gt;
* Andreas Spillner, Tilo Linz: &amp;#039;&amp;#039;Basiswissen Softwaretest. Aus- und Weiterbildung zum Certified Tester. Foundation level nach ISTQB-Standard.&amp;#039;&amp;#039; 4., überarbeitete und aktualisierte Auflage. dpunkt-Verlag, Heidelberg 2010, ISBN 978-3-89864-642-0.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Internetquelle|url=https://se-radio.net/2007/06/episode-59-static-code-analysis/|titel=Episode 59: Static Code Analysis|zugriff=2012-09-23|kommentar=Interview als [[Podcast]]-Beitrag auf [[Software Engineering Radio]]}}&lt;br /&gt;
&lt;br /&gt;
{{Gesprochene Version&lt;br /&gt;
|datei=De-Statische_Code-Analyse-article.ogg&lt;br /&gt;
|länge=04:19 min&lt;br /&gt;
|größe=2,57&amp;amp;nbsp;MB&lt;br /&gt;
|version=31669124&lt;br /&gt;
|exzellent=nein&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Testen (Software)]]&lt;br /&gt;
[[Kategorie:Qualitätsmanagement (Softwaretechnik)]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aka</name></author>
	</entry>
</feed>