当前位置: 首页 > 编程日记 > 正文

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

28483af215d0f0f019cb093d6de4b83e.gif

整理 | 孙胜

出品 | CSDN

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

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

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

2b96e862824347161f624c0456d5c3c4.gif

来源于网络

66667167ca30540f6d670dc24add187e.png

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

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

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

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

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

ba293abb1b6cf45fbce8e8e3357084a2.png

“超能的” 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 的发现并重新设计代码以修补问题。

d075cbabe3b3cb37e0e07db3538394fa.png

不断进步的 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

da9f700bb33626d116de4f437068715d.gif

4c04de7679b6f0782c99bd5811eb9dab.png

资讯

AI 考古比胡八一更高效

资讯

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

资讯

阿里发布云芯片倚天710

技术

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

a8ec229213f7038ced9f39f72cf78479.png

分享

a8956dfbb9865466c0c4e4b943249618.png

点收藏

14000d149186c591d3c2ceeb41c8341b.png

点点赞

4b2913dc3001fcfd90e800df547a0047.png

点在看

相关文章:

一次心惊肉跳的服务器误删文件的恢复过程

经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。事故背景安排一个妹子在一台生产服务器上安装Oracle,妹子边研…

【vue】vue中ref用法

1.获取当前元素&#xff1a; 例子&#xff1a; <div class"pop pos-a" :style"{ left: pop_x px ,top: pop_y px}" ref"refName"><ul><li>编辑部门</li><li click"append()">添加子部门</li>&…

使用Gearman做分布式计算

通常&#xff0c;多语言多系统之间的集成是个大问题&#xff0c;一般来说&#xff0c;人们多半会采用WebService的方式来处理此类集成问题&#xff0c;但不管采用何种风格的WebService&#xff0c;如RPC风格&#xff0c;或者REST风格&#xff0c;其本身都有一定的复杂性。相比之…

把数据库中有关枚举项值的数字字符串转换成文字字符串

原文:把数据库中有关枚举项值的数字字符串转换成文字字符串标题可能无法表达我的本意。比如&#xff0c;有这样一个枚举&#xff1a; public enum MyChoice{MyFirstChoice 0,MySecondChoice 1,MyThirdChoice 2} 数据库中&#xff0c;某表某字段保存值为"0,1,2"&…

又被 AI 抢饭碗?2457 亿参数规模,全球最大中文人工智能巨量模型 “源1.0”正式开源...

作者 | 伍杏玲 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;输入&#xff1a;昔我往矣&#xff0c;杨柳依依。今我来思&#xff0c;雨雪霏霏。行道迟迟&#xff0c;载渴载饥。我心伤悲&#xff0c;莫知我哀&#xff01;&#xff08;以战争为题写一首诗&#xff09…

Java架构演进之路

2019独角兽企业重金招聘Python工程师标准>>> hello 转载于:https://my.oschina.net/mrpei123/blog/1605391

F5与NetScaler比较

F5 是基于Linux的&#xff0c;NetScaler 是基于BSD的。F5 的四层走的是硬件芯片&#xff0c;七层走的是软件&#xff0c;NetScaler 全部走的是软件。我测试的性能也是 F5比NetScaler强&#xff0c;在均不使用压缩的情况下&#xff0c;NetScaler比F5消耗更大的带宽。

这个机器狗引起网友争议,「持枪机器狗」射程达1200米

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 如果提起自动机器狗&#xff0c;首先想到的应该是波士顿动力&#xff0c;自波士顿动力 Spot 推出以来&#xff0c;机器狗就解锁了很多应用场景。波士顿动力一直都禁止将机器狗武器化。 但是&#xff0c…

nutch如何发布插件

为什么80%的码农都做不了架构师&#xff1f;>>> 1.修改插件&#xff0c;在原有的插件上修改&#xff0c;比如parse-html插件上修改。 2.修改插件之后&#xff0c;把第三方的包放到/nutch/runtime/local/lib下&#xff08;经测试&#xff0c;只有在此目录下&#xf…

