A comprehensive static analysis library for Java bytecode and JavaScript, supporting interprocedural dataflow, pointer analysis, and call graph construction.
WALA is a comprehensive static analysis framework that enables deep inspection of Java bytecode and JavaScript programs without executing them. It provides a suite of analyses including pointer analysis, call graph construction, and dataflow analysis to help developers understand, verify, and optimize code. Originally developed at IBM Research, it serves as a foundational tool for building custom program analysis tools and conducting research.
Researchers, tool developers, and software engineers who need to build custom static analysis tools for Java or JavaScript, or who require advanced program understanding capabilities beyond standard linters.
WALA offers a mature, modular, and extensible codebase with proven algorithms for complex analyses like context-sensitive slicing and interprocedural dataflow. Its support for both Java and JavaScript in a unified framework makes it uniquely versatile for cross-language analysis projects.
T.J. Watson Libraries for Analysis, with front ends for Java, Android, and JavaScript, and many common static program analyses.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
WALA provides precise modeling of Java's type system and class hierarchy, as highlighted in the Core Features, enabling reliable analysis of complex Java applications.
It supports both Java and JavaScript in a single framework, allowing for cross-language static analysis, which is versatile for tool developers and researchers.
Powered by the RHS solver, WALA offers context-sensitive dataflow analysis and slicing, essential for understanding program dependencies across procedures without execution.
The philosophy emphasizes a modular design that separates core algorithms from language frontends, making it easy to extend for custom analyses and tooling.
Building from source requires Gradle and specific Java versions (Java 11 or newer, with some components needing Java 17), which can be a barrier for quick adoption and integration.
Documentation is hosted on a wiki and updated on a demand-driven basis, leading to potential gaps and difficulty in finding comprehensive guides, as mentioned in the README.
WALA only supports Java and JavaScript, so it's not suitable for projects needing analysis of other programming languages without significant extension or custom work.