Page 279 - 《软件学报》2026年第5期
P. 279
2158 软件学报 2026 年第 37 卷第 5 期
图 2 提交变更分解提示
图 3 变更摘要生成提示
● 评估消息生成. (1) 任务背景: 明确了为子提交生成评估消息的任务. (2) 格式规约: 规定了输出为一段子提
交日志. (3) 输入信息: 将之前得到的子提交及其包含的代码变更块作为输入. 其 Prompt 模板见图 4.
图 4 评估消息生成提示
● 评估消息反馈. (1) 任务背景: 根据生成的消息进行评估和反馈, 判断是否存在包含多个开发任务的提交日
志需要进一步拆分, 或是否具有相似的提交日志需要进行合并. (2) 格式规约: 输入评估消息, 输出判定的结果正确
或错误, 如果错误, 输出新的子提交拆分结果. (3) 输入信息: 将所有子提交生成的评估消息作为输入. 其 Prompt 模
板见图 5.
图 5 评估消息反馈提示
在代码拆解流程中, DISAC 最终的输出为一个由独立开发活动构成的提交集合 C = {c 1 ,c 2 ,...,c n }, 其中每个子
提交 c i ∈ C 代表一个独立的开发活动, 由多个代码变更片段构成 c i = {h m ,h n ,...,h k }. 此外, 还得到了子提交之间的依
{( )
c i 和c j 之间
赖关系集合 D = c i ,c j c i ,c j ∈ C ∧c i 7→ c j }, 如果 (∃h x ∈ c i ,∃h y ∈ c j )∧h x 7→ h y , 则 c i 7→ c j , 其中 c i 7→ c j 表示
存在顺序依赖关系, 即 c i 必须在 c j 之后提交.
特别地, 为确保后续缺陷隔离的正确进行, 我们对依赖关系中可能存在的环路进行了处理. 如果 (∃h x ,h z ∈ c i ,
∃h y ,h w ∈ c j )∧h x 7→ h y ∧h w 7→ h z , 则合并 、 c j 为 . 具体而言, 若存在两个或以上的子提交, 满足其中的变更块之
c i
c i j
间存在互为依赖的关系, DISAC 会将它们合并为一个新的子提交.
2.4 缺陷变更隔离
2.4.1 构建提交序列
{( )
∀c i 7→ c j 表示
根据大模型拆解的结果 C = {c 1 ,c 2 ,...,c n } 以及依赖关系集合 D = c i ,c j c i ,c j ∈ C ∧c i 7→ c j }, 其中

