List of tools for static code analysis


This is a list of notable tools for static program analysis.

Languages

Ada">Ada (programming language)">Ada

*

C">C (programming language)">C, [C++]

*

C#">C Sharp (programming language)">C#

*

[IEC 61131-3]

Java">Java (programming language)">Java

*

[JavaScript]

*

[Objective-C], Objective-C++

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

Opa

Packaging">Package management system">Packaging

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

[Perl]

[PL/SQL]

[PowerBuilder], PowerScript

Python">Python (programming language)">Python

  • 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.
  • PyDev – Eclipse-based Python IDE with code analysis available on-the-fly in the editor or at save time.
  • Pylint – Static code analyzer. Quite stringent; includes many stylistic warnings as well.
  • Fluid Attacks
  • Semgrep – Static code analyzer that helps expressing code standards and surfacing bugs early. A CI service and a rule library is also available.
*

[Transact-SQL]

  • Visual Expert – A SQLServer code analysis tool that reports on programming issues and helps understand and maintain complex code.

Tools with duplicate code detection

*

Formal methods tools

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