# 软件分析2024 课程项目1

## 提供的内容

`Tai-e` 目录是一个示例指针分析算法，基于太阿框架在 `Tai-e/src/main/java/pku` 目录下实现了 Trivial（输出全集）的指针分析。你需要实现一个完整的指针分析。我们保证对于所有测试用例，提供的 Trivial 实现都能输出 Sound 的结果，不会超时或崩溃。

`judge` 目录是评测机源码，可用于在本地测试自己的作业。`judge/global/tests` 下提供了6个公开的测试样例，对这6个样例给出精确的结果即可获得 60 分。

## 课程项目任务

请实现一个指针分析算法。如果你选择基于太阿实现，请参考之前课上的演示，生成一个完整（无依赖）的 JAR 包，把分析结果输出到 `result.txt`。

你也可以选择基于其他的框架实现，此时请把所有文件打包成 ZIP，其中包括一个 `run.sh` 脚本用来运行你的指针分析算法。详见网站说明（见微信群/教学网通知）和评测机源码。

除了提供的两个公开测试用例之外，你可以在 https://github.com/secure-software-engineering/PointerBench/ 找到更多的测试用例。它们未必能代表评测实际使用的用例，但也可以帮助测试自己的算法。

另外请写一份不超过两页的报告，描述算法的主要设计思想和小组内分工。

每个组还可以贡献一个测试用例，用来凸显本组算法的亮点，详见网站说明。

## 提交方式

- **指针分析工具（.jar 或 .zip）：**请用自己小组的密码登录网站 ，点击【提交作业】，并在线评测。出现在排行榜上即表示提交成功。
- **测试用例：**请登录网站，点击【贡献测试用例】，并在线评测。出现在排行榜上即表示提交成功。
- **代码和报告：**将代码和报告打包发送到课程邮箱，标题为 “Lab1-” 加组长学号，（如 `Lab1-2200098765`）。