第 7 章 项目运作

comments powered by Disqus 原文出处&#xff1a;Netkiller 系列 手札 本文作者&#xff1a;陈景峯 转载请与作者联系&#xff0c;同时请务必标明文章原始出处和作者信息及本声明。

干货!整理了50个 Pandas 高频使用技巧,强烈建议收藏!

作者 | 俊欣来源 | 关于数据分析与可视化今天小编来分享在pandas当中经常会被用到的方法&#xff0c;篇幅可能有点长但是提供的都是干货&#xff0c;读者朋友们看完之后也可以点赞收藏&#xff0c;相信会对大家有所帮助&#xff0c;大致本文会讲述这些内容DataFrame初印象读取表…

CentOS的Gearman安装与使用无错版

通常&#xff0c;多语言多系统之间的集成是个大问题&#xff0c;一般来说&#xff0c;人们多半会采用WebService的方式来处理此类集成问题&#xff0c;但不管采用何种风格的WebService&#xff0c;如RPC风格&#xff0c;或者REST风格&#xff0c;其本身都有一定的复杂性。相比之…

putty或xshell上用vi/vim小键盘无法使用的解决方法

在putty或xshell上用vi/vim的时候&#xff0c;开NumLock时按小键盘上的数字键并不能输入数字&#xff0c;而是出现一个字母然后换行(实际上是命令模式上对应上下左右的键)。解决方法&#xff1a;putty&#xff1a;选项Terminal->Features里&#xff0c;找到Disable applicat…

Sqoop数据分析引擎安装与使用

Sqoop数据分析引擎安装与使用>什么是Sqoop ?Sqoop 是一个开源的数据处理引擎&#xff0c;主要是通过 JDBC 为媒介&#xff0c; 在Hadoop&#xff08;Hive&#xff09;与 传统的关系型数据库(Oracle, MySQL,Postgres等)间进行数据的传递HDFS Hive HBase < JD…

《独辟蹊径品内核:Linux内核源代码导读(china-pub首发)》的前言

我觉得作者讲的学习方法很好值得看看。 下面是本书作者所写&#xff1a; 几乎每一个操作系统内核的学习者在初学阶段都会感觉到难以入门。这是由于内核涉及到知识面非常广泛&#xff0c;需要学习者从根本上掌握大量的知识&#xff0c;这包括&#xff1a;程序编译&#xff0c;链…

95后架构师晒出工资单:狠补了这个,真香...

经常会有很多人说&#xff1a;“不是谁都可以成为架构师的。”“我们公司用的就是那点东西&#xff0c;不需要会太多。”“技术够用就行了。”…其实他们说的不错&#xff0c;但我也总觉得&#xff0c;程序员可以是一个非常热血的职业。即使不是人人都可以成为架构师&#xff0…

趣味图形之 余弦函数cos与直线相交(另一种相交)

高中的时候做的&#xff0c;前两天看了看&#xff0c;挺好玩的。只想说&#xff0c;当初的代码风格&#xff0c;&#xff0c;&#xff0c;&#xff0c;咳咳&#xff0c;算不上风骚&#xff01;#include <math.h> #include <stdio.h> int main (void) {double y;int…

AI时代:推荐引擎正在塑造人类

We shape our tools and afterwards our tools shape us. ------Marshall McLuhan 麦克卢汉说&#xff1a;“我们塑造了工具&#xff0c;反过来工具也在塑造我们。” 我本人不反感AI&#xff0c;也相信人工智能会开创一个伟大的时代&#xff0c;但是我们要思考一些东西&#xf…

mogileFS 分布式存储-安装手记

环境是centos 呃,装个玩意儿走了好多弯路,以为依赖太多的包河模块,搞了很久. 后来发现其实安装可以简化的,yum没有mogilefs,可以通过epel来安装. 第一种安装方法,用epel # rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm # yum…

英特尔成立物联网视频事业部,这届IESS还揭露了哪些信息?

