一种基于程序上下文的断言生成方法

    公开(公告)号:CN118643846A

    公开(公告)日:2024-09-13

    申请号:CN202310238274.3

    申请日:2023-03-13

    Applicant: 南京大学

    Inventor: 陈林 杨帆

    Abstract: 本发明提供一种基于程序上下文的断言生成方法,包括以下步骤:1)构建用例格式为 的数据集,并按照8∶1∶1的比例将数据集划分为训练集,验证集和测试集;2)构建神经机器翻译模型并用上述的训练集对其进行训练;3)从GitHub中提取开源项目,并对数据集进行定位;4)从项目中提取上下文信息,用上下文信息限制神经机器翻译模型的词表,限制模型生成语法正确的模型;5)用提取到的上下文信息进一步生成UNK;6)从预测准确率和通过编译的比例两个方面衡量本发明的效果。本发明解决了目前自动化测试工具生成断言质量低的问题,并且生成了能够通过编译的断言。提升了自动化测试工具检测缺陷的能力。进一步缩短了软件项目的开发时间。

    一种基于机器学习的Maven依赖范围配置推荐方法

    公开(公告)号:CN118642743A

    公开(公告)日:2024-09-13

    申请号:CN202310238238.7

    申请日:2023-03-13

    Applicant: 南京大学

    Inventor: 陈林 杨浩麟

    Abstract: 本发明涉及计算机技术领域,提供一种基于机器学习的Maven依赖范围配置推荐方法,包括以下步骤:1)从GitHub收集Maven项目作为原始数据来源;2)从收集的项目中抽取依赖数据组成数据集,包括项目的信息,依赖的信息,以及依赖在项目当中的使用情况;3)预处理收集的数据,将不同类型的数据转换成数值类型数据;4)训练机器学习分类模型;5)从需要依赖范围配置推荐的项目中抽取依赖的信息和相关特征;6)使用训练好的模型生成依赖的范围配置推荐。本发明针对当前开发者在配置Maven项目依赖范围属性时遇到的难点,给出自动化的解决方案,可为开发者推荐合适的依赖范围配置,大大减轻开发者配置时的心智负担,提升开发效率,改进代码质量。

    一种基于阈值感知技术的实时软件缺陷预测方法

    公开(公告)号:CN117093467A

    公开(公告)日:2023-11-21

    申请号:CN202210506389.1

    申请日:2022-05-11

    Applicant: 南京大学

    Abstract: 本发明提出了一种基于阈值感知技术的实时软件缺陷预测方法。方法包括下列步骤:1)从软件托管平台上获取目标软件项目的所有历史提交信息和代码更改;2)根据历史提交信息和代码更改抽取各种维度的度量;3)从历史提交信息中汇总修复类型提交,并通过SZZ算法向前回溯找出引入缺陷的提交并制定标签;4)汇总度量和标签生成基于提交粒度的缺陷数据集;5)使用阈值感知技术对缺陷数据集进行训练并保存模型;6)对于新产生的代码提交,抽取度量并经由模型预测。本发明为软件缺陷预测提供了一种自动化生成数据集,实时预测的方法,通过阈值感知技术减少了不平衡数据集的影响,最后的预测结果可帮助开发者更早地发现潜在的缺陷,提高软件质量。

    基于深度学习的Java程序内部注释的生成方法及系统

    公开(公告)号:CN113076133B

    公开(公告)日:2023-09-26

    申请号:CN202110449761.5

    申请日:2021-04-25

    Applicant: 南京大学

    Inventor: 陈林 汪值 李言辉

    Abstract: 本发明公开基于深度学习的Java程序内部注释的生成方法及系统,所述方法包括如下步骤:获取Stars数排名靠前的项目,提取出对应的内部注释和方法语句列表;得到: 对;选择Verb‑dobj形式的注释;得到和目标代码段相关联的代码上下文;对注释、目标代码以及上下文进行预处理,得到: 组成的三元组数据集;对构建的数据集随机划分成训练集、验证集和测试集,同时构建编码器解码器网络;划分中的训练集用于模型训练,并且通过在验证集上进行评估,得到在验证集上效果最好的模型作为目标模型;用获得的目标模型对测试集中的数据进行预测,生成预测的注释。

    一种实体关系导向的语言模型测试方法

    公开(公告)号:CN116662558A

    公开(公告)日:2023-08-29

    申请号:CN202210159362.X

    申请日:2022-02-21

    Applicant: 南京大学

    Abstract: 本发明提供一种实体关系导向的语言模型测试方法,包括以下流程:1)获取用于生成测试用例的单词;2)根据模式和步骤1获取的单词生成测试用例作为模型输入序列;3)将步骤2中获取的输入序列输入模型,获取输出序列;4)对输出结果进行命名实体识别;5)筛选步骤4中获取的关系,并对关系两两进行关系抽取;6)根据关系抽取结果构造查询语句,查询该关系是否存在于知识图谱中;7)根据查询结果生成测试报告,反馈给测试人员。该测试方法可以有效弥补现阶段语言模型相关测试工具的匮乏问题,既能从语义的角度分析输出结果,又能脱离测试集,使得测试人员能够在没有测试集的情况下完成测试流程。同时无需将测试流程带入具体任务,而且测试流程可以自动化完成。本发明可以为开发者调试和修复语言模型提供指导,从而更好地提升语言模型质量,对今后语言模型测试方法的研究具有借鉴意义。

    一种基于抽象语法树节点变更抽取的Python代码变更提示方法

    公开(公告)号:CN105159715A

    公开(公告)日:2015-12-16

    申请号:CN201510555635.2

    申请日:2015-09-01

    Applicant: 南京大学

    Abstract: 本发明提供一种基于抽象语法树节点变更抽取的Python代码变更提示方法,包括下列步骤:1)获取同一软件不同版本程序的源代码;2)生成两个版本的源程序对应的抽象语法树;3)匹配抽象语法树获取变更节点,结合变更节点上下文信息标记节点变更类型;4)将变更元组聚集为事务,构造训练集;5)利用数据挖掘技术,挖掘变更元组中的关联关系;6)根据挖掘出的关联关系,提示开发人员程序中可能出现变更的位置和可能的变更类型。本发明解决了目前存在的缺乏针对Python语言的软件演化分析、无法提示可能的代码变更类型等问题,进而指导软件生命周期的管理,提高软件演化的可控性,从而能更好地控制软件产品的质量。

    一种基于机器学习的Python代码共同演化测试用例预测方法

    公开(公告)号:CN118227498A

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

    申请号:CN202410414779.5

    申请日:2024-04-08

    Applicant: 南京大学

    Inventor: 陈林 贾持恒

    Abstract: 本发明公开了一种基于机器学习的Python代码共同演化测试用例预测的方法,其步骤为首先从软件的版本控制系统中获取该软件历史版本的源代码和待测版本的源代码,并使用代码关联技术,将产品代码关联到相对应的测试代码上;再通过特征提取方法将代码历史变更信息转变为特征向量,得到训练集和测试集;然后用深度神经网络模型对训练集进行模型训练,并使用模型来对测试集进行预测;最终在程序开发和维护阶段,根据深度神经网络模型的预测结果对可能需要维护的资源对象操作进行提醒,辅助开发和维护。本发明解决了目前缺乏针对Python语言资源共同演化过程中对于测试用例变更进行预测的问题,提高了软件质量。

    一种基于随机森林模型的StackOverflow问答更新情况预测方法

    公开(公告)号:CN117112271A

    公开(公告)日:2023-11-24

    申请号:CN202210506390.4

    申请日:2022-05-11

    Applicant: 南京大学

    Abstract: 本发明提供了一种面向软件开发的、基于机器学习模型的StackOverflow问答更新情况的预测方法,包含下列步骤:1)首先使用SOTorrent数据集获取引用了StackOverflow问答的GitHub项目,并通过版本控制软件git中的gitclone命令获取这些项目的源程序代码;2)对项目的源程序代码进行正则表达式匹配,提取被引用的StackOverflow问答的ID;3)利用StackOverflow的API获取这些问答的信息并提取度量;4)根据问答的编辑记录为每个样例打标记,并使用机器学习算法生成预测模型;5)对开发者新引用的StackOverflow问答进行预测,根据预测结果提示开发者关注需要进一步编辑的答案的更新情况。本发明解决了目前软件代码缺乏与StackOverflow问答的共同更新的问题,进而帮助开发者修复缺陷,提高软件的鲁棒性,从而能更好地控制软件产品的质量。

    一种基于蜕变测试的语义搜索引擎质量评估方法

    公开(公告)号:CN116662147A

    公开(公告)日:2023-08-29

    申请号:CN202210159364.9

    申请日:2022-02-21

    Applicant: 南京大学

    Inventor: 陈林 刘凡维 任浩

    Abstract: 本发明提供一种基于蜕变测试的语义搜索引擎质量评估方法,包括下列步骤:1)从知识图谱三元组文件中提取有效信息生成原查询测试用例池;2)对原查询测试用例池进行筛选合并;3)设计蜕变规则,并选取原查询根据合适的蜕变规则通过蜕变生成新的关联查询;4)将原查询及其通过蜕变得到的关联查询输入搜索引擎,并收集它们的结果;5)发现潜在的缺陷。将新生成查询的结果与原查询的结果进行比较,如果两种结果间的关系与预期关系不相匹配,则该组查询将被报告为可能包含潜在的错误。本发明解决了目前缺乏针对语义搜索引擎对查询返回精确结果时测试精确性和准确性方法的问题,并且能够提供触发潜在缺陷的查询,进而帮助开发者进行测试和修复缺陷,提高软件的可维护性和鲁棒性,从而能更好地控制语义搜索引擎产品的质量。

    一种跨项目缺陷影响分析方法

    公开(公告)号:CN110781086B

    公开(公告)日:2022-02-08

    申请号:CN201911020242.6

    申请日:2019-10-23

    Applicant: 南京大学

    Abstract: 本发明提供一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法,包括下列步骤:1)获取同一软件生态系统中不同项目、多个版本的程序源代码;2)从每个项目基础版本的程序源代码中抽取调用关系,构建生态系统基本依赖网络;3)从每个项目其它版本的程序源代码中获取代码变更,构建版本敏感的生态系统依赖网络;4)对于给定的跨项目缺陷,已知其上游出错方法,挑选候选下游模块;5)针对每个候选下游模块,进行代码预处理;6)对每个预处理后的候选下游模块,进行符号编码;7)对每个符号编码后的下游模块进行约束求解,如有解,则提示开发人员该模块可能受给定跨项目缺陷影响。本发明解决了目前存在的缺乏针对跨项目缺陷影响分析、无法提示下游项目受影响模块等问题,进而指导跨项目缺陷的修复方案设计,提高缺陷修复补丁的质量,从而能更好地控制和管理软件生态系统的健康发展。

Patent Agency Ranking