|
Over the last few years, HRL has developed an infrastructure for static analysis of Java bytecode. The motivation is to support program understanding, code evaluation, testing, reviewing, and re-engineering of Java programs. The infrastructure includes the development of analysis techniques and the production of certain tools that exploit these techniques. The development code base consists of a set of libraries, from CFParse for parsing and editing a single classfile, to JAN for analyzing a whole Java component and focusing on global representations, such as the hierarchy graph, reference graph, and call graph. Other libraries support generic data-flow engines and extraction of effect information. Certain tools/packages were implemented upon this set of libraries, including:
- Unreachable Code Remover, reduces the size of packages by removing unreachable classes and methods.
- Toad, an umbrella framework for a set of core libraries and tools that monitor, understand, and optimize Java applications. For more information, see Toad's project page.
- JAMA, Java Mutability Analyzer, detects immutable fields and classes.
- Struts Checker, collects information about Java bytecode in Struts-based projects.
- JavaDoc Enhancer, enhances the JavaDoc documentation with semantic information retrieved by analyzing the corresponding bytecode.
|