本项目针对 PostgreSQL 数据库管理系统的 master 分支(2022–2025 年间的提交历史),开展系统的 Bug 修复行为分析与形式化验证研究。通过结合静态分析、动态跟踪与形式化建模方法,深入挖掘 PostgreSQL 开发过程中的 Bug 修复规律、代码结构演化特征及其背后的逻辑约束。
- 提交行为分析:定量统计 PostgreSQL 主分支的历史提交行为与演化趋势。
- Bug 修复识别:识别并分析 Bug 修复提交的时间、模块、作者及模式特征。
- Bug 与修复关联分析:探究 Bug 报告(commit message / issue 引用)与代码修改之间的关联规律。
- 代码结构分析:使用 AST / libcst 对典型 Bug 修复进行静态结构分析。
- 形式化验证:尝试使用 z3-solver 对部分 Bug 模式进行形式化建模与一致性验证。
Git 提交历史
├── 提交元数据分析(时间 / 作者 / 模块 / 频率)
├── Bug 修复提交识别(关键词 / issue / patch 特征)
├── 静态代码分析(AST / libcst)
├── 动态分析(pysnooper)
└── 形式化建模(z3-solver)
| 工具 | 用途 | 适用场景 |
|---|---|---|
| AST / libcst | 静态结构演化分析 | 分析修复前后的控制流、条件表达式、指针检查等 |
| pysnooper | 动态执行轨迹分析 | 跟踪 Python 工具脚本中的变量变化,对比修复前后行为 |
| z3-solver | 形式化建模与验证 | 对边界条件、状态一致性等 Bug 进行逻辑约束建模 |
- 提交频率(年/月/周)
- 作者贡献度(Top N 贡献者)
- 模块活跃度(backend / optimizer / storage 等)
- 提交规模(LOC 增删)
- Bug 修复比例
- Bug 集中模块
- 提交信息关键词分布
- 修复复杂度(修改文件数 / LOC)
- 条件语句数量变化
- 防御式编程增强
- 错误处理路径增加
- 职责:克隆仓库、提取提交数据、基础统计与可视化
- 工具:Git、Python(pandas / matplotlib)、shell 脚本
- 职责:定义识别规则、标注 Bug 提交、分析修复规律
- 工具:Python(正则 / NLP)、pandas
- 职责:选取典型 Bug 修复、进行 AST / libcst 结构分析
- 工具:Python
ast、libcst、自定义 AST visitor
- 职责:选择 Python 工具脚本 Bug、跟踪执行路径、对比修复前后行为
- 工具:pysnooper、Python 调试技术
- 职责:抽象 Bug 为逻辑模型、使用 Z3 验证修复有效性、撰写报告
- 工具:z3-solver、LaTeX / Word
- 完整的 PostgreSQL Bug 修复行为分析报告
- 结构化的提交与 Bug 数据集
- 静态与动态分析案例集
- 形式化验证模型与结果
- 可复现的实验脚本与工具链
- 所有脚本、数据与报告均需统一归档至项目仓库。
- 建议使用 Python 3.8+ 环境,并安装相关依赖:
pip install pandas matplotlib libcst pysnooper z3-solver