Tools For Checking Java Programs

Like all such lists, this is perennially out of date. <a href="https://darwinsys.com/contact">Contributions welcome</a>.

Table 1. The Tools
Name Notes Websiteurl Category

ACRA

Android-specific crash reporting; client is open source, various backends can be used.

https://github.com/ACRA/acra

Crash

Airbrake

Long widely used in the Ruby/Rails community, supports Java, several other languages, lots of back-end integration. Client libs are open source

https://airbrake.io/

Crash

Android Lint

Included w/ Android SDK

http://developer.android.com/tools/help/lint.html

Static

Android Testing Support Library

ATSL includes Espresso, JUnit4 support for Android Testing, UI automator, expressions, and more.

https://google.github.io/android-testing-support-library/docs/

annabot

Checks annotations for correct usage

http://darwinsys.com/annabot/

Static

AppPerfect

Commercial. Aims to automate dev and running of test

http://www.appperfect.com/products/java-unit-test.html

Dynamic

Arquillian

Container-in-test EE component tester

http://arquillian.org/

Dynamic

Assent

Formerly from Tata (http://www.tcs.com/), apparently no longer available

Bandera

Uses Pathfinder

http://bandera.projects.cis.ksu.edu/

Model

BugSplat

Commercial, cross-platform crash reporting

http://www.bugsplatsoftware.com/Documents/java-applications/

Crash

Canoo WebTest

http://webtest.canoo.com/webtest/

Web

Cenqua

Merged into Clover

Checker Framework

Integrates with standard compiler(s)

http://checkerframework.org/

Static

CheckStyle

http://checkstyle.sourceforge.net/

Static

CloneDR

http://www.semanticdesigns.com/Products/Clone/

DuplicateDetector

Clover

https://www.atlassian.com/software/clover/

Coverage

Cobertura

http://cobertura.sf.net

Coverage

Coverity

Commercial

http://www.coverity.com/

Static

CPD

Part of PMD

https://pmd.github.io/pmd-5.4.1/usage/cpd-usage.html

DuplicateDetector

CrashBurnFree

http://darwinsys.com/crashburnfree/

Crash

Cucumber

https://cucumber.io/docs/reference/jvm

TDD

dbUnit

JUnit extension for database work

http://dbunit.sourceforge.net/

Dynamic

DoctorJ

https://github.com/jpace/doctorj

Static

EasyMock

An influence on Mockito

http://easymock.org/

Mocking

EclEmma

Eclipse plugin for coverage. Started with Emma, switched to JaCoCo

http://eclemma.org/

Coverage

Emma

http://emma.sourceforge.net/

Coverage

ESC/Java

Claims to be on github but source is not checked in after 3 years.

http://kindsoftware.com/products/opensource/ESCJava2/

Static

Espresso

Part of Android Testing Support Library. Do not confuse with Espresso web framework

https://google.github.io/android-testing-support-library/docs/espresso/

fb-infer

http://fbinfer.com/

Static

FindBugs

Defunct, replaced by spotbugs

http://findbugs.sourceforge.net/

Static

Fortify

Acquired by HP

http://www8.hp.com/us/en/software-solutions/application-security/index.html

Static

Grinder

http://grinder.sourceforge.net/index.html

Load

Hamcrest

Matchers for JUnit (etc), supports other prog langs

http://hamcrest.org/

Dynamic

Hammurapi

Static

HtmlCleaner

HtmlCleaner cleans poorly-formed HTML pages into well-formed XML

http://htmlcleaner.sourceforge.net/

HTML

JaCoCo

Java Code Coverage library, Developed by EclEmma devs.

http://eclemma.org/jacoco/

Static

Jamit

Java Access Modifier Inference Tool. Examines Java class files to infer tighter access modifiers.

http://grothoff.org/christian/xtc/jamit/

Static

Java Pathfinder

The original Model Tester for Java; has own JVM written in Java.

http://babelfish.arc.nasa.gov/trac/jpf/#WelcometotheJPFWiki

Model

jcabi

Uses REST API to access W3 validator; depends on JAX-RS and Jersey

http://w3c.jcabi.com/

HTML

JCov

Used in checking the JDK; now part of OpenJDK project.

https://wiki.openjdk.java.net/display/CodeTools/jcov

Coverage

JCSC

Java Coding Standard Checker

http://jcsc.sourceforge.net/

Static

jdeps

Cmd Line Tool included w/ JDK 1.8+

https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool

Static

JIRA Mobile Connect

Commercial, cross-language crash reporting

https://marketplace.atlassian.com/plugins/com.atlassian.jconnect.jconnect-plugin

Crash

Jlint

http://jlint.sourceforge.net/

Static

JMeter

http://jmeter.apache.org/

Load

JMock

http://www.jmock.org/

Mocking

JMockit

http://jmockit.org/

Mocking

JStyle

Commercial. May be defunct; web site says "JDK1.0-1.4".

http://www.mmsindia.com/jstyle.html

JTidy

HTML syntax checker and pretty printer.

http://jtidy.sourceforge.net/

HTML

JUnit

One of the oldest and most used; the mother of all xUnit packages

http://junit.org/

Dynamic

JWalk

Free for individual use; source code not available.

http://staffwww.dcs.shef.ac.uk/people/A.Simons/jwalk/

Dynamic

JWebUnit

High-level Java API that wraps HtmlUnit and Selenium

http://jwebunit.github.io/jwebunit/

HTML

JWiz

University project, active development ended in 1998. Don’t confuse with BertrandDupraz' 'JWiz' which aims to become a Wizard Generator.

http://csdl.ics.hawaii.edu/research/jwiz/

Static

Maveryx

Commercial; free vers available; serves Java and Android.

http://www.maveryx.com/

Dynamic

MaxQ

Recording proxy, lets you ensure that website still works, or script interactions.

http://maxq.tigris.org/

Web

Mockito

One of the oldest Mock Objects projects.

http://mockito.org/

Mocking

Nu Html Checker V.nu

Code behind html5.validator.nu, validator.w3.org/nu, and the HTML5 support of the legacy W3C Validator. Needs Python and Java to build from src.

http://validator.github.io/validator/

HTML

pageunit

Easy script-based web testing

http://darwinsys.com/pageunit/

Web

Parasoft JTest

https://www.parasoft.com/product/jtest/

PMD

Support multiple programming langs. Includes CPD (Copy-n-Paste Detector)

https://pmd.github.io/

Static

PowerMock

http://powermock.org

Mocking

Raygun

Crash reporting for deployed applications.

https://raygun.io/docs/languages/java

Crash

SamePlugin

IntelliJ plugin only

https://plugins.jetbrains.com/plugin/21

DuplicateDetector

scalatest

http://www.scalatest.org/

SDD

Eclipse-only plugin for dupe detection

https://wiki.eclipse.org/Duplicated_code_detection_tool_%28SDD%29

DuplicateDetector

SeLion

"SeLion helps scale your Selenium based testing efforts by offering a set of enhanced capabilities and incorporating best practices recommended by the Selenium community."

http://paypal.github.io/SeLion/

Dynamic

Sentry

Commercial, cross-language crash reporting

https://getsentry.com/welcome/

Crash

Serenity

Hudson/Jenkins-only plugin for test coverage

https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin

Coverage

Simian

SIMIlarity ANalyser, similar to PMD’s CPD.

http://www.harukizaemon.com/simian/

DuplicateDetector

SimScan

Defunct

http://blue-edge.bg/simscan

DuplicateDetector

Solex

Eclipse plugin for web testing

http://solex.sourceforge.net/

Web

Spin

Model analysys of C (not Java!) code, but, has useful free course on logic model checking

http://spinroot.com/spin/

Model

Splunk Mint

Commercial, cross-platform crash reporting

http://www.splunk.com/en_us/products/splunk-mint.html

Crash

Spock

A higher level than JUnit, also for BDD etc. Written in Groovy

http://spockframework.org/

Dynamic

SpotBugs

Follow-on to FindBugs

httsp://spotbugs/org/

Static

TagSoup

Hopes to handle even the most egregious violations of HTML syntax.

http://mercury.ccil.org/~cowan/XML/tagsoup/

HTML

TeamScale

https://www.cqse.eu/en/products/teamscale/landing/

Static

Test Butler

Helps testing Android apps

TestNG

Aimed to supplant JUnit but largely supplanted by it

http://testng.org/

Dynamic

verifydesign

Verifies API conformance. Alas, tightly bound to the Ant API

http://ant-contrib.sourceforge.net/tasks/tasks/verifydesign.html

Static

Verisoft

No longer seem to do Java coder verification

http://verisoft.com/