组织|孙胜
制作人| csdn (ID: csdnnews)
最近,英特尔打开了自动代码调试工具ControlFlag的源代码,该工具现在可以通过GitHub获得。
据了解,ControlFlag可以帮助更多的开发人员独立检测代码错误,主要是通过使用AI自动识别软件和固件代码中的错误,从而节省开发人员手动调试的时间。
据悉,英特尔在去年底首次公布了ControlFlag。目前,该系统仅由英特尔内部员工使用,用于自动检测软件开发过程中的异常情况。
来自网络
减少代码调试时间与成本支出
因为代码调试对于程序开发非常重要,所以几乎所有的大型软件都需要进行调试,以最大程度上避免软件错误。
但是对于大多数开发人员来说,这个过程不仅非常耗时,而且大多数调试只能手动完成。因为修复一个软件缺陷可能需要几天、几周甚至几个月的时间,估计高达50%。
软件开发时间浪费在调试程序上。这是因为大多数错误需要语义分析来识别和评估根本原因,即使是最先进的调试系统也不能有效地执行这种分析。
贾斯汀戈特施里奇,英特尔实验室首席人工智能科学家
它还说:“虽然在过去的几十年里,自动调试的研究取得了一些进展,但现有的工具仍然不能完美地发现日益复杂的软件错误。这也是调试仍以人为主要驱动的流程的关键原因。”
此外,调试代码的预算支出也很高。据英特尔官方介绍,2020年,IT行业在调试代码上的支出约为2万亿美元,约占平均IT预算的一半。
“超能的” ControlFlag
据悉,该系统是英特尔机器编程研究(MPR)项目的一部分,该项目的总体目标是通过自动化将软件开发所需的时间减少1000。
时代。例如,Gottschlich团队正在研究的一个领域是最终扩展ControlFlag的能力,以自动修复它检测到的错误。
自去年推出以来,英特尔已经在各种软件系统上测试了机器学习工具,并取得了可喜的成果。英特尔实验室的首席人工智能科学家说:“当我们最初设计该系统时,我们没有想到它会发现高度复杂的缺陷。
贾斯汀戈特施里奇说。“但是,鉴于其自我监控设计,控制标志
甚至我们这些建造它的人也震惊地发现了高度复杂和微妙的软件缺陷。"
英特尔的团队使用了一种“无监督”的学习方法,允许ControlFlag在更广泛的存储库中检测错误。系统从10个
从1亿行未标记的源代码中学习编码模式,使其达到高精度甚至适应开发者的风格,从而区分软件异常和编程语言的风格变化。
ControlFlag适用于任何包含控制结构的编程语言(如C/C),并且ControlFlag可以从未标记的源代码中不断学习。随着新数据的引入,
“进化”,让自己变得更好。虽然它不能自动解决它发现的代码错误,但该工具可以为开发人员提供潜在的修改建议。
Justin Gottschlich还表示,到目前为止,仅在两个专有软件存储库上使用ControlFlag就发现了300个生产质量和部署的程序。
多重缺陷。例如,去年,控制标志以客户端网址(cURL)的名义发布
在的计算机软件项目中检测到代码异常,该项目使用各种网络协议每天传输数据超过10亿次。向cURL团队报告异常后,他们同意控制Flag。
找到并重新设计代码来解决问题。
不断进步的 ControlFlag
由于英特尔团队致力于开发ControlFlag,过去的一年也带来了很多学习点。戈特施里奇
认为需要改进的两个关键领域是减少该工具报告的误报数量和将更高级的语义分析器集成到ControlFlag推理中。
然而,作为一个将成为英特尔机器编程工具包之一的系统,ControlFlag将继续发展。“控制
Flag的进步不太可能停止,”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