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

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


                 接依赖库及其版本       (第  1  行). 接着, 调用  resolveDepFile 函数解析其他工具的依赖文件, 并将结果存储在哈希表
                 otherToolMap  中  (第  2  行). 然后, 算法遍历依赖树  DT  中深度为  1  的直接依赖库  dep (第  3  行), 并将每个直接依赖
                 库的名称   dep.depName 和版本  dep.depVer 添加到哈希表   currentToolMap  中  (第  4  行). 完成依赖树的遍历后, 算法
                 通过调用    difference 函数计算当前工具与其他工具之间的差异, 并将结果赋值给不一致的直接依赖库集合                          JS (第
                 6  行). 最后, 算法结束, 返回  Maven  和  Gradle 下的不一致依赖库.
                    8) 类别  2.1  构建工具配置缺失 (如算法     A8  所示)

                 算法 A8. 构建工具配置缺失检测.

                 输入: BI: 基本信息;
                 输出: MC: 项目是否缺失构建工具配置.
                 1. buildToolConfigs ⇐ parseConfigFile(BI.builtToolConfigPath)
                 2. MC ⇐ buildToolConfig.empty()

                    算法接受基本信息       BI 作为输入, 并输出项目是否缺失构建工具配置的标志                 MC. 算法的工作流程如下: 首先,
                 调用  parseConfigFile 函数解析构建工具配置文件, 获取配置结果并存储在              buildToolConfigs 中  (第  1  行). 接着, 算
                 法通过检查    buildToolConfigs 是否为空来确定项目是否缺失构建工具配置, 并将结果赋值给标志                   MC (第  2  行). 最
                 后, 算法结束, 返回项目缺失构建工具配置的状态.
                    9) 类别  2.2 构建工具启动器    JAR  缺失 (如算法  A9  所示)

                 算法 A9. 构建工具封装器      JAR  缺失检测.

                 输入: BI: 基本信息;
                 输出: MJ: 项目是否缺失构建工具封装器          JAR.
                 1. buildToolConfigs ⇐ parseConfigFile(BI.builtToolConfigPath)
                 2. wrapperJAROnline ⇐ buildToolConfigs[‘onlineWrapperJAR’].empty()
                 3. wrapperJAROffline ⇐ BI.defaultWrapperJAR.exist()
                 4. MJ ⇐ wrapperJAROnline or wrapperJAROffline

                    该算法接受基本信息        BI 作为输入, 并输出项目是否缺失构建工具封装器               JAR  的标志  MJ. 算法的工作流程如
                 下: 首先, 调用  parseConfigFile 函数解析构建工具配置文件, 并将结果存储在            buildToolConfigs 中  (第  1  行). 接着,
                 算法检查在配置文件是否指定了在线下载封装器                 JAR  是否为空, 并将结果赋值给布尔变量          wrapperJAROnline (第
                 2  行). 随后, 算法检查默认本地封装器       JAR  是否存在, 并将结果存储在布尔变量          wrapperJAROffline 中  (第  3  行). 最
                 后, 算法通过逻辑或运算将两个布尔值结合, 确定项目是否缺失构建工具封装器                           JAR, 并将结果赋值给标志       MJ
                 (第  4  行).
                    10) 类别  2.3  构建工具启动器   JAR  异常 (如算法  A10  所示)

                 算法 A10. 构建工具封装器      JAR  异常检测.

                 输入: BI: 基本信息;
                 输出: AC: 项目构建工具封装器是否与构建工具版本一致.
                 1. buildToolConfigs ⇐ parseConfigFile(BI.builtToolConfigPath)
                 2. buildToolVer ⇐ buildToolConfigs[‘builtToolVersion’]
   158   159   160   161   162   163   164   165   166   167   168