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 }, 其中
   274   275   276   277   278   279   280   281   282   283   284