Intel 发布了 ControlFlag 的源代码,这是一个机器学习系统,用于检测代码中的错误

英特尔亮相 通过广告 与 ControlFlag 研究项目相关的发展, 它旨在创建一个机器学习系统来提高代码质量。

该工具已在 MIT 许可下发布 它的突出之处在于允许基于在大量现有代码上训练的模型,识别用高级语言(如 C/C++)编写的源文本中的各种错误和异常。

系统 它适用于检测代码中的各种类型的问题, 从检测印刷错误和不正确的类型组合,到识别指针中空值的缺失检查和内存问题。

系统通过建立统计模型自行学习 来自 GitHub 和类似公共存储库上发布的现有开源代码数组. 在训练阶段,系统确定典型模板 在代码中构建结构并在这些模板之间构建连接的句法树,反映程序中代码执行的流程。 从而形成了参考决策树,它结合了所有分析源文本的开发经验。

为了让更广泛的软件开发社区更容易使用 ControlFlag,英特尔很高兴地宣布 ControlFlag 现在是开源的,可以通过 https://github.com/IntelLabs/control-flag 访问。 我们很高兴为开发人员提供在其上进行开发的机会,并了解利用这一极具价值的创新技术还能做什么。

自推出以来,ControlFlag 已在生产级软件和广泛使用的开源软件系统中进行了测试。 例如,去年,ControlFlag 在客户端 URL (cURL) 中发现了代码异常,这是一个每天使用各种网络协议传输数据超过 XNUMX 亿次的计算机软件项目。 在向 cURL 团队报告异常后,他们同意 ControlFlag 的发现并随后修补了他们的代码。

对被测代码执行类似的定义模式的过程,将其与参考决策树进行比较。 与相邻分支的巨大差异表明正在验证的模式中存在异常。 该系统不仅允许识别模板中的错误,还允许提出解决方案。 例如,在解析代码片段“if (x = 7) y = x;”时系统确定“if”语句中一般使用结构“variable == number”来比较数值,因此“if”语句中的“variable = number”提示很可能是排版错误造成的。

传统的静态分析器会检测到这样的错误,但与它们不同的是,ControlFlag 不应用开箱即用的规则,其中很难预见所有可能的选项,而是从各种使用的统计数据开始在大量项目中。

作为一项实验, 在 cURL 实用程序的源代码中使用 ControlFlag 时, 经常 被引用作为例子 经过验证的高质量代码静态分析器 在使用结构元素“s-> keepon”时发现了一个无意的错误, 它具有数字类型,但与布尔值 TRUE 进行了比较。

在 OpenSSL 代码中,除了上述“(s1 == NULL) ∧ (s2 == NULL)”的问题外,还检测到表达式“(-2 == rv)”中的异常,这至少是一个错字.

另据报道,使用 ControlFlag 可以识别非特定专有软件中的数百个错误,从而导致崩溃和内存问题。

最后 如果您有兴趣了解更多有关它的信息,您可以查看详细信息 在下面的链接中。 对于那些有兴趣能够查看源代码、获取它或将其克隆到存储库中的人,他们可以从 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。