List of tools for static code analysis

From Wikipedia, the free encyclopedia
Jump to: navigation, search

This is a list of tools for static code analysis.

Language[edit]

Multi-language[edit]

  • APPscreener - static code analysis tool for binaries and source code across 15 languages: Java/Scala, Javascript, C, C++, Objective-C, C#, PHP, T-SQL/PL/SQL, Python, Visual Basic, Ruby, Swift, ABAP, Delphi, HTML 5, Solidity. Decompiles binaries and reconstructs vulnerable source code. Jenkins and Jira out of the box integration for continuous development process.
  • Axivion Bauhaus Suite – A static code analysis tool suite for Ada, C, C++, C#, and Java code that performs various analyses such as architecture checking, interface analyses, MISRA checking, and clone detection.
  • CAST Application Intelligence Platform by CAST – Detailed, audience-specific dashboards to measure quality and productivity. Cross-tier, cross-technology analysis of 50+ languages, C, C++, Java, .NET, Oracle, PeopleSoft, SAP, Siebel, Spring, Struts, Hibernate and all major databases.
  • Checkmarx Checkmarx SAST Static Code Analyser - Identifies vulnerabilities in over 20 languages including C, C#, Apex, Scala, Swift, Python, Ruby, .NET, PHP, Java and Javascript. Integrates with jenkins and other build servers and IDEs like visualStudion and IntelliJ to enable continuous integration.
  • Cigital SecureAssist - A lightweight IDE plugin that points out common security vulnerabilities in real time as the developer is coding. Supports Java, .NET, and PHP.
  • CM evolveIT - Static code analyzer with code slicing. Supports COBOL, HL ASM, Java, SQL, IMS, CICS. Provides component connectivity, code metrics, clone detection, style checking, and data lineage.
  • Code Dx - Software application vulnerability correlation and management system that consolidates and normalizes software vulnerabilities detected by multiple static application security testing (SAST) and dynamic application security testing (DAST) tools, as well as the results of manual code reviews. Supports C, C++, C#, Java, JavaScript, JSP, PHP, Python, Rails, Ruby, Scala, VB.NET and XML/XSL. [1]
  • Compuware Topaz for Program Analysis – A static code analysis for PL/I and COBOL. Produces visual displays of structure charts and logic/data flow and shows dependencies across programs.
  • ConQAT – Continuous quality assessment toolkit that allows flexible configuration of quality analyses (architecture conformance, clone detection, quality metrics, etc.) and dashboards. Supports Java, C#, C++, JavaScript, ABAP, Ada and many other languages.
  • Coverity – A static analysis tool for C, C++, C#, Objective-C, Java, Javascript, node.JS, Ruby, PHP, & Python.
  • DefenseCode ThunderScan – A static source code security analysis tool for C#, Java, PHP, VB.Net, JavaScript, Objective-C, PL/SQL, ASP Classic and Visual Basic.
  • HP Fortify Software Static Code Analyzer – Helps developers identify software security vulnerabilities in C, C++, Java, JSP, .NET, ASP.NET, classic Active Server Pages (ASP), ColdFusion, PHP, Visual Basic 6, VBScript, JavaScript, PL/SQL, T-SQL, Python, Objective-C, ABAP and COBOL and configuration files.
  • GrammaTech CodeSonar – Defect detection (buffer overruns, memory leaks, etc.), concurrency and security checks, architecture visualization and software metrics for C, C++, and Java source code.
  • IBM Security AppScan (formerly known as IBM Rational AppScan) Source Edition – Analyzes source code to identify security vulnerabilities while integrating security testing with software development processes and systems. Supports C, C++, .NET, Java, JSP, JavaScript, ColdFusion, Classic ASP, PHP, Perl, Visual Basic 6, PL/SQL, T-SQL, and COBOL
  • Facebook Infer – A tool for Java C, C++, and Objective-C. Targets null pointer problems, leaks, concurrency issues and API usage for Facebook's mobile apps. Available as open source on github.
  • Flexera Flexnet Code Insight - Software Composition Analysis (SCA) product used to discover Open Source and Commercial dependencies in a software project. Discovers known vulnerabilities (CVEs, etc.) and Open Source license compliance issues
  • Imagix 4D – Identifies problems in variable use, task interaction and concurrency, especially in embedded applications, as part of an overall system for understanding, improving and documenting C, C++ and Java code.
  • Kiuwan – Software Analytics end-to-end platform for static code analysis and automated code review. It covers defect detection, application security & IT Risk Management, with enhanced life cycle and application governance features. Support for over 20 languages, including Objective-C, Java, JSP, JavaScript, PHP, C, C++, ABAP, COBOL, JCL, C#, PL/SQL, Transact-SQL, SQL, Visual Basic, Visual Basic .NET, Android (operating system).
  • Klocwork – Provides security vulnerability, standards compliance (MISRA, ISO 26262 and others), defect detection and build-over-build trend analysis for C, C++, C# and Java.
  • Kuscos - Kuscos is a software intelligence platform that provides a range of analysis tools and reports and delivers key information regarding source code modules and team members. Supported languages are Java, JavaScript, C#, VB.Net, VB, Cobol, PL/SQL, Powerbuilder, Delphi and Informix-4GL.
  • LDRA Testbed – A software analysis and testing tool suite for C, C++, Ada83, Ada95 and Assembler (Intel, Freescale, Texas Instruments).
  • MALPAS – A software static analysis toolset for a variety of languages including Ada, C, Pascal and Assembler (Intel, PowerPC and Motorola). Used primarily for safety critical applications in Nuclear and Aerospace industries.
  • MANTA Checker - A static code analysis tool based on automatic code reviews that can detect and repair errors and  weaknesses in custom developed code. Supports Informatica PowerCenter, Teradata SQL, PL/SQL.
  • Moose – Moose started as a software analysis platform with many tools to manipulate, assess or visualize software. It can evolve to a more generic data analysis platform. Supported languages are C, C++, Java, Smalltalk, .NET, more may be added.
  • Parasoft – Provides static analysis (pattern-based, flow-based, in-line, metrics) for C, C++, Java, .NET (C#, VB.NET, etc.), JSP, JavaScript, XML, and other languages. Through a Development Testing Platform, static code analysis functionality is integrated with unit testing, peer code review, runtime error detection and traceability.
  • Copy/Paste Detector (CPD) – PMDs duplicate code detection for (e.g.) Java, JSP, C, C++, ColdFusion, PHP and JavaScript[2] code.
  • Polyspace – Uses abstract interpretation to detect and prove the absence of certain run time errors in source code for C, C++, and Ada
  • Pretty Diff - A language-specific code comparison tool that features language-specific analysis reporting in addition to language-specific minification and beautification algorithms.
  • Protecode – Analyzes the composition of software source code and binary files, searches for open source and third party code and their associated licensing obligations. Can also detect security vulnerabilities.
  • PVS-Studio – A software analysis tool for C, C++, C++11, C++/CX (Component Extensions), C#.
  • Q-Analysis - Scans source code and binaries in the cloud to identify security flaws. It also scans server configuration files for security flaws. Languages included, GoLang, Python, Perl, PHP, C/C++, Javascript, Java, C# and it will also look for backdoors in software. Has found flaws in mod security and apache.
  • Rogue Wave Software OpenLogic – Scans source code and binaries to identify open source code and licenses, manages open source policies and approvals, reports security vulnerabilities, and provides open source technical support.
  • Semmle – Supports C, C++, C#, Java, JavaScript, Objective-C, Python and Scala.
  • SideCI – Static code analysis based automated code review tool for Ruby, Python, PHP, JavaScript, CoffeeScript and Go. Checks style, quality, dependencies, security and bugs.
  • Silverthread – Provides design quality and technical health solutions for software code
  • SnappyTick (SAST) - Snappy Tick is Static application security tool, It help to identify the Vulnerability in Source code,supports widely used languages for desktop, web and mobile applications.
  • SofCheck Inspector – Static detection of logic errors, race conditions, and redundant code for Ada and Java; automatically extracts pre-postconditions from code.
  • Sonargraph – Supports Java, C# and C/C++ with a focus on dependency analysis, automated architecture check, metrics and the ability to add custom metrics and code-checkers.
  • SonarQube – A continuous inspection engine to manage the technical debt: unit tests, complexity, duplication, design, comments, coding standards and potential problems. Supports languages: ABAP, Android (Java), C, C++, CSS, Objective-C, COBOL, C#, Flex, Forms, Groovy, Java, JavaScript, Natural, PHP, PL/SQL, Swift, Visual Basic 6, Web, XML, Python.
  • Sotoarc-Sotograph – Architecture and quality in-depth analysis and monitoring for C, C++, C#, Java, ABAP.
  • SourceMeter - A platform-independent, command-line static source code analyzer for Java, C, C++, RPG IV (AS/400) and Python.
  • SQuORE is a multi-purpose and multi-language monitoring tool[3] for software projects.
  • Understand – A multi-platform tool for code analysis and comprehension of large code bases. Supported languages include Ada, Cobol, Ansi C, K&R C, Ansi C++, C#, FORTRAN, Java, Jovial, Pascal, PL/M, Python, VHDL, Objective C, Objective C++, HTML, PHP, JavaScript, and XML.
  • Veracode – Finds security flaws in application binaries and bytecode without requiring source. Supported languages include C, C++, .NET (C#, C++/CLI, VB.NET, ASP.NET), Java, JSP, ColdFusion, PHP, Ruby on Rails, JavaScript (including Node.js), Python, Objective-C, Swift, Active Server Pages, Visual Basic 6, COBOL, and IBM RPG, including mobile applications on the Android and iOS platforms and written in JavaScript cross platform frameworks.[4]
  • Yasca – Yet Another Source Code Analyzer, a plugin-based framework to scan arbitrary file types, with plugins for C, C++, Java, JavaScript, ASP, PHP, HTML-CSS, ColdFusion, COBOL, and other file types. It integrates with other scanners, including FindBugs, PMD, and Pixy.
  • Application Analyzer - MasterCraft (TCS product) – Tata Consultancy Services (TCS) MasterCraft is a brand of IT Process Automation and Management software tools from Tata Consultancy Services Limited. Application Analyzer is a static code analyzer which supports COBOL, RPG, PL/I, Java, Javascript, .NET, VB,

.NET[edit]

  • .NET Compiler Platform (Codename Roslyn) – Open-source compiler framework for C# and Visual Basic .NET developed by Microsoft .NET. Provides an API for analyzing and manipulating syntax.
  • CodeIt.Right – Combines static code analysis and automatic refactoring to best practices which allows automatic correction of code errors and violations; supports C# and VB.NET.
  • CodeRush – A plugin for Visual Studio which alerts users to violations of best practices.
  • Designite - A software design quality assessment tool for C#. It computes various Software metrics and detects 37 code smells and design smell. It offers an extension to Visual Studio.
  • FxCop – Free static analysis for Microsoft .NET programs that compiles to CIL. Standalone and integrated in some Microsoft Visual Studio editions; by Microsoft.
  • NDepend – Simplifies managing a complex .NET code base by analyzing and visualizing code dependencies, by defining design rules, by doing impact analysis, and by comparing different versions of the code. Integrates into Visual Studio.
  • Parasoft dotTEST – A static analysis, unit testing, and code review plugin for Visual Studio; works with languages for Microsoft .NET Framework and .NET Compact Framework, including C#, VB.NET, ASP.NET and Managed C++.
  • Sonargraph – Supports C#, Java and C/C++ with a focus on dependency analysis, automated architecture check, metrics and the ability to add custom metrics and code-checkers.
  • StyleCop – Analyzes C# source code to enforce a set of style and consistency rules. It can be run from inside of Microsoft Visual Studio or integrated into an MSBuild project.

Ada[edit]

  • SPARK Toolset - Verification tools for SPARK 2014 – a subset of Ada 2012 that leverages Ada's support for contracts. Designed to offer soundness, depth, modularity and efficiency of verification.
  • AdaControl – A tool to control occurrences of various entities or programming patterns in Ada code, used for checking coding standards, enforcement of safety related rules, and support for various manual inspections.
  • CodePeer – An advanced static analysis tool that detects potential run-time logic errors in Ada programs.
  • Fluctuat – Abstract interpreter for the validation of numerical properties of programs.
  • LDRA Testbed – A software analysis and testing tool suite for Ada83/95.
  • Polyspace – Uses abstract interpretation to detect and prove the absence of certain run time errors in source code.
  • SofCheck Inspector – (Bought by AdaCore) Static detection of logic errors, race conditions, and redundant code for Ada; automatically extracts pre-postconditions from code.

C, C++[edit]

  • AdLint is an open source and free source code static analyzer for ANSI C89 / ISO C90 and partly ISO C99.
  • Astrée – finds all potential runtime errors and data races by abstract interpretation, can prove their absence, and can prove functional assertions; tailored towards safety-critical C code (e.g. avionics and automotive). Includes MISRA checker.
  • Axivion Bauhaus Suite – A static code analysis tool suite that performs various analyses such as architecture checking, interface analyses, MISRA checking, and clone detection.
  • BLAST – (Berkeley Lazy Abstraction Software verification Tool) – An open-source software model checker for C programs based on lazy abstraction (follow-on project is CPAchecker.[5]).
  • C-STAT - A C and C++ static analysis tool which is an optional add-on to IAR Systems Embedded Workbench IDE for embedded microcontroller designs. C-STAT provides checking to MISRA standards as well as Common Weakness Enumeration (CWE) and CERT C/C++. There is also a complementary tool called C-RUN which provides live runtime analysis of code as well.
  • Cevelop – A C++ IDE that extends Eclipse CDT with many new static code analysis and refactoring plug-ins, for example to make code const-correct.
  • Cppcheck – Open-source tool that checks for several types of errors, including use of STL.
  • cpplint – An open-source tool that checks for compliance with Google's style guide for C++ coding.
  • Clang – An open-source compiler that includes a static analyzer.
  • Coccinelle – An open-source source code pattern matching and transformation.
  • Coverity – A static analysis tool for C/C++.
  • Cppdepend – Simplifies managing a complex C/C++ code base by analyzing and visualizing code dependencies, by defining design rules, by doing impact analysis, and comparing different versions of the code.
  • ECLAIR – A platform for the automatic analysis, verification, testing and transformation of C and C++ programs.
  • Eclipse (software) – An open-source IDE that includes a static code analyzer.
  • flawfinder -a simple open-source software program that examines C/C++ source code and reports possible security weaknesses (“flaws”) sorted by risk level.
  • Fluctuat – Abstract interpreter for the validation of numerical properties of programs.
  • Frama-C – An open-source static analysis framework for C.
  • Goanna – A software analysis tool for C/C++.
  • GrammaTech – A static program analysis tool for C/C++, see above.
  • Infer – Developed by an engineering team at Facebook with open-source contributers. Targets null pointer and other memory problems. Available as open source on github.
  • Klocwork Static Code Analysis – A static analysis tool for C/C++.
  • Lint – The original static code analyzer for C.
  • LDRA Testbed – A software analysis and testing tool suite for C/C++.
  • Parasoft C/C++test – A C/C++ tool that does static analysis, unit testing, code review, and runtime error detection; plugins available for Visual Studio and Eclipse-based IDEs.
  • PC-Lint – A software analysis tool for C with partial support for C++2011.
  • Polyspace – Uses abstract interpretation to detect and prove the absence of run time errors, Dead Code in source code as well as used to check all MISRA (2004, 2012) rules (directives, non directives).
  • PRQA QA·C and QA·C++ – Deep static analysis of C/C++ for quality assurance and guideline/coding standard enforcement with MISRA support.
  • SLAM project – a project of Microsoft Research for checking that software satisfies critical behavioral properties of the interfaces it uses.
  • Sparse – An open-source tool designed to find faults in the Linux kernel.
  • Splint – An open-source evolved version of Lint, for C.
  • Visual Studio – An IDE that provides static code analysis for C/C++ both in the editor environment and from the compiler command line.

Java[edit]

Tool latest
release
Free software Duplicate
code
Notes
Checkstyle 2017-02-04 Yes; LGPL No Besides some static code analysis, it can be used to show violations of a configured coding standard. Duplicate code detection was removed[6] from Checkstyles.
Coverity No; Proprietary Coverity is a static analysis and Static Application Security
Testing (SAST) platform that finds critical defects and security weaknesses in code as it’s written before they become vulnerabilities, crashes, or maintenance headaches.
FindBugs 2015-03-06 Yes; LGPL Based on Jakarta BCEL from the University of Maryland.
Infer Yes; BSD with additio-
nal patent clause
Developed by an engineering team at Facebook with open-source contributers. Targets null pointer exceptions, leaks, and thread safety issues
IntelliJ IDEA 2017-03-21 Yes; ASL 2 Yes A leading Java IDE
JArchitect 2015-10-31 No; Proprietary Simplifies managing a complex code base by analyzing and visualizing code dependencies, defining design rules, doing impact analysis, and by comparing different versions of the code.
Jtest 2016-12-05 No; Proprietary Yes Testing and static code analysis product by Parasoft.
LDRA Testbed No; Proprietary Analysis and testing tool suite
PMD 2017-07-01 Yes; BSDASL 2LGPL Yes A static ruleset based source code analyzer that identifies potential problems.
Eclipse 2017-03-23 Yes; EPL No Cross-platform IDE with own set of several hundred code inspections available for analyzing code on-the-fly in the editor and bulk analysis of the whole project.
SemmleCode No; Proprietary Object oriented code queries for static program analysis.
Sonargraph 2017 No; Proprietary Yes (formerly SonarJ) Monitors conformance of code to intended architecture, also computes a wide range of software metrics. Plugins for Eclipse, IntelliJ, Maven, Gradle, Jenkins and SonarQube.
Sonargraph-Explorer 2017 Yes; Proprietary No Free feature limited variant of Sonargraph with a focus on dependency visualization and metrics.
Soot Yes; LGPL A language manipulation and optimization framework consisting of intermediate languages.
Spoon Yes; CeCILL-C No Library to write your own static analyses and architectural rule checkers for Java. Can be integrated in Maven and Gradle.
Squale 2011-05-26 Yes; LGPL A platform to manage software quality
SourceMeter 2016-02-01 No; Proprietary Yes A platform-independent, command-line static source code analyzer.
ThreadSafe 2014-03-28 No; Proprietary A static analysis tool focused on finding concurrency bugs.

JavaScript[edit]

  • DeepScan – A static code analyzer for JavaScript, TypeScript and React. Targets runtime errors and quality issues rather than coding conventions. Available for free for open source projects on GitHub.
  • ESLint –A modern, pluggable linting utility for JavaScript
  • Google's Closure Compiler – JavaScript optimizer that rewrites code to be faster and smaller, and checks use of native JavaScript functions.
  • JSHint – A community driven fork of JSLint.
  • JSLint – JavaScript syntax checker and validator.

Objective-C, Objective-C++[edit]

  • Clang – The free Clang project includes a static analyzer. As of version 3.2, this analyzer is included in Xcode.[7]
  • Infer – Developed by an engineering team at Facebook with open-source contributers. Targets null pointers, leaks, API usage and other lint checks. Available as open source on github.

Opa[edit]

  • Opa includes its own static analyzer. As the language is intended for web application development, the strongly statically typed compiler checks the validity of high-level types for web data, and prevents by default many vulnerabilities such as XSS attacks and database code injections.

Packaging[edit]

  • Lintian – Checks Debian software packages for common inconsistencies and errors.
  • Rpmlint – Checks for common problems in rpm packages.

Perl[edit]

  • Perl::Critic – A tool to help enforce common Perl best practices. Most best practices are based on Damian Conway's Perl Best Practices book.
  • Devel::Cover –This tool provides code coverage metrics for Perl. Code coverage metrics describe how thoroughly tests exercise code.
  • PerlTidy – Program that acts as a syntax checker and tester/enforcer for coding practices in Perl.
  • Padre – An IDE for Perl that also provides static code analysis to check for common beginner errors.

PHP[edit]

  • PHPMD – PHP Mess Detector.
  • RIPS – A static code analyzer and audit framework for vulnerabilities in PHP applications.
  • Phlint - PHP Linter, Code Analyzer and Tester

PL/SQL[edit]

Python[edit]

  • Bandit[1] – AST-based static analyzer from OpenStack Security Group, with a focus on security alerts
  • PyCharm – Cross-platform Python IDE with code inspections available for analyzing code on-the-fly in the editor and bulk analysis of the whole project.
  • Pychecker[2] – similar to Pylint
  • Pyflakes[3] – fast AST-based static analyzer
  • Pylint – Static code analyzer. Quite stringent; includes many stylistic warnings as well.

Ruby[edit]

  • Flay – Checks for structural similarities and detects code duplication.
  • Flog – Detects complex classes and methods using ABC metrics.
  • Reek – Checks for higher level code smells.
  • RuboCop – Style checker based on the community driven Ruby Style Guide.

Ruby on Rails[edit]

  • Bullet – Checks for N+1 queries slowing down database access.
  • Brakeman – Detects and warns about common security vulnerabilities.

Transact-SQL[edit]

Formal methods tools[edit]

Tools that use sound, i.e. over-approximating a rigorous model, formal methods approach to static analysis (e.g., using static program assertions). Sound methods contain no false negatives for bug-free programs, at least with regards to the idealized mathematical model they are based on (there is no "unconditional" soundness). Note that there is no guarantee they will report all bugs for buggy programs, they will report at least one.

See also[edit]

References[edit]

  1. ^ "Supported Application Security Testing Tools and Languages". codedx.com. Retrieved Apr 25, 2017. 
  2. ^ "PMD - Browse /pmd/5.0.0 at SourceForge.net". Retrieved Dec 9, 2012. 
  3. ^ 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.
  4. ^ "White Box Testing/Binary Static Analysis (SAST)". Veracode.com. Retrieved 2016-12-08. 
  5. ^ "CPAchecker". 2015-02-08. 
  6. ^ https://github.com/checkstyle/checkstyle/issues/523
  7. ^ "Static Analysis in Xcode". Apple. Retrieved 2009-09-03. 
  8. ^ "Visual Expert for Oracle - PL/SQL Code Analyzer". www.visual-expert.com. 2017-08-24. 
  9. ^ "Visual Expert for SQL Server - Transact SQL Code Analyzer". www.visual-expert.com. 2017-08-24. 
  10. ^ Cousot, Patrick (2007). "The Role of Abstract Interpretation in Formal Methods". IEEE International Conference on Software Engineering and Formal Methods. Retrieved 2010-11-08. 

External links[edit]