《程序静态分析》 - 南京大学 李樾、谭添
课后作业
<aside> ⚠️ 本文只简单记录作业求解的过程中有趣的地方,以及一些结果代码。不会针对 Tai-e 代码结构和特点进行详细分析。
</aside>
git clone [<https://github.com/pascal-lab/Tai-e-assignments>](<https://github.com/pascal-lab/Tai-e-assignments>)
build.gradle.kts
,gradlew
,gradlew.bat
,gradle/
:Gradle 脚本和 Tai-e 项目配置文件。src/main/java
:Tai-e 源代码文件夹。你需要修改该文件夹中的文件以完成作业。src/test/java
:运行测试用例所需的测试驱动程序(test drivers)所在文件夹。src/test/resources
:测试用例(待分析的程序)文件夹。lib/
:包含 Tai-e 类的文件夹。plan.yml
:Tai-e 配置文件,设定了作业中需要执行的分析。COPYING
, COPYING.LESSER
:Tai-e 许可文件。官方教程推荐使用 IntelliJ IDEA 来完成实验,限于我没有 Java 开发经验,且在 VScode 调试基于 Gradle 构建的 Java 代码同样方便。在此仅基于 ubuntu + VSCode 搭建调试环境。
自行安装 Java 17 和 Gradle 7.4+
进入各个 Assignment 文件夹后,基于命令行的 Gradle 构建命令:
安装 Gradle 后的命令行工具是 gradle,下述命令 gradlew 是 Gradle Wrapper,似乎作用是自动下载指定版本的 Gradle,确保所有用户使用相同版本。gradlew 在各个文件夹根目录,是一个 shell 脚本。
./gradlew compileJava
./gradlew run --args="-cp <CLASS_PATH> -m <CLASS_NAME>"
./gradlew clean test
安装 Gradle for Java
VSCode 扩展
安装扩展后即可通过 Gradle Tab 下的 Tasks/application/run
来调试 Assignment.main
,通过 Tasks/verification/test
来调试样例。
算法详见课程