Add your program analysis tools by creating a pull request here.

This is a list of usable tools that you can try and see the benefits of “Big Code”. Additionally, there are useful libraries useful when developing such tools.

JSNice

JSNice is a statistical predictor of variable names and type annotations for JavaScript developed at ETH Zurich. The tool learns a probabilistic type inference procedure for JavaScript.
The learning, the type inference and the variable name reconstruction are framed as structured prediction using Conditional Random Fields. A general framework extensible to other languages and similar problems is available at nice2predict.org. Nice2Predict also includes visualization of the inference procedure.

[jsnice.org] [nice2predict.org] [paper @ POPL 2015] [developers' website] [github]
Tags: #staticanalysis #deobfuscation

SLANG

SLANG is a code completion tool for Java that is intended to complete APIs. A tool trained on Android applications is available and evaluated on predicting what next Android API should be written in a program.

[SLANG tool] [paper] [author website 1] [author website 2]
Tags: #staticanalysis #codecompletion

TASSAL: Tree-based Autofolding Software Summarization ALgorithm

TASSAL is a tool for the automatic summarization of source code using autofolding. Autofolding automatically creates a summary of a source code file by folding non-essential code and comment blocks.
[GitHub Repository] [demo]
Tags: #summarization

Naturalize

Naturalize is a tool that learns and suggest coding conventions (such as variable names) to improve the stylistic consistency of your codebase.
[GitHub Repository] [Project page]
Tags: #codingconventions

Libraries

See also useful libraries that may help you develop new tools.

If you have a tool you would like to list here, head to the github page and create a pull request with your suggestion.