For recent updates on WALA, join the mailing list.
WALA features include:
- Java type system and class hierarchy analysis
- Interprocedural dataflow analysis (RHS solver)
- Context-sensitive tabulation-based slicer
- Pointer analysis and call graph construction
- SSA-based register-transfer language IR
- General framework for iterative dataflow
- General analysis utilities and data structures
- A bytecode instrumentation library (Shrike)
The fastest way to get started with WALA is to use the packages in Maven Central, as noted here. See the WALA-start repo for a Gradle-based example. We are actively re-organizing the deeper wiki technical documentation. In the meantime, you can check out tutorial slides to get an overview of WALA:
Finally, for now, to search the wiki documentation, we recommend a site-specific search on Google, e.g., a search for "call graph".
We're hosting documentation for WALA on the GitHub wiki. We've chosen a wiki format just so that you can contribute. Don't be shy!
The WALA publications department is populating this wiki with technical documentation on a demand-driven basis, driven by questions posted to the wala-wala mailing list and also Gitter. We recommend this page for searching the mailing list archives.
Building from Source
WALA uses Gradle as its build system. If you intend to modify or build WALA yourself, then see the Gradle-specific README for more instructions and helpful tips. You may also find
pom.xml configuration files for Maven builds, but Maven is no longer well supported; use Gradle if at all possible.
Several groups have built open-source tools that enhance or build on WALA that may be useful to other WALA users. For details, see the Wala-based tools page.