Liste von Werkzeugen zur statischen Codeanalyse

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Diese Liste von Werkzeugen zur statischen Codeanalyse enthält Werkzeuge, mit deren Hilfe man Statische Code-Analyse betreiben kann.

Derartige Werkzeuge können meist nicht nur allein stehend laufen, sondern auch integriert in die Entwicklungsumgebung bzw. in den 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 Bad Smells), wie zum Beispiel duplizierten Code (auch Software-Klone genannt). Einige Werkzeuge können den Code auch auf sicherheitsrelevante Programmierfehler wie zum Beispiel Pufferüberläufe oder Wettlaufsituationen prüfen. Weiters gibt es noch Werkzeuge, die auch Architekturmetriken und die Konformität des Codes mit der Architekturspezifikation prüfen.

Diese Liste ist nach Programmiersprachen aufgeteilt, beginnend mit Werkzeugen, welche mehrere Programmiersprachen unterstützen bzw. unabhängig von Programmiersprachen sind. Diese Werkzeuge werden nicht noch einmal bei den unterstützten Werkzeugen aufgeführt.


Sprachunabhängige bzw. sprachübergreifende Werkzeuge[Bearbeiten | Quelltext bearbeiten]

App-Ray
Werkzeug zum Auffinden von Sicherheitslücken und Datenschutzverletzungen in Android- und iOS-Apps. Unterstützt Bytecode (Java, Kotlin) und Binärcode (Swift, Objective-C).
Axivion Bauhaus Suite
Werkzeug für Code-, Design- und Architekturanalyse. Erhältlich für die Programmiersprachen Ada, C, C++, C# und Java.
Black Duck Suite
Werkzeug zur Analyse von Sourcecode und Binaries auf wiederverwendbaren Code, notwendige Lizenzen und potentielle Sicherheitsaspekte.
BugScout
Werkzeug zum Aufspüren potentieller Sicherheitsprobleme in Java, PHP, ASP und C# Webapplikationen.
CAST Application Intelligence Platform
Dashboard für die Messung von Codequalität und Produktivität. Unterstützt mehr als 30 Programmiersprache, sowie verschiedene Datenbanken.
ChecKing
Softwarequalitätsportal zur Darstellung der Qualität aller Phasen der Softwareentwicklung. Unterstützt statische Codeanalyse von Java, JSP, JavaScript, HTML, XML, .NET (C#, ASP.NET, VB.NET, etc.), PL/SQL, embedded SQL, SAP ABAP IV, Natural/Adabas, C/C++, Cobol, JCL und PowerBuilder.
Cigital SecureAssist
Erweiterung für Integrierte Entwicklungsumgebungen, welche Sicherheitsprobleme während der Entwicklung aufzeigt. Unterstützt Java, .NET und PHP.
Clang
ein Compiler-Frontend für die Programmiersprachen C, C++, Objective-C und Objective-C++. Es verfügt im Vergleich mit anderen Compiler-Frontends über umfangreichere und genauere statische und dynamische Analysemethoden, die die Fehlersuche erleichtern.[1]
ConQAT
(Continuous quality assessment toolkit) Ermöglicht diverse Qualitätsanalysen wie Architektureinhaltung, Prüfung auf doppelten Code, Qualitätsmetriken und kann diese auf einem Dashboard darstellen. Unterstützt unter anderen Java, C#, C++, JavaScript, ABAP und Ada.
Coverity SAVE
Kommerzielles Werkzeug zum Auffinden von Fehlern basierend auf dem Stanford Checker. Unterstützt die Sprachen C, C++, C# und Java.
DMS Software Reengineering Toolkit
Werkzeug zur Erkennung von Doppeltem Code, Totem Code und unpassendem Programmierstil. Unterstützt die Analyse von Sourcecode in C, C++, C#, Java, COBOL, PHP, VisualBasic und anderen Programmiersprachen.
Feram
Ein kommerzieller GitHub-basierter Dienst auf Basis anderer Open-Source-Tools. Unterstützt die Sprachen JavaScript, HTML, CSS, Python, Ruby, PHP, JSON, C, C++, C#, Objective C, D, Java, Pawn und VALA.
Fluctuat
Abstrakter Interpreter für die Validierung numerischer Eigenschaften von Ada und C/C++ Programmen.
HP Fortify Source Code Analyzer
Werkzeug zum Aufdecken von Sicherheitsproblemen in C/C++, Java, JSP, .NET, ASP.NET, ColdFusion, ASP, PHP, Visual Basic 6, VBScript, JavaScript, PL/SQL, T-SQL, Python und COBOL Programmen sowie Konfigurationsdateien.
GrammaTech CodeSonar
Erkennt potentielle Fehler (Bufferüberläufe, Memory-Leaks, …), prüft Concurrency und Sicherheit, visualisiert die Architektur und berechnet diverse Softwaremetriken für C-, C++- und Java-Code.
Gamma
Eine intelligente Software-Analyse-Plattform, die Probleme aus mehreren Linsen identifiziert: Design-Probleme, Code-Probleme, Duplizierungen und Metriken. Verfügbar für Java, C / C ++ und C #.
IBM Rational AppScan
Analysiert Sourcecode hinsichtlich Sicherheitslücken. Unterstützt C/C++, .NET, Java, JSP, JavaScript, ColdFusion, Classic ASP, PHP, Perl, VisualBasic 6, PL/SQL, T-SQL und COBOL
Imagix 4D
Erkennt insbesondere bei Embedded Applikationen Probleme mit Variablenverwendung, Task-Interaktionen und Mehrläufigkeit. Unterstützt auch beim Verstehen und Dokumentieren von C-, C++- und Java-Code.
Kalistick
Eine Cloudbasierte Plattform für statische Code Analyse mit Praxistipps. Werkzeug zur Zusammenarbeit in agilen Teams.
Kiuwan
Softwarequalitätsportal zur Darstellung der Qualität aller Phasen der Softwareentwicklung. Unterstützt statische Codeanalyse von Java, JSP, JavaScript, HTML, XML, .NET (C#, ASP.NET, VB.NET, etc.), PL/SQL, embedded SQL, SAP ABAP IV, Natural/Adabas, C/C++, Cobol, JCL und PowerBuilder.
Klocwork Insight
Erkennt Sicherheitslücken und andere technische Probleme inklusive Trend dieser Metriken. Unterstützt C, C++, C# und Java.
LDRA Testbed
Ein Software-Analyse und Test-Tool für die Sprachen C, C++, Ada83, Ada95 und Assembler (Intel, Freescale, Texas Instruments).
MALPAS Software Static Analysis Toolset
Ein Set an Tools für statische Codeanalyse für verschiedene Sprachen wie Ada, C, Pascal und Assembler (Intel, PowerPC and Motorola). Wird vor allem für sicherheitskritische Applikationen in Luftfahrt und Atomkraft verwendet.
Moose
Softwareanalyseplattform mit Werkzeugen um Software zu visualisieren, manipulieren und analysieren. Kann zu einer generischen Datenanalyseplattform ausgebaut werden. Unterstützt C, C++, Java, Smalltalk und .NET.
Parasoft
Statische Codeanalyse (Pattern- und Flow-basierend, In-line und Metriken) für C, C++, Java, .NET (C#, VB.NET, etc.), JSP, JavaScript, XML und andere Programmiersprachen. Through a Development Testing Platform, static code analysis functionality is integrated with unit testing, peer code review, runtime error detection and traceability. Plugins für Visual Studio und Eclipse.
Copy/Paste Detector (CPD)
PMDs Erkennung doppelten Codes für beispielsweise Java, JSP, C, C++, ColdFusion, PHP und JavaScript[2]
Polyspace
Verwendet abstract interpretation, eine auf formalen Methoden basierende Technik, um im Sourcecode bestimmte Laufzeitfehler zu finden bzw. zu beweisen, dass sie nicht vorhanden sind.[3] Unterstützt C-, C++- und Ada-Code.
Pretty Diff
Werkzeug für sprachbezifischen Codevergleich mit Analyse, Code-Reduktion (Minifikation) und Quelltextformatierung.
Protecode
Analysiert den Zusammenhang zwischen einzelnen Modulen im Sourcecode und Binärdateien. Sucht nach Open-Source und Fremdcode und deren Lizenzen. Kann auch Sicherheitslöcher aufdecken.
PVS-Studio
Ein Software Analysewerkzeug für C, C++, C++11, C++/CX (Component Extensions), C#.
ResourceMiner
Analyse und Metriken von Architektur bis Codedetails, unterstützt die Entwicklung eigener Regeln für globale Codeänderungen und Codegenerierungen. Unterstützt mehr als 30 Programmiersprachen sowie alle großen Datenbanken.
Simian - Similarity Analyser
Analysiert Code (und auch HTML und XML) auf doppelten Code. Kann (sprachabhängig) zwischen Code und Kommentaren unterscheiden. Unterstützt Java, C#, C++, C, Objective-C, JavaScript (ECMAScript), COBOL, ABAP, Ruby, Lisp, SQL, Visual Basic, Groovy, JSP, ASP, HTML, XML.[4]
SofCheck Inspector
Statische Analyse des Codes hinsichtlich logischer Fehler, Race Conditions und redundantem Code. Kann Vor- und Nachbedingungen aus dem Code auslesen. Unterstützt Ada und Java.
SonarQube
Ein Qualitäts-Cockpit zum Managen der Technischen Schulden: Unterstützt mit diversen Plugins Programmiersprachen wie ABAP, C, Cobol, C#, Flex, Forms, Groovy, Java, JavaScript, PHP, PL/SQL, Visual Basic, XML und Python.
Sotoarc
Architektur- und Qualitätsanalyse und -monitoring für C, C++, C#, Java und ABAP. Ermöglicht mittels Was-wäre-wenn Szenarien die Auswirkungen von Designänderungen durchzuspielen.
SQuORE
Monitoring Werkzeug für verschiedene Programmiersprachen.[5]
Teamscale
Commit-basierte inkrementelle Analysen für eine Vielzahl an Sprachen (Java, C#, JavaScript, ABAP, C/C++, Python etc.), u. a. Analyse von Architekturkonformität, redundantem Code, Kommentierung, Codestrukturierung und Namenskonventionen.
Veracode
Findet Sicherheitslücken in Binärdateien und Bytecode ohne den Sourcecode zu benötigen. Unterstützt C, C++, .NET (C#, C++/CLI, VB.NET, ASP.NET), Java, JSP, ColdFusion, PHP, Ruby on Rails und Objective-C. Kann auch mobile Applikationen für die Windows Mobile, Blackberry, Android und iOS Plattformen prüfen.
Visual Studio Team System
Analysiert C++- und C#-Code.
Yasca
Yet Another Source Code Analyzer, ein plugin-basierendes Framework um Dateien unterschiedlichen Typs zu scannen. Kommt mit Plugins für C/C++, Java, JavaScript, ASP, PHP, HTML/CSS, ColdFusion, COBOL und andere Filetypen. Lässt sich mit anderen Werkzeugen zur statischen Codeanalyse wie FindBugs, PMD und Pixy integrieren.

.NET[Bearbeiten | Quelltext bearbeiten]

.NET Compiler Platform
(Codename "Roslyn") - Compiler Framework für C# und VB.NET mit API zur Analyse und Manipulation von Code.
CodeIt.Right
Werkzeug für statische Code Analyse und automatisiertes Refactoring in Richtung Best Practices. Ermöglicht eine automatische Korrektur von Fehlern und Verletzungen. Unterstützt C# und VB.NET.
CodeRush
Ein Plugin für Visual Studio. Erweitert Visual Studio unter anderem durch Warnungen bei Verletzungen von Best Practices basierend auf statischer Codeanalyse.
FxCop
Statische Codeanalyse für .NET Programme, die gegen die Common Intermediate Language kompilieren. Läuft standalone und integriert in einige Microsoft Visual Studio Editionen.
NDepend
Schwesternprojekt zu JDepend. Analysiert und visualisiert Abhängigkeiten und Zyklen im Code. Erlaubt es Design-Regeln zu definieren und prüfen, kann Impact-Analysen erstellen und verschiedene Versionen des Codes miteinander vergleichen. Integriert in Visual Studio.
StyleCop
Analysiert C# Sourcecode und prüft Codestyleregeln und Konsistenzregeln. Läuft integriert in Microsoft Visual Studio oder in einem MSBuild Projekt.

ABAP[Bearbeiten | Quelltext bearbeiten]

ABAP Test Cockpit (ATC)
Ein zentrales Qualitätsprüfungswerkzeug für ABAP-Anwendungen in SAP-Landschaften; Nachfolger des SAP-internen Tools CheckMan, des SAP Code Inspectors (SCI) und der erweiterten Programmprüfung (SLIN)
Virtual Forge CodeProfiler
Ein in die SAP-Entwicklungsumgebung integriertes Werkzeug, das in ABAP geschriebene Anwendungen auf Sicherheitslücken, Compliance- und Qualitätsschwachstellen prüft. Enthält mehr als 240 Testfälle, die Anwender selbst erweitern können. Das Modul Automated Correction Engine (ACE) ermöglicht eine automatisierte Korrektur von Programmierfehlern. Eine Funktion zum Auffinden und Bereinigen von „Altlasten“ (nicht mehr benötigten ABAP-Code) ist ebenfalls vorhanden.[6]

ActionScript[Bearbeiten | Quelltext bearbeiten]

Apparat
Ein Sprachmanipulations- und Optimierungsframework. Basiert auf einer Zwischenrepräsentation von ActionScript.

Ada[Bearbeiten | Quelltext bearbeiten]

AdaControl
Werkzeug um Entitäten und Programmierpattern in Ada Sourcecode zu finden. Wird verwendet um Kodierungsregeln zu prüfen, sicherheitsrelevante Regeln sicherzustellen und manuelle Codeinspections zu unterstützen.
CodePeer
Ein Werkzeug zur statischen Codeanalyse, welches potentielle Laufzeitfehler in Ada Programmen erkennt.

C/C++[Bearbeiten | Quelltext bearbeiten]

Astrée
Verwendet abstrakte Interpretation, um Laufzeitfehler, Datenwettläufe und Zusicherungsverletzungen zu finden, bzw. deren Abwesenheit zu beweisen. Beinhaltet Checker für MISRA C.
BLAST model checker
BLAST steht für Berkeley Lazy Abstraction Software verification Tool, ein Werkzeug um Softwaremodelle basierend auf lazy abstraction in C Programmen zu prüfen.
Cppcheck
OpenSource Werkzeug zur Prüfung verschiedener Fehlertypen, beispielsweise die korrekte Verwendung der Standard Template Library.
cpplint
Prüft Code gegen den Google Styleguide für C++
Coccinelle
Software für Patternmatching und Transformation von Source Code
ECLAIR
Eine Plattform für die automatisierte Analyse, Verifikation, Testen und Transformation von C und C++ Programme.
Frama-C
Statisches Codeanalyseframework für C.
Goanna
Softwareanalysewerkzeug für C/C++.
Lint
Statisches Codeanalysewerkzeug für C/C++
makedepend
Ein Unix Werkzeug um Abhängigkeiten zwischen C Sourcen aufzuzeigen
QA-C
Statische Codeanalysewerkzeug für C/C++ für Qualitätssicherung und Sicherstellung von Coding Standards.
SLAM project
Ein Projekt von Microsoft Research für die Prüfung, ob Software kritischem Verhalten der von ihr verwendeten Schnittstellen nachkommt.
Sparse
Ein Werkzeug, um Fehler im Linux-Kernel zu finden.
Splint
Ein Nachfolger von Lint.

Fortran[Bearbeiten | Quelltext bearbeiten]

Ftnchek
Ein Werkzeug zur statischen Codeanalyse in Fortran Code.

Eiffel[Bearbeiten | Quelltext bearbeiten]

Inspector Eiffel
Regelbasierte Analyse basierend am AST und Control Flow Graph von Eiffel code.[7]

Java[Bearbeiten | Quelltext bearbeiten]

AgileJ StructureViews
Reverse-Engineering-Werkzeug zur Darstellung von Klassendiagrammen aus Java-Code mit Fokus auf Filterung
ObjectWeb ASM
Werkzeug zur Teilung, Modifizierung und Zusammensetzung von Java Bytecode Klassen.
Checkstyle
Freies Werkzeug zur Statischen Codeanalyse insbesondere hinsichtlich der Einhaltung von Coding Standards.
FindBugs
Ein freies Werkzeug zur Analyse des Bytecodes von Java Programmen hinsichtlich möglicher Fehler (basierend auf der Jakarta Byte Code Engineering Library (BCEL)). Entwickelt von der University of Maryland.
Hammurapi
Vielseitige Software für Code-Reviews. Gratis für nicht kommerzielle Verwendungen.
JDepend
Analysiert und visualisiert Abhängigkeiten und Zyklen im Code. Erlaubt es Design-Regeln zu definieren und prüfen, kann Impact-Analysen erstellen und verschiedene Versionen des Codes miteinander vergleichen.
Jtest
Statische Code Analyse und Test-Werkzeug von Parasoft.
PMD
Statische Codeanalyse für die Identifizierung potentieller Qualitätsprobleme.
SonarGraph
Überprüft, ob die definierte Architektur auch umgesetzt wurde und zeigt Abweichungen von der definierten Architektur sowie Zyklen auf. Kann auch diverse Softwaremetriken errechnen.
Soot
Framework zur Manipulation und Optimierung für Java Code
Squale
Plattform für Softwarequalität (kann mit kommerziellen Analysewerkzeugen auch für andere Sprachen als Java erweitert werden).
ThreadSafe
Statisches Analysewerkzeug für Java mit Fokus auf Concurrencyfehlern.
Xanitizer
Werkzeug zum Aufdecken von Sicherheitsproblemen in Java und JSP Programmen (insbesondere Webapplikationen).[8]

JavaScript[Bearbeiten | Quelltext bearbeiten]

JSLint
Ein JavaScript Validator, der die Syntax von JavaScript untersucht.
JSHint
Eine Abspaltung von JSLint, welche weiterhin den proprietär lizenzierten Parser von JSLint verwendet.
eslint
Ein modulares Werkzeug zum Prüfen von JavaScript als Freie Software, kann die Parser Espree oder babel-eslint verwenden.[9]
jsonlint
Besonders zugeschnitten auf JavaScript Object Notation (JSON).[10]
jscs
Vor allem zum Prüfen von Quelltext-Stil-Regeln.[11]

Perl[Bearbeiten | Quelltext bearbeiten]

Perl::Critic
Ein Werkzeug, um Perl Best Practices sicherzustellen. Die meisten dieser Best Practices basieren auf dem Buch Perl Best Practices von Damian Conway.
PerlTidy
Syntaxüberprüfung, sowie Test und Sicherstellung von Kodierungsrichtlinien in Perl
Padre
Integrierte Entwicklungsumgebung für Perl, die auch eine statische Codeanalyse zur Prüfung typischer Anfängerfehler enthält.

PHP[Bearbeiten | Quelltext bearbeiten]

RIPS
Automatische Detektierung von komplexen Sicherheitsschwachstellen
Mondrian
Sammlung von Command Line Tools für die Analyse und Refactoring von objektorientiertem PHP-Code.

Python[Bearbeiten | Quelltext bearbeiten]

Pychecker
Werkzeug zur Prüfung von Python Sourcecode
Pylint
Statische Codeanalyse
Pyflakes
Programm, um Python Code auf Fehler hin zu überprüfen

Werkzeuge zu Prüfung mittels formaler Methoden[Bearbeiten | Quelltext bearbeiten]

Werkzeuge die Formale Methoden (beispielsweise statische Assertions) verwenden um statische Codeanalyse zu machen:

ECLAIR
Verwendet auf formalen Methoden basierende Codeanalysetechniken wie abstrakte Interpretation oder Modellprüfung, kombiniert mit Techniken zur Zusicherung von Constraints. Kann das Vorhandensein oder Nicht-Vorhandensein von bestimmten Runtimefehlern im Sourcecode erkennen.
ESC/Java und ESC/Java2
Können basierend auf der Java Modeling Language, einer erweiterten Version von Java, Code prüfen.
MALPAS Software Static Analysis Toolset
Ein Werkzeug basierend auf formalen Methoden, das mittels gerichteter Graphen und regulärer Algebra beweist, dass die analysierte Software korrekt ihre mathematische Spezifikation umsetzt.
SofCheck Inspector
Erkennt und dokumentiert statisch Vor- und Nachbedingungen für Java Methoden. methods; Prüft statisch Vorbedingungen bei allen Aufrufern. Unterstützt auch Ada.
SPARK Toolset
Basierend auf der Programmiersprache SPARK prüft der SPARK Examiner Code.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Literatur[Bearbeiten | Quelltext bearbeiten]

  • Nick Rutar, Christian Almazan, Jeff Foster: A Comparison of Bug Finding Tools for Java. Hrsg.: University of Maryland, College Park. (englisch, umd.edu [PDF] Vergleicht Bandera, ESC/Java 2, FindBugs, JLint und PMD).
  • Walter W. Schilling Jr., Mansoor Alam: Integrate static analysis into a software development process. 1. November 2006 (englisch, embedded.com).

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Static Analysis in Xcode. Apple. Abgerufen am 3. September 2009.
  2. PMD - Browse /pmd/5.0.0 at SourceForge.net. Abgerufen im Sun Dec 09 2012.
  3. Patrick Cousot: The Role of Abstract Interpretation in Formal Methods. IEEE International Conference on Software Engineering and Formal Methods. 2007. Abgerufen am 8. November 2010.
  4. Simian Features
  5. Boris Baldassari: SQuORE: a new approach to software project assessment. (PDF) International Conference on Software and Systems Engineering and their Applications, November 2012, Paris, France.
  6. ABAP Code Audits auf Knopfdruck. Virtual Forge. Abgerufen am 26. Januar 2016.
  7. Masters Thesis (PDF)
  8. Xanitizer Feature-Übersicht
  9. eslint.org
  10. jsonlint.com
  11. jscs.info