- Byecycle is an auto-arranging dependency analysis plugin for Eclipse. Its goal is to make you feel sick when you see bad code and to make you feel happy when you see good code.
- Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard.
Checkstyle is highly configurable and can be made to support almost any coding standard. An example configuration file is supplied supporting the Sun Code Conventions. As well, other sample configuration files are supplied for other well known conventions.
- Classycle Analyser analyses the static class and package dependencies in Java applications or libraries. It is especially helpful for finding cyclic dependencies between classes or packages. Classycle is similar to JDepend which does also a dependency analysis but only on the package level.
Classycle Dependency Checker searchs for unwanted class dependencies described in a dependency definition file. Dependency checking helps to monitor whether certain architectural constrains (e.g. in a layered architecture) are fulfilled or not.
- Condenser is a tool for finding and removing duplicated Java code. Unlike tools that only locate duplicated code, the aim of Condenser is to also automatically remove duplicated code where it is safe to do so.
- Dependency Finder is a suite of tools for analyzing compiled Java code. At the core is a powerful dependency analysis application that extracts dependency graphs and mines them for useful information. This application comes in many forms for your ease of use, including command-line tools, a Swing-based application, a web application ready to be deployed in an application server, and a set of Ant tasks.
JarJarDiff is another important tool in the suite. It compares two versions of the same codebase and reports the differences in the API. It lists new, changed, and removed elements such as packages, classes, methods, and more. You can tailor the reports to focus on your public, published API versus the private, internal one.
Finally, Dependency Finder has a tool for computing object-oriented software metrics that give you an empirical quality assessment of your code. Once again, you can tailor the report to focus on the metrics that you care about and adjust validity thresholds to the specifics of your project.
- Beyond the level of what Javadoc does, DoctorJ compares documentation against code. Among what it detects:
parameter and exception names:
missing expected arguments
undocumented classes, methods, fields, parameters
- This is the web page for FindBugs, a program which looks for bugs in Java code. It is free software, distributed under the terms of the Lesser GNU Public License.
FindBugs requires JRE (or JDK) 1.4.0 or later to run. However, it can analyze programs compiled for any version of Java.
The current version of FindBugs is 0.9.1, released on June 15, 2005.
FindBugs is beta quality software. You may find bugs in it, and the features and source code may change significantly in future releases.
- Hammurapi is an Open Source Java code review tool. It has more than 120 embedded Inspectors and such unique features as waivers, autowaivers and cascading rulesets.
- JCSC is a powerful tool to check source code against a highly definable coding standard and potential bad code.
The standard covers naming conventions for class, interfaces, fields, parameter, ... . Also the structural layout of the type (class/interface) can be defined. Like where to place fields, either before or after the methods and in which order. The order can be defined through the visibility or by type (instance, class, constant). The same is applicable for methods. Each of those rules is highly customizable. Readability is enhanced by defining where to put white spaces in the code and when to use braces. The existence of correct JavaDoc can be enforced and various levels. Apart from that, it finds weaknesses in the the code -- potential bugs -- like empty catch/finally block, switch without default, throwing of type Exception, slow code, ... . JCSC is inspired by lint.
- JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.
Before using JDepend, it is important to understand that good design quality metrics are not necessarily indicative of good designs. Likewise, bad design quality metrics are not necessarily indicative of bad designs. The design quality metrics produced by JDepend should not be used as yard sticks by which all designs are measured.
- Jlint will check your Java code and find bugs, inconsistencies and synchronization problems by doing data flow analysis and building the lock graph.
Jlint is extremely fast - even on large projects, it requires only one second to check all classes! It is easy to learn and requires no changes in the class files.
- PMD scans Java source code and looks for potential problems like:
Empty try/catch/finally/switch blocks
Unused local variables, parameters and private methods
Empty if/while statements
Overcomplicated expressions - unnecessary if statements, for loops that could be while loops
Classes with high Cyclomatic Complexity measurements
You can get an overview of all the rules at the Rulesets Index page.
- QJ-Pro is a comprehensive software inspection tool targeted towards the software developer. Read the PDF brochure and concepts for an understanding of what the product does.
Developers can automatically inspect their Java source code and improve their Java programming skills as they write their programs. QJ-Pro provides descriptive Java patterns explaining error prone code constructs and providing solutions for it