整理 | 孙胜

出品 | CSDN

近日,英特尔开源了自动代码调试工具 ControlFlag 源代码,ControlFlag 源码现在可通过 GitHub 获得。

据了解,ControlFlag 可用来帮助更多开发者自主检测代码错误,主要利用 AI 自动识别软件和固件代码中的错误,为开发人员节省手动调试时间。

据悉,英特尔于去年年底首次宣布 ControlFlag,目前该系统只有英特尔内部人员使用,用来自动检测软件开发过程中的异常情况。

来源于网络

减少代码调试时间与成本支出

由于代码调试对于程序开发至关重要,几乎所有的大型软件都需要调试,才能最大程度上避免软件出错。

但是对于绝大多数开发人员来说,这个过程不仅非常耗时,而且大部分调试只能手工作业。因为修复一个软件缺陷可能需要几天、几周甚至几个月的时间,据估计,多达 50% 的软件开发时间浪费在调试程序上。这是因为大多数错误都需要语义分析来识别、评估根本原因,即使是最先进的调试系统也无法有效地执行这种分析。

英特尔实验室首席人工智能科学家 Justin Gottschlich 也表示:“尽管在过去的几十年里,研究自动化调试方面取得了部分进展,但现有工具仍无法完美发现日益复杂的软件错误。这也是调试仍然主要由人为驱动的过程的一个关键原因。”

除此之外,调试代码的预算支出也很高。据英特尔官方介绍,2020 年 IT 行业在与调试代码相关的环节上大约花费了 2 万亿美元,约占 IT 平均预算的一半。

“超能的” ControlFlag

据悉,该系统是英特尔机器编程研究 (MPR) 项目的一部分,该项目的总体目标是通过自动化有望将开发软件所需的时间减少 1,000 倍。例如,Gottschlich 的团队正在研究的领域之一是最终扩展 ControlFlag 的能力,以自动修复它检测到的错误。

自去年推出以来,英特尔已在各种软件系统上测试了该机器学习工具,并取得了可喜的成果。“当我们最初设计系统时,我们没有预料到它能够发现高度复杂的缺陷,”英特尔实验室首席人工智能科学家 Justin Gottschlich 表示。“然而,鉴于其自我监督的设计,ControlFlag 能够发现高度复杂、细微的软件缺陷,甚至连我们这些构建它的人都感到震惊。”

英特尔的团队通过使用一种“无监督”的学习方法,以允许 ControlFlag 检测更广泛的存储库中的错误。该系统从超过 10 亿行未标记的源代码中学习编码模式,使其能够达到很高的准确性,甚至可以适应开发人员的风格,以区分软件异常和编程语言的风格变化。

ControlFlag 适用于任何包含控制结构的编程语言(如 C/C++),而且ControlFlag 能够不断地从未标记的源代码中学习,随着新数据的引入而 “进化”,使自己变得更好。虽然它还不能自动解决它所发现的代码错误,但该工具可以为开发人员提供了潜在的修改建议。

Justin Gottschlich 还表示,目前为止仅在两个专有软件存储库上使用 ControlFlag,就发现了生产质量、已部署程序中的 300 多个缺陷。例如,去年 ControlFlag 在名为 Client URL (cURL) 的计算机软件项目中检测到代码异常,该项目每天使用各种网络协议传输数据超过 10 亿次。在向 cURL 团队报告异常后,他们同意 ControlFlag 的发现并重新设计代码以修补问题。

不断进步的 ControlFlag

随着英特尔团队致力于开发 ControlFlag,过去的一年也带来了相当多的学习点。Gottschlich 认为,需要改进的两个关键领域是减少该工具报告的误报数量,以及将更先进的语义分析器集成到 ControlFlag 的推理中。

然而,作为一个将成为英特尔机器编程工具套件之一的系统,ControlFlag 将继续发展。“ControlFlag 的进步不太可能停止,”Gottschlich 强调。“这主要是因为随着软件编程语言、硬件描述语言和计算设备的发展,ControlFlag 也需要发展以跟上它们的步伐。”

与此同时,英特尔的 MPR 团队正在开展一些专注于简化软件开发的项目。例如,去年该公司还发布了一款与麻省理工学院实验室共同开发的工具,该工具可以研究代码片段以了解软件打算做什么。该系统称为 MISIM(机器推断代码相似性),它使用预先存在的代码目录来理解新算法背后的意图,并通过建议其他编程方法或提供使代码更高效的选项来帮助工程师开发软件。

Gottschlich 预计 MISIM 有一天会与 ControlFlag 一起工作。“当正确想法融合在一起时,我们设想了一个更强大的新系统,该系统将能够检测 ControlFlag 目前可以检测到的所有缺陷,以及由于潜在的复杂性而目前无法检测到的数百种缺陷。”Gottschlich表示。

对此,你怎么看,欢迎留言评论。

参考链接:

https://www.zdnet.com/article/developers-intels-automated-debugging-tool-controlflag-is-now-open-source/

GitHub地址:

https://github.com/IntelLabs/control-flag

资讯

AI 考古比胡八一更高效

