一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于AIChain的隐性数据流感知DFG生成方法、系统及存储介质

2023-09-24 12:13:11 来源:中国专利 TAG:

基于ai chain的隐性数据流感知dfg生成方法、系统及存储介质
技术领域
1.本发明涉及数据程序分析领域,具体的说,是涉及一种基于ai chain的隐性数据流感知dfg生成方法、系统及存储介质。


背景技术:

2.在程序语义分析中,数据流分析是重要的一环,它关注数据在程序中的传递和使用。它的目标是确定变量的定义、使用和赋值关系,以及数据的依赖关系。数据流分析利用数据流图(data flow graph,dfg)表示数据的传递和使用情况,可帮助识别潜在的错误,如未初始化变量、数据竞争和不一致的数据访问。生成dfg通常依赖于静态分析方法。
3.目前,生成dfg主要依赖于静态分析方法,大致可以分为两类:基于ast的方法(例如jdt,cdt)以及基于字节码的方法。基于ast的方法通过词法分析和语法分析将程序解析为ast,然后通过遍历ast节点来识别变量声明、赋值语句等,进而构建dfg。而基于字节码的方法则首先将程序代码编译为字节码文件,然后通过解析字节码文件中的指令序列,分析程序中的数据流依赖关系,从而生成dfg。这些方法为程序语义分析提供了重要的工具和技术,有助于理解程序的数据传递和使用情况。
4.然而,针对具有动态特性的动态语言如python生成dfg时,静态分析方法面临挑战。动态语言的特性导致许多操作(例如变量赋值、推导式求值和函数或方法调用)的具体行为只能在程序运行时动态确定。这些操作在运行时动态产生的def-use流信息被称为隐性数据流。因此,仅依靠编译时的静态信息,静态分析方法无法在程序编译阶段准确预测出后续动态运行时才生成的隐性数据流,导致出现隐性数据流问题(如变量共享、数据流难以追踪和可调用对象副作用等)。换句话说,传统的静态分析方法无法为动态语言python生成包含完整def-use信息的dfg。


技术实现要素:

