Page 165 - 《软件学报》2025年第7期
P. 165

3086                                                       软件学报  2025  年第  36  卷第  7  期


                    12) 类别  2.5 模块间库冲突 (如算法     A12  所示)

                 算法  A12. 模块间库冲突.

                 输入: BI: 基本信息;
                 输出: JS: 各模块间出现版本冲突的依赖库集合.
                 1. JS ⇐ {};
                 2. moduleDirectDepsVers ⇐ {}
                 3. for module ∈ BI.modules do
                 4.  for dep ∈ resolveDepFile(module.depFile) do
                 5.   moduleDirectDepsVers[dep.depName].insert(dep.depVer)
                 6.  end for
                 7. end for
                 8. for conflictDep ∈ moduleDirectDepsCnt.keys do
                 9.  if moduleDirectDepsVers[conlictDep].size() > 1 then
                 10.   JS.add(conflictDep)
                 11.  end if
                 12. end for

                    该算法接受基本信息        BI 作为输入, 并输出各模块间出现版本冲突的依赖库集合                 JS. 算法的工作流程如下: 首
                 先, 初始化集合    JS  用于存储发生版本冲突的依赖库          (第  1 行). 接下来, 创建一个字典     moduleDirectDepsVers 用于
                 记录每个依赖库在各模块中的版本信息              (第  2 行). 算法遍历多模块项目中的每个模块           (第  3 行), 并对每个模块的
                 依赖文件调用     resolveDepFile 函数以解析其依赖    (第  4 行). 对于每个解析到的依赖      dep, 算法将其版本    dep.depVer
                 插入到字典    moduleDirectDepsVers 中, 使用依赖名称   dep.depName 作为键  (第  5 行). 完成模块遍历后, 算法遍历
                 moduleDirectDepsVers 字典中的每个依赖    conflictDep (第  8 行), 并检查该依赖的版本集合大小是否大于          1 (第  9
                 行). 如果条件满足, 算法将该依赖        conflictDep  添加至集合  JS 中  (第  10 行).


                             孙伟杰(2001-), 男, 博士生, CCF  学生会员, 主             王莹(1987-), 女, 博士, 副教授, 博士生导师,
                            要研究领域为开源治理技术.                                CCF  专业会员, 主要研究领域为开源治理技术,
                                                                         软件测试及分析学.



                             许畅(1977-), 男, 博士, 教授, 博士生导师, CCF
                            高级会员, 主要研究领域为大数据软件工程, 智
                            能软件测试与分析, 自适应和自控软件系统.
   160   161   162   163   164   165   166   167   168   169   170