Zum Inhalt springen

Liste von Werkzeugen zur statischen Codeanalyse

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 25. Dezember 2015 um 11:02 Uhr durch Filterkaffee (Diskussion | Beiträge) (Schreibweise von BlackBerry angepasst, Binnenmajuskel entfernt (→ Blackberry)). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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

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.
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.
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.
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.
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, Natural, 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 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 compilieren. 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 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)
Apparat
Ein Sprachmanipulations- und Optimierungsframework. Basiert auf einer Zwischenrepräsentation von ActionScript.
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.
Astrée
Verwendet abstrakte Interpretation um Laufzeitfehler und Zusicherungsverletzungen zu finden. Maßgeschneidert um kritischen Code in Avionik zu finden
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
PVS-Studio
Ein Software Analysewerkzeug für C, C++, C++11, C++/CX (Component Extensions).
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.
Inspector Eiffel
Regelbasierte Analyse basierend am AST und Control Flow Graph von Eiffel code. [6]
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 Statische 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).[7]
JSLint
Ein JavaScript Validator, der die Syntax von JavaScript untersucht.
JSHint
Ein OpenSource Fork von JSLint.
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.
Mondrian
Sammlung von Command Line Tools für die Analyse und Refactroing von objektorientiertem PHP Code.
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

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

Literatur

  • Nick Rutar, Christian Almazan, Jeff Foster: A Comparison of Bug Finding Tools for Java. Hrsg.: University of Maryland, College Park. (umd.edu [PDF; abgerufen am 12. Mai 2013] 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 (embedded.com [abgerufen am 12. Mai 2013]).

Einzelnachweise

  1. Static Analysis in Xcode. Apple, abgerufen am 3. September 2009.
  2. PMD - Browse /pmd/5.0.0 at SourceForge.net.
  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. Baldassari, Boris (2012). "SQuORE: a new approach to software project assessment", International Conference on Software and Systems Engineering and their Applications, Nov. 2012, Paris, France.
  6. Masters Thesis
  7. Xanitizer Feature-Übersicht