随着5G技术的深入发展与落地&#xff0c;物联网已然成为当下炙手可热的技术话题。当万物相互连接&#xff0c;一个潜力丝毫不亚于互联网的市场就此诞生。驱动互联网的可能是网络&#xff0c;可能是算力&#xff0c;也可能是无数个开发者的开源和共享。那么驱动物联网的力量究竟…

JS数字转换成货币格式

2019独角兽企业重金招聘Python工程师标准>>> // Extend the default Number object with a formatMoney() method:// usage: someVar.formatMoney(decimalPlaces, symbol, thousandsSeparator, decimalSeparator)// defaults: (2, "$", ",", &q…

CentOS 部署 flask项目

原文地址 最近在学习 python&#xff0c;使用 flask 实现了个个人博客程序&#xff0c;完了想部署到服务器上。因为是新手&#xff0c;一路磕磕绊绊最终把它基本搞定。网上资料对新手感觉都不太友好&#xff0c;都是零零碎碎的&#xff0c;所以我整理了一下&#xff0c;一方面作…

Linux系统JDK安装和配置

以下步骤均为root登录状态下进行执行。 一、卸载JDK Linux会自带JDK&#xff0c;如果不使用自带版本的话需要卸载。 1、卸载系统自带的jdk版本 查看自带的jdk #rpm -qa | grep gcj 看到如下信息&#xff1a; libgcj-4.1.2-44.el5 java-1.4.2-gcj-compat-1.4.2.0-40jpp.1…

4000字,详解 Python 操作 MySQL 数据库!

作者 | 黄伟呢出品 | 数据分析与统计学之美本文的重点&#xff0c;就是教会大家&#xff0c;如何用Python来操作MySQL数据库。1. 通用步骤其实&#xff0c;这里有一个通用步骤&#xff0c;都是写死了的&#xff0c;大家照做就行。# 1. 导入相关库 import pymysql# 2. 链接MySQL…

php跨域共享session

、 $gb_DBHOSTname "127.0.0.1"; //主机的名称或是IP地址 02 $gb_DBname "dbname"; //数据库名称 03 $gb_DBuser "username"; //数据库用户名称 04 $gb_DBpass "pwd"; //数据库密码 05 $gb_COOKIE_DOMAIN .a.com; 06 $SESS_DBH …

centos6 防火墙iptables操作整理

使用语句 前言: iptables的启动文件位置再: /etc/init.d/iptables , srevice iptables调用的就是这里的执行文件 查看防火墙状态 service iptables status开启防火墙 service iptables start 关闭防火墙 service iptables stop永久关闭防火墙(开机不启动) chkconfig i…

分布式计算开源框架Hadoop入门实践

在SIP项目设计的过程中&#xff0c;对于它庞大的日志在开始时就考虑使用任务分解的多线程处理模式来分析统计&#xff0c;在我从前写的文章《Tiger Concurrent Practice --日志分析并行分解设计与实现》中有所提到。但是由于统计的内容暂时还是十分简单&#xff0c;所以就采用M…

网络配置文件、命令详解

一、网络服务、配置文件二、ifconfig常用命令三、route常用命令四、ip命常用命令五、其他一、网络服务、配置文件修改网络服务配置文件不会立即生效&#xff0c;重启网络服务或主机后生效且永久有效1、配置文件1.1、网络配置文件&#xff1a;/etc/sysconfig/network[rootTESTHO…

面了一个大佬,一看就背了很多面试题

2021都说工作不好找&#xff0c;其实也是对开发人员的要求变高了。正好前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成一份PDF文档&#xff08;1000道高频题&#xff09;&#xff0c;同时也整理一些图文解析及笔记。今天在这免费分享给大家&#xff0c;希望大…

swift的特点

swift与OC的区别&#xff1a; swift是一门强语言&#xff0c;而OC是一门弱语言。强语言比弱语言更加严谨 每写一行代码系统都会自动检测是否有错误&#xff0c;这样就减少了运行后出错的可能。swift支持开源&#xff0c;所以可以引用到其他语言开发的项目中&#xff0c;OC是闭源…