代码智能
文章平均质量分 92
Jtag特工
代码和人工智能老兵
展开
-
如何使用机器学习自动修复bug: 数据处理和模型搭建
如何使用机器学习自动修复bug: 数据处理和模型搭建上一篇《如何使用机器学习自动修复bug: 上手指南》我们介绍了使用CodeBERT自动修复bug的操作方法。估计对于很多想了解原理的同学来说,只知道训练的推理的命令太不过瘾了,根本不了解原理,而且也不知道如何去做改进。这一篇我们开始介绍其中的细节。一点点BERT模型的基础知识首先复习一下上篇文章介绍的bug自动修复的原理。收集有bug的代码与修复代码的配对。通过语法解析器变成更通用的抽象bug/修复代码对。通过机器翻译的编码器-解码器结原创 2021-12-23 13:51:09 · 1694 阅读 · 0 评论 -
如何使用机器学习自动修复bug: 上手指南
如何使用机器学习自动修复bug: 上手指南通过机器学习可以自动修复bug? 对于很多同学来说可能这是一个玄幻的话题。究竟靠不靠谱,我们可以自己亲自来试试,每个人都能学会。这个问题说难非常难,说简单也很简单。我们把有bug的代码片断和修复之后的代码片断做成数据集,使用类似机器翻译的技术进行训练。然后我们用训练好的模型去预测新代码如何修复。这个思想和数据集都来自论文《An Empirical Study on Learning Bug-Fixing Patches in the Wild via Neu原创 2021-10-28 20:11:02 · 1053 阅读 · 4 评论 -
使用reveal.js写演示文稿
使用reveal.js写演示文稿用powerpoint或者keynote写演示文稿,对于代码、数学公式等的支持一直是个痛点。而且对于前端同学来说,一身的css功力用不上也是个痛点。对于使用markdown来写文档的同学来说,将文档转成ppt需要重新排版也是件重复性的工作量。于是我们需要一个基于web技术的ppt框架,reveal.js在这个领域成名已久了,而且上个月还有发布新版本,维护得还蛮好,第一步我们就选它了。将reveal.js运行起来首先clone一份reveal.js最新的代码:git原创 2021-07-12 21:49:08 · 1045 阅读 · 1 评论 -
代码智能:问题与解法
代码智能:问题与解法在基于预训练大模型引发自然语言处理革命的今天,代码智能技术也在迅速跟进发展。那么,代码智能主要在做一些什么样的事情呢?可能很多同学会有比较科幻的想法,比如程序员要失业了之类的。但是,其实很多工作并没有那么神秘,非常基础。那么我们用代码智能要解决什么问题呢?判断两段代码是不是实现相似的功能搜索跟当前代码段最相似的代码检测代码是否有bug自动修复代码中的bug给一段代码自动写注释根据文本推荐最相似的代码段根据文本生成代码看了之后是不是觉得更玄幻了?这么困难的问题怎么原创 2021-07-06 14:20:56 · 1280 阅读 · 1 评论 -
Code review是个数学问题:从二向箔说起
Code review是个数学问题:从二向箔说起写代码有两件最重要的事情,一是仰望星空,二是脚踏实地。在搞code review之前,我们先看一张星空的图,梵高的星空:看到了这张星空,不知道读过《三体》的同学是不是联想到了二向箔。即使是没有看过《三体》的同学,对于降维攻击这个词应该也不陌生。二向箔是将三维空间变成二维空间的武器。我们引用一段原文:“两个二维体的结构在星光下清晰地显现出来:在二维化的太空艇,可以看到二维展开后的三维构造,可以分辨出座舱和聚变发动机等部分,还有座舱中那个卷曲的人体原创 2021-06-16 18:20:12 · 321 阅读 · 0 评论 -
关于缺陷自动修复的一些思考
关于缺陷自动修复的一些思考新的财年开始了,每个团队都在做新年的计划。每当做计划,就有对于需求是不是真需求的讨论。但是对于bug自动修复技术来说,从来不需要讨论为什么要做这个事情。需要讨论的从来是如何做到。我用两句话来总结:需求是真需求困难是真困难反映在学术界的论文上,针对bug自动修复和主要相关领域的综述每隔一两年就要来一拨。像潮汐一样,被需求卷起,又被拍散在困难的沙滩上。第一类困难:靠人工写规则为什么走不通?说起修bug,几乎每个开发同学都有话说。要实现bug的自动定位与修复,也基本上原创 2021-04-02 17:39:28 · 984 阅读 · 0 评论 -
软件缺陷智能分析技术(3) - 提升SZZ的准确率
软件缺陷智能分析技术(3) - 提升SZZ的准确率上一节我们介绍了在即时缺陷分析领域里有开创意义的SZZ算法。尽管用直觉都能感受到SZZ算法有诸多需要改进之处,但是目前这仍然是即时缺陷分析的基础方法。这一节我们就讨论如何提升SZZ算法的准确率。细看SZZ首先我们复习一下SZZ算法的内容:第一步,从bug数据库中找到修复的问题第二步,从代码库中找到bug修复的代码改动第三步,针对每一行改动,找到之前的版本中修改这处代码的提交,这个提交在原论文中被称为fix-inducing在开发过程中,有原创 2021-03-18 19:52:46 · 1005 阅读 · 0 评论 -
软件缺陷智能分析技术(2) - SZZ的基本流程
软件缺陷智能分析技术(2) - SZZ的基本流程有了航海图之后,我们就从即时软件缺陷预测开始入手,先用最小的时间去预测下bug发生的可能性。我们先复习下即时软件缺陷预测的地图:SZZ算法要做算法,首先需要有数据。标注数据的方法最早来自SZZ方法,来自论文《When Do Changes Induce Fixes?》,作者是斯里维尔斯基(Jacek Sliwerski), 齐默尔曼(Thomas Zimmermann)和泽勒(Andreas Zeller),取他们三个人姓的首字母,简称SZZ算法。原创 2021-03-17 21:09:44 · 3059 阅读 · 1 评论 -
软件缺陷智能分析技术(1) - 技术地图
软件缺陷智能分析技术(1) - 技术地图随着业务越来越复杂,代码的规模和所需要的人手也在不停地增加,导致成本朝向规模不经济的方向发展。需求推动技术进步,应用各种技术去自动预测、理解、定位、修复bug的综述文章基本上过一两年就来一拨。这其中的相关技术领域也是层出不穷。虽然没有解决的困难和问题不少,而且其中很多一直是老大难问题,但是我们还是要站在巨人肩上出发,并且希望我们的工作也能够为这座大厦添砖加瓦。所以我们先看一张航海图。软件缺陷技术地图从航海图上看,我们有大致三条航路:第一条是从bug本身原创 2021-03-11 16:30:19 · 1307 阅读 · 2 评论