在软件缺陷预测中使用软件可视化和迁移学习


论文的数据集和代码已开源:https://zenodo.org/record/3373409#.YrpiEBVBxHW。

文章的动机是避开源代码的中间表示,将源代码表示为图像,直接提取代码的语义信息以改进缺陷预测的性能。

首先,看到如下图所示的motivation示例。File1.java和File2.java两个示例中,虽然都包含了1个if语句、2个for语句和4个函数调用,但代码的语义和结构特征是不相同的。为验证将源代码转换成图像是否有助于区分不同的代码,作者进行了实验:将源代码根据字符的ASCII十进制数对应到像素,排列成像素矩阵,获取源代码的图像。作者指出,不同的源代码图像存在差异。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

Fig. 1 Motivation Example

文章主要的贡献如下:

将代码转换成图像,从中提取语义和结构信息;

提出一种端到端的框架,结合自注意力机制和迁移学习实现缺陷预测。

文章提出的模型框架如图2所示,分为两个阶段:源代码可视化和深度迁移学习建模。

Fig. 2 Framework

1.源代码可视化

文章将源代码转换成6个图像,过程如图3所示。将源代码字符的10进制ASCII码转换成8bit无符号整数向量,按行和列对这些向量进行排列,生成图像矩阵。8bit整数直接对应到灰度等级。为解决原始数据集较小的问题,作者在文章中提出了一种基于颜色增强的数据集扩充方法:对R、G、B三个颜色通道的值进行排列组合,产生6个彩色图。这里看着挺迷的,变换了通道值后,语义和结构信息应该有所改变吧?但是作者在脚注上进行了解释,如图4所示。

Fig. 3 源代码可视化流程

Fig. 4 文章脚注2

2.深度迁移学习建模

文章使用DAN网络来捕获源代码的语义和结构信息。为增强模型对重要信息的表达能力,作者在原始DAN结构中加入了Attention层。训练与测试流程如图5所示,其中conv1-conv5来自于AlexNet,4个全连接层fc6-fc9作为分类器。作者提到,对于一个新的项目,训练深度学习模型需要有大量的标签数据,这是困难的。所以,作者首先在ImageNet 2012上训练了一个预训练模型,使用预训练模型的参数作为初始参数来微调所有卷积层,进而减少代码图像和ImageNet 2012中图像的差异。

Fig. 5 训练与测试流程

3.模型训练和预测

对Source项目中有标签的代码和Target项目中无标签的代码生成代码图像,同时送入模型;二者共享卷积层和Attention层来提取各自的特征。在全连接层计算Source和Target之间的MK-MDD(Multi Kernel Variant Maximum Mean Discrepancy)。由于Target没有标签,所以只对Source计算交叉熵。模型使用mini-batch随机梯度下降沿着损失函数训练模型。对每一个对的500个epoch,根据最好的F-measure从中选出一个epoch。

在实验部分,作者选择了PROMISE数据仓库中所有开源的Java项目,收集了它们的版本号、class name、是否存在bug的标签。根据版本号和class name在github中下载源码。最终,共采集了10个Java项目的数据。数据集结构如图6所示。

Fig. 6 数据集结构

对于项目内缺陷预测,文章选择如下baseline模型进行对比:

对于跨项目缺陷预测,文章选择如下baseline模型进行对比:

总结一下,虽然是两年前的论文了,但感觉思路还是比较新奇的,避开AST等一系列代码中间表示,直接将代码转换成图像提取特征。但是还是比较疑惑,代码转换成的图像真的包含源代码语义和结构信息吗?感觉可解释性不太强,哈哈。后面需要做实验分析下吧。


# 源代码  # 最好的  # 看着  # 这是  # 应到  # 进行了  # 开源  # 如图  # 转换成  # 所示  # Java  # bug  # https  # github  # ASCII  # promise  # class  # for  # if  # batch 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: Spin Rewriter AI:终极内容创作与SEO优化指南  AI内容检测与优化:免费工具助你提升内容质量  EdrawMax AI:使用人工智能快速创建流程图和图表  如何利用AI优化简历关键词?轻松通过ATS筛选系统  秀米AI排版如何自动生成模板_秀米AI排版模板生成入口与风格选择【攻略】  如何通过 DeepSeek 进行深度神经网络超参数搜索  DeepSeek写合同怎么用_DeepSeek写合同使用方法详细指南【教程】  Postman Flows:构建智能AI驱动型工作流完全指南  律师视角下的生成式AI:信息爆炸时代的法律实践与未来展望  文心一言 4.0 在公文写作规范中的实战技巧  2025数据科学学习指南:技能、工具和学习路线图  Claude怎样写指令型提示词_Claude指令提示词写法【方法】  动漫肌肉美学:盘点最佳动漫肌肉男体格  Napkin AI:无需设计技能,AI一键生成精美图表  图像分割技术详解:定义、类型、技术与应用  唐库AI拆书工具如何批量导出笔记_唐库AI拆书工具批量导出与格式转换【方法】  3步教你用AI自动分类文件,整理电脑告别杂乱  AI工具投资指南:10个关键要素,助您明智决策  DeepSeek编程怎么用_DeepSeek编程使用方法详细指南【教程】  Bluecap:加拿大AI会议助手,提升混合办公效率  AI照片编辑:为你的单人照添加逼真女友,告别孤单  音乐天赋自测:你天生拥有绝对音感吗?15个问题揭晓  tofai官网最新入口地址 tofai网页版免下载  利用Gen AI和AI Agent进行软件测试:Ollama本地LLM实践  tofai怎么调整层级顺序 tofai图层上下移动方法【步骤】  AI赋能保险销售:提升邮件营销效果的终极指南  网络安全警钟:揭秘“美足”背后隐藏的危机与防范  扣子AI怎样设置多轮对话逻辑_扣子AI逻辑树搭建与分支设计【教程】  利用 DeepSeek 进行大规模 C++ 代码库审计  Excel AI:5大免费AI功能提升数据分析效率  去哪旅行ai抢票助手怎样添加备选车次_去哪旅行ai抢票助手备选车次设置与切换【攻略】  AI一键生成儿童绘本故事  千问能否生成多语言年终总结_千问多语言翻译与本地化调整【攻略】  智谱AI创意设计怎么用_智谱AI创意设计使用方法详细指南【教程】  如何利用 DeepSeek 进行多轮复杂对话的状态管理  如何利用豆包 AI 快速查询当地生活服务资讯  CallidusAI:提升合同起草效率的智能Word插件指南  v0 Report深度测评:AI文档生成器的优缺点分析与实用指南  AI写作工具检测:学生如何避免学术不端行为  ChatGPT 如何助力建筑承包商?三大实用技巧解析  AI驱动的合同审查:Adobe Acrobat AI助手提升效率与准确性  AI图像生成平台深度对比:Midjourney vs. Stable Diffusion  豆包Ai官方网页版入口地址_豆包Ai官网在线使用入口  豆包Ai在线使用入口_豆包Ai官方网站最新登录地址  tofai网页版官方入口 tofai官网登录网址  Google AI Studio:免费AI视频生成器使用指南  LTX Studio:AI电影制作平台深度评测与应用指南  Lovart AI设计助手:AI驱动设计,零成本开启创意新纪元  AI视频生成器:免费工具,图像转视频和文字转视频  斑马AI能否查看孩子学习报告_斑马AI报告查看与数据解读【方法】 

 2023-04-13

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.