一种基于值流分析的Golang程序高效过程间逃逸分析方法

    公开(公告)号:CN114780105A

    公开(公告)日:2022-07-22

    申请号:CN202210476822.1

    申请日:2022-04-30

    Inventor: 张迎周 密杰 卢跃

    Abstract: 本发明公开了一种基于值流分析的Golang程序高效过程间逃逸分析方法,包括,对Golang程序进行预处理,得到基于静态单赋值形式的中间代码表示,创建过程间函数调用图和过程内控制流图;将函数调用图做逆拓扑排序,建立待分析函数序列,并对待分析函数进行是否涉及过程间调用判别;根据判别的不同分别计算目标函数的逃逸变量;基于函数调用图分析程序内的所有函数的逃逸变量,将所有分析函数的ESC进行合并得到最终的逃逸变量值的集合;基于SSA的代码中间表示进行Golang程序的逃逸分析,可扩展性高,方便后续做代码数据流分析。

    一种基于高阶函数的C++过程间异常分析系统及方法

    公开(公告)号:CN114647575A

    公开(公告)日:2022-06-21

    申请号:CN202210168542.4

    申请日:2022-02-23

    Abstract: 本发明公开了函数式编程和程序分析技术领域的一种基于高阶函数的C++过程间异常分析系统及方法,包括:确定过程调用图中每个被调用子过程的分析顺序,将C++程序中的语句进行分类;收集各个被调用子过程异常相关语句和函数调用语句的集合约束,按照集合约束规则对集合约束进行求解,获取过程内异常分析信息后,通过高阶函数的形式将所有被调用子过程的异常分析结果保存为异常分析函数摘要;按照函数的参数传递方式,根据形参和实参对应参数信息,在过程调用点处,对高阶函数式异常分析函数摘要的参数集合信息进行相应代入。本发明降低了传统方法需要构建过程间异常控制流图对异常进行过程间分析的时空开销,解决了异常分析效率较低的问题。

    一种基于高阶函数的程序间依赖关系抽取方法

    公开(公告)号:CN114238078A

    公开(公告)日:2022-03-25

    申请号:CN202111392045.4

    申请日:2021-11-23

    Abstract: 本发明公开了一种基于高阶函数的程序间依赖关系抽取方法,首先对程序进行预处理,构建程序的过程调用图,对过程调用图中的节点进行遍历,确定子过程的分析顺序;获取各个被调用子过程内的语句和变量间的依赖关系,用高阶函数的形式保存摘要信息;根据生成的高阶函数式函数摘要,在过程调用点处对函数摘要的函数参数进行相应值或者函数代入,获取过程间由于过程调用和参数传递产生的依赖关系。本发明通过高阶函数特性获取过程内的依赖关系,生成高阶函数形式表示的函数摘要,可方便过程间调用时在调用点处按需完成函数摘要中高阶函数参数的代入,快速获取形参与实参之间的依赖关系,有效提升了程序间依赖关系的抽取效率。

    一种基于RDF推理进行测试用例约简的方法

    公开(公告)号:CN109460354B

    公开(公告)日:2021-09-24

    申请号:CN201811202039.6

    申请日:2018-10-16

    Abstract: 本发明提出了一种基于RDF推理进行测试用例约简的方法,包括预处理步骤,OWL建模,初步推理,进一步推理及测试用例约简。该方法从含有RDFa的HTML源代码出发,提取出RDF的信息,并生成初始的RDF图;利用工具进行owl建模,并完成初步推理工作;分析owl模型中元素间的关系,完善元素的属性等,设计推理规则,利用推理工具推导出页面元素间隐含的关系,生成完善的RDF图;结合RDF图生成测试用例的原理,标记出所有的测试路径,根据测试路径对已经生成的测试路径进行约简,最终生成精简的测试用例集。该方法能够生成覆盖范围广,数量少的精简测试用例集,同时提高了测试效率,降低测试成本。

    基于K-means和离散粒子群算法的无人车任务分配方法

    公开(公告)号:CN109872001B

    公开(公告)日:2021-03-19

    申请号:CN201910150788.7

    申请日:2019-02-28

    Abstract: 本发明公开了一种基于K‑means和离散粒子群算法的多无人车任务分配方法,包括以下步骤:S1、物流场景信息初始化;S2、物流任务打包:使用K‑means算法确定最佳打包结果,其打包个数为k;S3、取k辆可用无人车,匹配每个任务包的执行无人车;S4、对每一辆无人车用离散粒子群算法确定其任务序列。本发明的方法结合聚类思想和群智优化算法对多无人车任务分配问题进行解答,使用离散化的粒子群算法进行多无人车的任务分配,粒子群算法的收敛速度快,离散化的迭代方式使算法更适用于实际的物流场景。并且在使用粒子群算法前先用K‑means聚类算法对任务进行打包,极大地减小了解空间的大小,提高了任务分配效率。

    一种基于自组织神经网络的无人机任务规划方法

    公开(公告)号:CN108170147B

    公开(公告)日:2020-10-16

    申请号:CN201711495472.9

    申请日:2017-12-31

    Abstract: 本发明提供了一种基于自组织神经网络的无人机任务规划方法,包括自组织神经网络初始化步骤,选取获胜节点步骤,计算获胜节点的优胜邻域步骤,网络参数更新步骤,动态响应步骤。首先初始化网络结构和节点权值,对权值进行归一化处理,然后接收输入向量,选择与输入向量内积最大的节点作为获胜节点,计算所有在获胜节点的优胜邻域内的节点,并对这些节点的权值按其离开获胜节点的距离不同程度地进行更新。当有突发情况时,动态调整网络的参数以及时响应。本发明对获胜邻域内的节点更新权值,算法的执行过程中加入了多约束条件,引入混乱机制解决无人机在多个任务点迂回问题,采用动态响应机制,提升了无人机集群在动态环境中的适应性,实现了更加有效的无人机任务规划。

    一种基于LLVM中间表示程序切片的度量模型

    公开(公告)号:CN106933572B

    公开(公告)日:2020-05-19

    申请号:CN201710089449.3

    申请日:2017-02-20

    Abstract: 本发明公开了一种基于LLVM中间表示程序切片的度量模型,包括:将源程序通过LLVM命令行转换成对应的LLVM IR语言;构建程序系统依赖图,对程序LLVM IR语句切片;根据程序切片的结果和源程序转换得到的LLVM IR语句得到程序中各模块的模块大小,输出变量的个数,根据各度量模块所有输出变量的切片集中最大的切片集大小和最小的切片集的大小,和所有变量的公共切片集;将上步所得值带入度量函数中,完成对函数的LLVM IR度量,然后计算程序的Halstead度量;将程序所有度量结果先去除具有相同作用的度量值,再构建复杂性度量函数Complexity,并对程序的各个模块的Complexity进行计算并根据其大小进行排序,软件开发或测试可根据各模块的复杂度大小合理分配开发资源,并进行错误检测。本发明有效提高了程序切片的通用性和度量精度。

    一种基于程序分析的Pull Request功能分类方法

    公开(公告)号:CN110990055A

    公开(公告)日:2020-04-10

    申请号:CN201911321383.1

    申请日:2019-12-19

    Abstract: 本发明为一种基于程序分析的Pull Request功能分类方法:首先,对当前版本项目和Pull Request中修改文件的提取。其次,对于待分析的程序,使用程序分析框架Soot,选择传递方式生成调用图Callgragh,遍历Callgragh直到调用的是第三方库提供的方法,将遍历到的节点和边保存到数据库中。然后,读取并分析数据库中保存的节点和边的关系,以Pull Request中的文件作为图的节点,构建图的邻接表结构。最后,基于图的深度优先遍历算法遍历邻接表的所有结点,以遍历的结果作为文件的功能分类,针对无调用关系的文件,以文件后缀名进行处理。

    基于程序切片的JavaScript延续传递风格转化方法

    公开(公告)号:CN110262804A

    公开(公告)日:2019-09-20

    申请号:CN201910510690.8

    申请日:2019-06-13

    Abstract: 本发明公开了一种基于程序切片的JavaScript延续传递风格(Continuation-passing style CPS)转化方法,包括根据直接风格的同步化代码步骤,完成程序切片步骤,执行转化过程步骤,在线显示转化结果步骤。首先以同步方式编写代码,以此来作为输入,利用额外参数来标记程序中的调用节点,然后根据刚才给出的callback变量对该点处进行程序前向切片,根据前向切片结果图寻找数据依赖关系,根据依赖关系来完成延续传递风格的自动转化,无需程序员手动转化,转化过后的代码尽可能的保持了原有程序的结构和变量名称,增加代码的可读性,方便后期进行测试维护。最后在Web端利用Bootstrap技术来布局,将转化过后的代码展示到页面上。

Patent Agency Ranking