单元测试用于检验软件单一模块的功能是否正确,是软件开发过程中的重要步骤,可以及时发现代码中的缺陷,提升软件的质量和可信度.由于手动编写单元测试费时费力,经常遗漏覆盖重要的代码逻辑.为此,研究者提出单元测试用例自动生成技术.近...单元测试用于检验软件单一模块的功能是否正确,是软件开发过程中的重要步骤,可以及时发现代码中的缺陷,提升软件的质量和可信度.由于手动编写单元测试费时费力,经常遗漏覆盖重要的代码逻辑.为此,研究者提出单元测试用例自动生成技术.近来,预训练大语言模型(large language models,LLM)已经广泛应用于代码生成相关任务.然而,当前在重要的系统级编程语言C上,还没有相关工作.为了填补这一空白,本文面向C程序设计并实现了基于LLM的单元测试用例生成方法LLM4CUTCG.该方法结合LLM多智能体交互和程序分析技术,客服了LLM内在问题.为了验证方法效果,收集了125个C语言目标程序,并针对这些程序生成测试用例.实验结果表明,LLM4CUTCG生成的测试行覆盖率为91.71%,测试预言正确率为50.05%.其覆盖率优于传统方法符号执行.展开更多
软件系统在各行各业中发挥着不可忽视的作用,承载着大规模、高密度的数据,但软件系统中存在的种种缺陷一直以来困扰着系统的开发者,时刻威胁着系统数据要素的安全.自动代码修复(automated program repair,APR)技术旨在帮助开发者在软件...软件系统在各行各业中发挥着不可忽视的作用,承载着大规模、高密度的数据,但软件系统中存在的种种缺陷一直以来困扰着系统的开发者,时刻威胁着系统数据要素的安全.自动代码修复(automated program repair,APR)技术旨在帮助开发者在软件系统的开发过程中自动地修复代码中存在的缺陷,节约软件系统开发和维护成本,提高软件系统中数据要素的保密性、可用性和完整性.随着大语言模型(large language model,LLM)技术的发展,涌现出许多能力强大的代码大语言模型,并且代码LLM在APR领域的应用中表现出了强大的修复能力,弥补了传统方案对于代码理解能力、补丁生成能力方面的不足,进一步提高了代码修复工具的水平.全面调研分析了近年APR相关的高水平论文,总结了APR领域的最新发展,系统归纳了完形填空模式和神经机器翻译模式2类基于LLM的APR技术,并从模型类型、模型规模、修复的缺陷类型、修复的编程语言和修复方案优缺点等角度进行全方位的对比与研讨.同时,对APR数据集和评价APR修复能力的指标进行了梳理和分析,并且对现有的实证研究展开深入探讨.最后,分析了当前APR领域存在的挑战及未来的研究方向.展开更多
在开源软件和开源平台中,开发人员可以通过提交issue来记录所发现的软件错误或提出新功能需求.由于缺乏经验、专业水平有限等原因,用户可能无法对issue内容进行准确有效地总结,导致issue标题质量较低,进而降低issue的解决效率.此外,现有...在开源软件和开源平台中,开发人员可以通过提交issue来记录所发现的软件错误或提出新功能需求.由于缺乏经验、专业水平有限等原因,用户可能无法对issue内容进行准确有效地总结,导致issue标题质量较低,进而降低issue的解决效率.此外,现有的issue标题自动生成方法主要面向GitHub等英文开源平台,当应用在Gitee等国产开源平台时表现不佳.同时,现有方法主要使用issue主体描述作为输入,忽略了issue中的代码片段等重要信息.为此,本文提出一种面向Gitee平台的issue标题自动生成方法GITG(Gitee Issue Title Generation),针对包含中文和英文文本的issue,使用构建的Gitee issue数据集对支持中文的预训练模型Chinese BART(Bidirectional and Auto-Regressive Transformers)进行微调,利用issue主体描述和代码片段的双模态信息来自动生成issue标题.为验证GITG的有效性,构建了包含18242个Gitee issue样本的数据集.实验结果表明,GITG在ROUGE-1、ROUGE-2和ROUGE-L指标上相较于iTAPE和iTiger分别至少提升了13.09%、10.18%和12.84%,在BLEU和METEOR指标上同样取得了性能提升.人工评价结果表明,GITG生成标题的平均得分在整体分数、流畅性、信息性和简洁性4个评价指标上相较iTAPE和iTiger分别至少提升了26.7%、20.8%、24.2%和20.0%.展开更多
基于球谐函数,实现区域电离层建模,并对区域差分码偏差(differential code bias,DCB)与总电子含量(total electron content,TEC)进行解算。对于格网处垂直总电子含量(vertical total electron content,VTEC)出现的异常值,提出一种序列...基于球谐函数,实现区域电离层建模,并对区域差分码偏差(differential code bias,DCB)与总电子含量(total electron content,TEC)进行解算。对于格网处垂直总电子含量(vertical total electron content,VTEC)出现的异常值,提出一种序列无约束最小化技术(sequential unconstrained minimization technique,SUMT)修正法进行修正,利用国际全球导航卫星系统服务(International GNSS Service,IGS)网络的6个测站双频观测数据,建立了电离层VTEC区域模型,并估算了31天的卫星频间DCB,将估算值与电离层分析中心中国科学院(Chinese Academy of Sciences,CAS)发布的产品进行对比分析,结果显示:所有的卫星差值都在0.42 ns以内,其中87.5%的卫星差值在0.4 ns以内,78.1%的卫星差值在0.2 ns以内,频间DCB的平均偏差基本小于0.4 ns。此外,估算的全球定位系统(global positioning system,GPS)卫星DCB序列的标准差(standard deviation,STD)值小于0.1 ns。建立了经纬度范围为5°E~25°E、40°N~60°N的电离层区域模型,将VTEC建模结果与CAS发布的全球电离层地图(global ionospheric map,GIM)产品做差比较,结果显示整体时间点的差值均处于4 TECU以内,且超过90%的区域差值在2 TECU以内,表明估算的结果与CAS产品具有良好的一致性。展开更多
基于数据驱动的单元测试代码自动化生成技术存在覆盖率低和可读性差的问题,难以应对日益增长的测试需求。大语言模型(LLM)在代码生成任务中显示了极大的潜力,然而由于代码数据的功能风格和编码风格的差异,LLM面临灾难性遗忘和资源受限这...基于数据驱动的单元测试代码自动化生成技术存在覆盖率低和可读性差的问题,难以应对日益增长的测试需求。大语言模型(LLM)在代码生成任务中显示了极大的潜力,然而由于代码数据的功能风格和编码风格的差异,LLM面临灾难性遗忘和资源受限这2个挑战。为了解决这些问题,提出将编码风格和功能风格同步迁移微调的思想,并开发一种高效的LLM微调训练方法用于单元测试用例生成。首先,利用广泛使用的指令数据集对LLM进行指令对齐,并按任务类型对指令集分类;同时,提取并存储具有任务特征的权重增量;其次,设计一个自适应风格提取模块,该模块包含抗噪声干扰学习和编码风格回溯学习,以应对不同的代码编写风格;最后,在目标域分别对功能风格增量和编码风格增量进行联合训练,以实现在目标域低资源情况下的高效适配和微调。在SF110 Corpus of Classes数据集上的测试用例生成实验结果表明,所提方法的结果均优于对比方法,与主流代码生成LLM Codex、Code Llama和DeepSeek-Coder相比,所提方法的编译率分别提高0.8%、43.5%和33.8%、分支覆盖率分别提高3.1%、1.0%和17.2%;行覆盖率分别提高4.1%、6.5%和15.5%,验证了所提方法在代码生成任务上的优越性。展开更多
文摘单元测试用于检验软件单一模块的功能是否正确,是软件开发过程中的重要步骤,可以及时发现代码中的缺陷,提升软件的质量和可信度.由于手动编写单元测试费时费力,经常遗漏覆盖重要的代码逻辑.为此,研究者提出单元测试用例自动生成技术.近来,预训练大语言模型(large language models,LLM)已经广泛应用于代码生成相关任务.然而,当前在重要的系统级编程语言C上,还没有相关工作.为了填补这一空白,本文面向C程序设计并实现了基于LLM的单元测试用例生成方法LLM4CUTCG.该方法结合LLM多智能体交互和程序分析技术,客服了LLM内在问题.为了验证方法效果,收集了125个C语言目标程序,并针对这些程序生成测试用例.实验结果表明,LLM4CUTCG生成的测试行覆盖率为91.71%,测试预言正确率为50.05%.其覆盖率优于传统方法符号执行.
文摘软件系统在各行各业中发挥着不可忽视的作用,承载着大规模、高密度的数据,但软件系统中存在的种种缺陷一直以来困扰着系统的开发者,时刻威胁着系统数据要素的安全.自动代码修复(automated program repair,APR)技术旨在帮助开发者在软件系统的开发过程中自动地修复代码中存在的缺陷,节约软件系统开发和维护成本,提高软件系统中数据要素的保密性、可用性和完整性.随着大语言模型(large language model,LLM)技术的发展,涌现出许多能力强大的代码大语言模型,并且代码LLM在APR领域的应用中表现出了强大的修复能力,弥补了传统方案对于代码理解能力、补丁生成能力方面的不足,进一步提高了代码修复工具的水平.全面调研分析了近年APR相关的高水平论文,总结了APR领域的最新发展,系统归纳了完形填空模式和神经机器翻译模式2类基于LLM的APR技术,并从模型类型、模型规模、修复的缺陷类型、修复的编程语言和修复方案优缺点等角度进行全方位的对比与研讨.同时,对APR数据集和评价APR修复能力的指标进行了梳理和分析,并且对现有的实证研究展开深入探讨.最后,分析了当前APR领域存在的挑战及未来的研究方向.
文摘在开源软件和开源平台中,开发人员可以通过提交issue来记录所发现的软件错误或提出新功能需求.由于缺乏经验、专业水平有限等原因,用户可能无法对issue内容进行准确有效地总结,导致issue标题质量较低,进而降低issue的解决效率.此外,现有的issue标题自动生成方法主要面向GitHub等英文开源平台,当应用在Gitee等国产开源平台时表现不佳.同时,现有方法主要使用issue主体描述作为输入,忽略了issue中的代码片段等重要信息.为此,本文提出一种面向Gitee平台的issue标题自动生成方法GITG(Gitee Issue Title Generation),针对包含中文和英文文本的issue,使用构建的Gitee issue数据集对支持中文的预训练模型Chinese BART(Bidirectional and Auto-Regressive Transformers)进行微调,利用issue主体描述和代码片段的双模态信息来自动生成issue标题.为验证GITG的有效性,构建了包含18242个Gitee issue样本的数据集.实验结果表明,GITG在ROUGE-1、ROUGE-2和ROUGE-L指标上相较于iTAPE和iTiger分别至少提升了13.09%、10.18%和12.84%,在BLEU和METEOR指标上同样取得了性能提升.人工评价结果表明,GITG生成标题的平均得分在整体分数、流畅性、信息性和简洁性4个评价指标上相较iTAPE和iTiger分别至少提升了26.7%、20.8%、24.2%和20.0%.
文摘基于数据驱动的单元测试代码自动化生成技术存在覆盖率低和可读性差的问题,难以应对日益增长的测试需求。大语言模型(LLM)在代码生成任务中显示了极大的潜力,然而由于代码数据的功能风格和编码风格的差异,LLM面临灾难性遗忘和资源受限这2个挑战。为了解决这些问题,提出将编码风格和功能风格同步迁移微调的思想,并开发一种高效的LLM微调训练方法用于单元测试用例生成。首先,利用广泛使用的指令数据集对LLM进行指令对齐,并按任务类型对指令集分类;同时,提取并存储具有任务特征的权重增量;其次,设计一个自适应风格提取模块,该模块包含抗噪声干扰学习和编码风格回溯学习,以应对不同的代码编写风格;最后,在目标域分别对功能风格增量和编码风格增量进行联合训练,以实现在目标域低资源情况下的高效适配和微调。在SF110 Corpus of Classes数据集上的测试用例生成实验结果表明,所提方法的结果均优于对比方法,与主流代码生成LLM Codex、Code Llama和DeepSeek-Coder相比,所提方法的编译率分别提高0.8%、43.5%和33.8%、分支覆盖率分别提高3.1%、1.0%和17.2%;行覆盖率分别提高4.1%、6.5%和15.5%,验证了所提方法在代码生成任务上的优越性。