资讯

阿里云投入 20 亿发力操作系统

资讯

阿里发布云芯片倚天710

技术

ST-GCN 实现人体姿态行为分类

分享

点收藏

点点赞

点在看

AI 帮忙找 Bug ,英特尔开源代码编程工具 ControlFlag相关推荐

  1. AI 帮忙找 Bug,英特尔开源代码编程工具ControlFlag

    近日,英特尔开源了自动代码调试工具 ControlFlag 源代码,ControlFlag 现在可通过 GitHub 获得. 据了解,ControlFlag 可用来帮助更多开发者自主检测代码错误,主要 ...

  2. AI规模化落地,英特尔至强的七重助力

    当今时代,各行各业与人工智能(AI)加速融合,通过智能化创新来寻求业务转型升级.与为数不多的顶级AI研发公司相比,大多数传统行业或企业有着更丰富的 AI 应用场景,推动着规模化的AI应用落地,其AI应 ...

  3. 从人工智能到云,英特尔开源技术推动软件栈创新

    戳蓝字"CSDN云计算"关注我们哦! 2019年英特尔开源技术峰会(OSTS)   [CSDN记者现场报道]5月14-16日,英特尔主办一年一度的开源技术峰会(OSTS).该峰会源 ...

  4. 从芯片到 AI,52 岁英特尔的蜕变!

    封图 | CSDN 付费下载自视觉中国 习惯是用来养成的,但往往也是用来打破的.从微处理器起家,英特尔在 52 年的历程中奠定及巩固了其在芯片领域的地位,以至于时下但凡提及芯片设计.工艺等关键词之际, ...

  5. 英特尔开源计算机视觉数据标签工具CVAT,加速数据注释

    训练深度神经网络需要大量数据.另外,如果数据没有标签,那这些数据就没有多大用处,AI架构也无用武之地,但处理包含数十万.数百万对象的语料库非常耗时. 为了减轻数据注释器和数据科学家的负担,英特尔开源了 ...

  6. 英特尔开源WebRTC开发套件OWT

    为了抢占实时视频的巨大市场,英特尔开源了WebRTC开发套件,并将其命名为Open WebRTC Toolkit (OWT).由于实时视频编码.转码需要大量的计算资源,Open WebRTC Tool ...

  7. webrtc 代码_英特尔开源WebRTC开发套件OWT

    为了抢占实时视频的巨大市场,英特尔开源了WebRTC开发套件,并将其命名为Open WebRTC Toolkit (OWT).由于实时视频编码.转码需要大量的计算资源,Open WebRTC Tool ...

  8. 英特尔 开源降噪库 api_Google的新操作系统,英特尔的开源VR耳机以及更多新闻

    英特尔 开源降噪库 api 在本周的开源新闻摘要中,我们看一下Google的新开源操作系统,Intel的VR HoloLens设备,Microsoft开源PowerShell等. 2016年8月14日 ...

  9. 英特尔开源OpenGL驱动快于苹果驱动

    英特尔的开源Linux OpenGL驱动已经比苹果自己开发的OS X OpenGL驱动更快.Phoronix在硬件规格基本相同的 Mac Mini(双核Intel Core i5,2GB内存,OS X ...

最新文章

  1. php7 ext skel_基于PHP7的PHP扩展开发之一(hello word)
  2. Nginx + PHP/PHP-FPM安装配置示例
  3. CPU和微架构的概念
  4. 关于CKeditor的个性应用设置 转
  5. linux-查看文件类型-看本质-file
  6. 移动架构-迭代器模式
  7. Webservice常用接口大全
  8. TensorFlow 变量共享: get_variable
  9. 求数列的最大子段和java_十大经典排序算法(Java版本)
  10. 基于内容和用户画像的个性化推荐
  11. 计算机同S7-300PLC通讯,西门子S7-300 PLC与Intouch的通讯连接方法
  12. Jmeter怎么连接数据库
  13. 《给QTreeView表项添加CheckBox和图标》:系列教程之七
  14. 如何在Edge中添加兼容性站点?
  15. 横版射击,王者归来|Cocos精品《合金弹头OL》
  16. 走进梦龙冰淇淋的生产线 揭晓“灯塔工厂”背后的秘密
  17. shell脚本输入密码
  18. 关于对比损失(contrasive loss)的理解(相似度越大越相似的情况):
  19. Stetho调试神器使用
  20. 使用计算机开机按啥建,学生计算器第一次使用应该如何开机

热门文章

  1. 精通mysql_《深入精通Mysql(五)》实战:Mysql实现主从复制
  2. Azure编配器简化有状态无服务器工作流的创建
  3. 分析PHP中单双引号的误区和双引号小隐患
  4. python tar.gz格式压缩、解压
  5. WSFC2016 SMB多通道与网络调校
  6. Linux_DNS服务器
  7. Android入门——电话拨号器和4种点击事件
  8. MVVM开发模式MVVM Light Toolkit中使用事件和参数传递
  9. 文本分类step by step(二)
  10. NHibernate和Cuyahoga(二)(翻译):