wala/WALA

GitHub: wala/WALA

IBM 开源的静态程序分析框架,为 Java 字节码和 JavaScript 提供类型分析、指针分析、数据流分析和程序切片等核心分析能力。

Stars: 843 | Forks: 241

# WALA ![WALA logo](https://wala.github.io/logos/WALA-banner.png) [![GitHub Actions 状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6e4fcc4010210745.svg)](https://github.com/wala/WALA/actions?query=workflow%3A%22Continuous+integration%22) [![加入 https://gitter.im/WALAHelp/Lobby 的聊天](https://badges.gitter.im/WALAHelp/Lobby.svg)](https://gitter.im/WALAHelp/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) T. J. Watson Libraries for Analysis (WALA) 为 Java 字节码及相关语言以及 JavaScript 提供静态分析功能。该系统基于 [Eclipse Public License](http://www.eclipse.org/legal/epl-v10.html) 授权,该许可证已被 [OSI](http://www.opensource.org/) (Open Source Initiative) 批准为完全认证的开源许可证。最初的 WALA 基础架构是作为 [IBM T.J. Watson Research Center](http://www.research.ibm.com/) DOMO 研究项目的一部分独立开发的。2006 年,[IBM](http://www.ibm.com/us/) 将该软件捐赠给了社区。 有关 WALA 的最新动态,请加入[邮件列表](http://sourceforge.net/p/wala/mailman/)。 ## WALA 核心功能 WALA 的功能包括: * Java 类型系统和类层次结构分析 * 支持 Java 和 JavaScript 的源语言框架 * 过程间数据流分析 ([RHS](http://www.cs.wisc.edu/~reps/#popl95) 求解器) * 上下文敏感的基于表格的切片器 * 指针分析和调用图构建 * 基于 SSA 的寄存器传输语言 IR * 通用迭代数据流框架 * 通用分析实用程序和数据结构 * 字节码插桩库 ([Shrike](https://github.com/wala/WALA/wiki/Shrike)) ## 入门指南 开始使用 WALA 最快的方法是[使用 Maven Central 中的包](https://github.com/wala/WALA/wiki/Getting-Started#quick-start-using-maven-central-packages)。 有关基于 Gradle 的示例,请参见 [WALA-start](https://github.com/wala/WALA-start) 仓库。我们正在积极重组更深入的 wiki 技术文档。在此期间,您可以查看教程幻灯片以获取 WALA 的概述: * [Core WALA](https://wala.github.io/tutorials/PLDI_WALA_Tutorial.pdf) (PDF) * [WALA JavaScript](https://wala.github.io/tutorials/WALAJavaScriptTutorial.pdf) (PDF) 您还可以[观看 WALA JavaScript 教程的截屏视频](https://www.youtube.com/user/WALALibraries/videos)。 最后,目前要在 wiki 文档中进行搜索,我们建议在 GitHub 上进行站点特定搜索,例如,[搜索 "call graph"](https://github.com/wala/WALA/search?q=call+graph&type=wikis)。 ## 文档 我们在 [GitHub wiki](https://github.com/wala/WALA/wiki) 上托管 WALA 的文档。**我们选择 wiki 格式正是为了让*您*能够参与贡献。** 不要害羞! WALA 出版部门正按需在该 wiki 中填充技术文档,这主要基于发布在 [wala-wala](http://sourceforge.net/p/wala/mailman/) 邮件列表和 [Gitter](https://gitter.im/WALAHelp/Lobby) 上的问题。我们推荐[此页面](https://groups.google.com/forum/#!forum/wala-sourceforge-net)用于搜索邮件列表存档。 目前,我们会持续更新 [WALA 代码的 JavaDoc 文档](https://wala.github.io/javadoc)。如果您认为某个特定文件值得拥有更好的 javadoc,请[提交功能请求](https://github.com/wala/WALA/issues)。 ## 获取帮助 要获取有关 WALA 的帮助,请[发送电子邮件至邮件列表](http://sourceforge.net/p/wala/mailman/)、[在 Gitter 上提问](https://gitter.im/WALAHelp/Lobby),或者[提交一个 Issue](https://github.com/wala/WALA/issues)。 ## 所需 Java 版本 每个 [WALA 官方发布版](https://github.com/wala/WALA/releases) 的大多数组件均构建为适用于 Java 11 或更高版本。但是,使用 Eclipse 的组件至少需要 Java 17。 ## 从源码构建 WALA 使用 Gradle 作为其构建系统。如果您打算自己修改或构建 WALA,请参阅 [Gradle 相关的 README](README-Gradle.md) 以获取更多说明和有用的提示。 ## JavaScript 中的 WALA 工具 最近,我们一直在扩展用 JavaScript 实现的 WALA 工具集。我们在 [JS_WALA GitHub 仓库](https://github.com/wala/JS_WALA) 中发布了 JavaScript 的规范化器和一些基本的程序分析工具。我们还提供了 [jsdelta](https://github.com/wala/jsdelta) 和 [WALA Delta](https://github.com/wala/WALADelta),它们是用于 JavaScript 处理工具的 Delta Debugger。有关这些工具的更多详细信息,请参阅链接的 GitHub 仓库。 ## 基于 WALA 的工具 一些团队已经构建了增强或基于 WALA 的开源工具,这些工具可能对其他 WALA 用户有用。有关详细信息,请参阅 [Wala-based tools](https://github.com/wala/WALA/wiki/WALA-Based-Tools) 页面。 ## 致谢 ![YourKit logo](https://www.yourkit.com/images/yklogo.png) 我们感谢 [YourKit](https://www.yourkit.com) 为 WALA 开发人员提供了其出色的 [Java profiler](https://www.yourkit.com/java/profiler/) 的免费许可证,我们使用它来改进和维护 WALA 的性能。
标签:Android, CMS安全, DSL, IBM, JavaScript, JS文件枚举, Maven, SSA, WALA, 代码切片, 可配置连接, 后台面板检测, 域名枚举, 开源, 指针分析, 数据可视化, 数据结构, 漏洞验证, 程序分析, 类层次分析, 编译器, 调用图构建, 错误基检测, 静态代码分析