The Source for Java Technology Collaboration


Home | Help | Changes | Index | Search | Go

CodeAnalysisApps

Applications, which analyze source code and provide some usefull information for developer (manager): from detecting code defects to formal verification wink The techniques usually use static analysis of code to detect the areas that smell bad.

Detecting of code defects: (PIMR,JavaChecker,FindBugs,CheckStyle)

  • Structure101 lets you manage and measure your architecture and its complexity using advanced Dependency Analysis and visualization.
  • YourKit Java Profiler
  • GCViewer is a free open source tool to visualize data produced by the Java VM options -verbose:gc and -Xloggc:. It also calculates garbage collection related performance metrics (throughput, accumulated pauses, longest pause, etc.). This can be very useful when tuning the garbage collection of a particular application by changing generation sizes or setting the initial heap size.
  • JDepend finds complex code largely based on finding dependencies between packages. Blog posting by robogeek
  • CodePro AnalytiX a commercial toolset from Instantiations providing code analysis, software metrics, JUnit test generation and editing, static analysis, dependency exploration, etc.
  • findbugs excellent tool that analyzes class files at bytecode level to find bug-like patterns
  • QJ-Pro Code Analyzer for Java: a comprehensive software inspection tool targeted towards the software developer. 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.
  • PMD scans Java source code and looks for potential problems.
  • JLint check your Java code and find bugs, inconsistencies and synchronization problems by doing data flow analysis and building the lock graph.
  • Hammurapi 5 is a componentry for automated code reviews. It allows you to establish code governance processes in your organization by injecting automated code review "hooks" into development and build processes. In a nutshell, you need Hammurapi 5 if you are responsible for tons of code written by somebody else.
  • DoctorJ Beyond the level of what Javadoc does, DoctorJ? compares documentation against code.
  • Condenser 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.
  • JCSC 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.
  • Dependency Finder 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.
  • CheckStyle 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.
  • JDiff a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared. This is very useful for describing exactly what has changed between two releases of a product. Only the API (Application Programming Interface) of each version is compared. It does not compare what the source code does when executed.
  • Classycle Classycle's 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's 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.
  • Byecycle the requisite dependency viewer for Eclipse.
  • PathFinder (JPF) is a system to verify executable Java bytecode programs. In its basic form, it is a Java Virtual Machine (JVM) that is used as an explicit state software model checker, systematically exploring all potential execution paths of a program to find violations of properties like deadlocks or unhandled exceptions. Unlike traditional debuggers, JPF reports the entire execution path that leads to a defect. JPF is especially well-suited to finding hard-to-test concurrency defects in multithreaded programs.
  • XRadar an open extensible code report tool currently supporting all Java based systems. The batch-processing framework produces HTML/SVG reports of the systems current state and the development over time - all presented in sexy tables and graphs. It gets results from several brilliant open source projects and a couple of in house grown projects and presents the results as massive unified html/svg reports. The architecture is based on java, xml and xsl. Presently it only supports Java, but there are plans to produce plug ins for other leading languages.
  • Macker a build-time architectural rule checking utility for Java developers. It's meant to model the architectural ideals programmers always dream up for their projects, and then break -- it helps keep code clean and consistent. You can tailor a rules file to suit a specific project's structure, or write some general "good practice" rules for your code. Macker doesn't try to shove anybody else's rules down your throat; it's flexible, and writing a rules file is part of the development process for each unique project.
  • Clirr a tool that checks Java libraries for binary and source compatibility with older releases. Basically you give it two sets of jar files and Clirr dumps out a list of changes in the public api. The Clirr Ant task can be configured to break the build if it detects incompatible api changes. In a continuous integration process Clirr can automatically prevent accidental introduction of binary or source compatibility problems.
  • JarAnalyzer a dependency management utility for jar files. It's primary purpose is to traverse through a directory, parse each of the jar files in that directory, and identify the dependencies between the jar files. The output is an xml file representing the PhysicalDependencies? between the jar files.
  • Spoon is a Java program processor that fully supports Java 5 and 6. It provides a complete and fine-grained Java metamodel where any program element (classes, methods, fields, statements, expressions...) can be accessed both for reading and modification. Spoon provides an Eclipse plugin (SpoonJDT?) that allows for tight integration of Spoon within the Eclipse environment. With SpoonJDT?, a set of validations and transformations packaged as a Spoonlet can occur on the fly and the reports are well-integrated into the Eclipse JDT.
  • JavaNCSS is a simple command line utility which measures two standard source code metrics for the Java programming language. The metrics are collected globally, for each class and/or for each function.
  • JavaChecker static analyzer of java source code with possibility to so semantics checks, such as tracking open/close calls.
  • XDepend analyzes your jars dependencies and code structure and presents the results in a powerful interface featuring treemaps, graphs and matrices. This software also features a Code Query Language which allows for live querying and visualization of specific parts of your code based on more than 80 metrics. Other features included are build comparisons, code coverage visualization and direct link to source files.

Back to Testing

Also refer to java-source.net / code-analyzers


Discussion about CodeAnalysisApps

Improving Software Quality with Static Analysis Slides from Bill Pugh's Java One 2007 session

Topic CodeAnalysisApps . { Edit | Ref-By | Printable | Diffs r10 < r9 < r8 < r7 < r6 | More }
 XML java.net RSS

Revision r10 - 06 Feb 2009 - 10:08:37 - Main.isc
Parents: Applications