Code Analysis

This topic is about tools for analyzing computer code.

Java

Java Coding Standard Checker (JCSC) GPL

Inspired by "lint" with a GUI rule editor and plug-ins for Ant, IntelliJ, and CruiseControl.

http://jcsc.sourceforge.net/

FindBugs LGPL

Has Eclipse plug-in: http://findbugs.sourceforge.net/.

PMD BSD-style

Rule-based code checker that has been around long while and has integration with many IDEs and the like.

http://pmd.sourceforge.net/

A book, "PMD Applied": http://books.slashdot.org/books/07/02/16/1515230.shtml.

Links to related tools: http://pmd.sourceforge.net/similar-projects.html.

Aspect Mining and Refactoring

Glass Box

Impressive looking automatic test & diagnostic tool for Java servers. AOP-based using JMX for instrumentation and OSS (CPL)!

http://www.glassbox.com/

https://glassbox-inspector.dev.java.net/

Good article @ developerWorks

Video of demo @ Google

Papers

http://citeseer.ist.psu.edu/welch01glasshouse.html

"Code Quality in Eclipse"

Test Generation

JUnitFactory

http://www.junitfactory.com/ is a web service that returns automatically generated JUnit tests for code.

Formal Methods

A gazillion things have been written on formal methods for program, software, and computation.

Output Parsing/Scraping

"STLFilt: An STL Error Message Decryptor for C++"

http://textfilt.sourceforge.net/

C

Sparse
Sparse, the semantic parser, provides a compiler frontend capable of parsing most of ANSI C as well as many GCC extensions, and a collection of sample compiler backends, including a static analyzer also called "sparse". Sparse provides a set of annotations designed to convey semantic information about types, such as what address space pointers point to, or what locks a function acquires or releases. Linus Torvalds started writing Sparse in 2003, initially targeting issues such as mixing pointers to user address space and pointers to kernel address space.

Misc.

Links I didn't want to lose, but doesn't mean they'll mean anything to you...

"Component Identification Through Program Slicing"

"Object-oriented Process, Environment, and Notation (OPEN)" is related to "Brian Henderson-Sellers".