5.针对上述现有技术中的不足,本发明提供一种能够实现对程序中的隐性数据流的精准捕获,增强生成dfg的鲁棒性和可控性的基于ai chain的隐性数据流感知dfg生成方法及系统。
6.本发明所采取的技术方案是:第一方面,提供一种基于ai chain的隐性数据流感知dfg生成方法,包括:模拟人从程序中提取dfg的过程,基于分析流的思想,将dfg生成任务分解为多个子任务,每个子任务交由一个单独的大型语言模型来完成;基于大型语言模型的上下文学习能力,针对每个子任务,构建prompt,形成一个个ai模块;将prompt以串联或者并联的方式组装形成一条ai chain,进而生成dfg。
7.第二方面,提供一种基于ai chain的隐性数据流感知dfg生成方法,
将dfg生成任务分解为多个子任务;这些任务包括:导入语句补全,将代码中缺失的导入语句补全;推导式执行推理,将代码中的推导式推理为循环结构;程序切片,对每个变量进行程序切片,得到对应的切片代码;def-use流融合,针对每段切片代码,提取其对应的def-use流信息;def-use流融合,基于切片代码,切片代码对应的def-use流信息,生成def-use信息流完整的dfg。
8.第三方面,提供一种基于ai chain的隐性数据流感知dfg生成方法,构建prompt,形成一个个ai模块包括:构建一个通用的prompt模板,其中包括一个任务描述和五组输入输出示例;针对每个子任务属性,构建任务描述,以及选取相应的输入输出示例。
9.第四方面,提供一种基于ai chain的隐性数据流感知dfg生成方法,将prompt组装成一条ai链,生成dfg包括:基于每个子任务属性,设置每个子任务的先后完成顺序;基于每个子任务的先后完成顺序,构建其连接方式,即串联或者并联,最终形成一条完整的ai chain。
10.第五方面,提供一种一种面向程序分析领域的基于ai chain的隐性数据流感知dfg生成系统,包括:导入语句补全模块、推导式执行推理模块和图获取模块;导入语句补全模块与推导式执行推理模块连接;推导式执行推理模块与图获取模块连接;导入语句补全模块,用于获取代码中缺失的导入语句信息,得到含有完整导入语句信息的代码;推导式执行推理模块,用于将代码中的推导式转化为循环等更为简单的代码结构;图获取模块,基于代码的def-use信息,得到代码对应的dfg。
11.第六方面,提供一种基于ai chain的隐性数据流感知dfg生成方法及系统,导入语句补全模块包括导入语句补全ai模块。
12.推导式执行推理模块包括推导式执行推理ai模块和prompt示例检索非ai模块;图获取模块包括代码切片ai模块、def-use流提取ai模块、cfg节点和边获取非ai模块以及def-use流融合ai模块。
13.第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现基于ai chain的隐性数据流感知dfg生成方法。
14.本发明相对现有技术的有益效果:本发明基于ai chain的隐性数据流感知dfg生成方法及系统,通过大型语言模型的上下文学习能力,能够实现对程序中的隐性数据流的精准捕获;通过构建一条ai chain,实现对人在提取程序对应的dfg时的思维模仿,进而将整个大任务分解为多个子任务;通过为每个子任务构建合理的prompt,进而实现对每个子任务的高效完成;通过将这些子任务
进行链接并完成,最终得到程序对应的def-use流信息完整的dfg。
15.本发明基于ai chain的隐性数据流感知dfg生成方法及系统,克服了传统静态分析方法带来的隐性数据流问题,利用大型语言模型的语言理解和模式匹配能力,捕捉变量的def-use流信息,并预测运行时发生的隐性数据流,而不是依赖于手动启发式规则。
16.本发明基于ai chain的隐性数据流感知dfg生成方法及系统,构建一个ai链,包括五个ai步骤,每个ai步骤由一个独立的大型语言模型调用处理;增强生成dfg的鲁棒性和可控性。
附图说明
17.图1为本发明实施例中的面向程序语义分析的基于ai chain的隐性数据流感知dfg生成方法示意图;图2为本发明实施例中的面向程序语义分析的基于ai chain的隐性数据流感知dfg生成方法中的ai模块prompt构建图的导入语句补全ai模块步骤;图3为本发明实施例中的面向程序语义分析的基于ai chain的隐性数据流感知dfg生成方法中的ai模块prompt构建图的推导式执行推理步骤;图4为本发明实施例中的面向程序语义分析的基于ai chain的隐性数据流感知dfg生成方法中的ai模块prompt构建图的程序切片步骤;图5为本发明实施例中的面向程序语义分析的基于ai chain的隐性数据流感知dfg生成方法中的ai模块prompt构建图的def-use提取步骤;图6为本发明实施例中的面向程序语义分析的基于ai chain的隐性数据流感知dfg生成方法中的ai模块prompt构建图的def-use流融合步骤;图7为本发明实施例中的基于ai chain的隐性数据流感知dfg生成系统示意图;图8为本发明实施例中的基于ai chain的隐性数据流感知dfg生成系统中的一个运行实例;图9是图8第一列放大图;图10是图8第二列放大图;图11是图8第三列放大图;图12是图8第四列放大图。
具体实施方式
18.以下参照附图及实施例对本发明进行详细的说明:第一方面,提供一种基于ai chain的隐性数据流感知dfg生成方法,包括:模拟人从程序中提取dfg的过程,基于分析流的思想,将dfg生成任务分解为多个子任务,每个子任务交由一个单独的大型语言模型来完成;基于大型语言模型的上下文学习能力,针对每个子任务,构建prompt,形成一个个ai模块;将prompt以串联或者并联的方式组装形成一条ai chain,进而生成dfg。
19.第二方面,提供一种基于ai chain的隐性数据流感知dfg生成方法,将dfg生成任务分解为多个子任务;
slicing...”)和五个示例。输入是不包含推导表达式的代码,输出是所有变量的切片代码。在示例提示中“a1”和“a2”共享一个对象“shuffle()”方法更新“a1”的值,从而影响了“a2”。因此“a2”的切片代码包括“shuffle(a1)”。
29.如图5所示,def-use提取ai模块负责从每个变量的切片代码中提取def-use流信息。
30.如图5所示的提示包括一个任务描述“extract the def-use flow information...”和五个示例。输入是每个变量的切片代码,输出是带有每个变量的def-use流信息的切片代码。由于导入语句补全模块已经完成了导入语句的补充,大型语言模型可以访问可调用对象的源库,从而更准确地预测其内部语义并提取def-use流信息。
31.如图6所示,def-use流融合ai模块通过整合先前的信息生成具有完整的def-use流信息的dfg。图6展示了带有任务描述“fusion the given python code...”和五个示例的提示。每个示例包括没有列表解析结构的代码、带有def-use流信息的切片代码以及控制流图(cfg)的节点和边。这个ai模块将这些输入结合起来生成具有完整的def-use流信息的dfg,同时保留cfg的节点和边,如前面所述。非ai模块cfg节点和边提取(图1)使用cfg生成工具(cfg generator)从python代码中提取cfg的节点和边。
32.第五方面,提供一种一种面向程序分析领域的基于ai chain的隐性数据流感知dfg生成系统,包括:导入语句补全模块、推导式执行推理模块和图获取模块;导入语句补全模块与推导式执行推理模块连接;推导式执行推理模块与图获取模块连接;导入语句补全模块,用于获取代码中缺失的导入语句信息,得到含有完整导入语句信息的代码;推导式执行推理模块,用于将代码中的推导式(例如列表推导式)转化为循环等更为简单的代码结构;图获取模块,基于代码的def-use信息,得到代码对应的dfg。
33.第六方面,提供一种基于ai chain的隐性数据流感知dfg生成方法及系统,导入语句补全模块包括导入语句补全ai模块。
34.推导式执行推理模块包括推导式执行推理ai模块和prompt示例检索非ai模块;图获取模块包括代码切片ai模块、def-use流提取ai模块、cfg节点和边获取非ai模块以及def-use流融合ai模块。
35.图8-12为本发明的第2实例:首先,将python代码输入到导入语句补全模块中,该模块为代码填补了缺失的导入语句,如图9
‑ꢀ
b所示。
36.该模块为“shuffle()”和“choices()”方法补全了导入语句(即from random import shuffle和from random import choices)。
37.使用推导式执行推理模块将图9
‑ꢀ
b中第8-10行的列表推导式展开为循环结构,展开后的代码如图9
‑ꢀ
c所示。
38.使用程序切片模块来对不包含列表推导式的代码进行切片,以获得每个变量的切片代码,该过程的结果如图10
‑ꢀ
d所示。
39.由于变量“a”和“b”共享同一个列表对象,“shuffle(a)”会更新“a”和“b”的值,因此变量“b”的切片代码中包含“shuffle(a)”。
40.将图10
‑ꢀ
d中变量“a”、“c”、“x”和“b”的切片代码输入到def-use提取模块中,以提取其对应的定义-使用流信息。该ai模块并行处理这些切片代码,提取所有切片代码的定义-使用流信息,如图11
‑ꢀ
e所示。请注意,这个过程使用多个def-use提取模块并行执行。
41.将所有变量的切片代码输入到def-use流融合模块中,生成包含完整的def-use流信息的dfg。def-use流融合模块模块整合了之前ai模块输出的信息,并生成最终的dfg,如图12
‑ꢀ
f所示。
42.第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现基于ai chain的隐性数据流感知dfg生成方法。
43.本发明基于ai chain的隐性数据流感知dfg生成方法及系统,通过大型语言模型的上下文学习能力,能够实现对程序中的隐性数据流的精准捕获;通过构建一条ai chain,实现对人在提取程序对应的dfg时的思维模仿,进而将整个大任务分解为多个子任务;通过为每个子任务构建合理的prompt,进而实现对每个子任务的高效完成;通过将这些子任务进行链接并完成,最终得到程序对应的def-use流信息完整的dfg。
44.本发明基于ai chain的隐性数据流感知dfg生成方法及系统,克服了传统静态分析方法带来的隐性数据流问题,利用大型语言模型的语言理解和模式匹配能力,捕捉变量的def-use流信息,并预测运行时发生的隐性数据流,而不是依赖于手动启发式规则。
45.本发明基于ai chain的隐性数据流感知dfg生成方法及系统,构建一个ai链,包括五个ai步骤,每个ai步骤由一个独立的大型语言模型调用处理;增强了生成dfg的鲁棒性和可控性。
46.以上所述,仅是本发明的较佳实施例而已,并非对本发明的结构作任何形式上的限制。凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均属于本发明的技术方案范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表