返回

使用 Microsoft 程序图方法从源代码中发现令人头疼的 Bug

人工智能

在过去的五年中,基于深度学习的方法彻底改变了许多应用程序,例如可以理解图像、语音和自然语言的应用程序。对于计算机科学家来说,一个自然而然的问题是:计算机是否学会了理解源代码?乍一看,这似乎是一个微不足道的询问,因为编程语言显然被设计成可以被计算机理解。然而,正如我们将在本文中看到的那样,事实远非如此。

源代码理解是计算机科学中的一项基本任务,涉及根据其源代码确定程序的含义。这对于广泛的应用程序至关重要,包括软件维护、代码审查和程序分析。尽管取得了重大进展,但源代码理解仍然是一项艰巨的任务,特别是对于大型、复杂的程序。

微软最近提出了一种名为程序图的新方法,从源代码中学习。该方法基于这样的观察:源代码可以被视为一个程序图,其中节点表示程序语句,边缘表示控制流。程序图方法将源代码翻译成一种形式化表示,然后使用深度学习算法对此表示进行学习。

程序图方法在源代码理解任务上显示出有希望的结果。在一项研究中,该方法能够以高于现有技术 10% 的准确率检测错误。此外,该方法能够检测以前的技术无法检测到的错误类型。

程序图方法是一个令人兴奋的新进展,它有潜力彻底改变源代码理解领域。该方法具有许多优点,包括:

  • 准确性: 程序图方法已被证明在源代码理解任务上比现有技术更准确。
  • 鲁棒性: 该方法对源代码的噪声和变化具有鲁棒性,这对于大型、复杂的程序非常重要。
  • 效率: 该方法比现有的技术更有效率,这使得它可以应用于大型程序。

程序图方法仍处于早期阶段,但它具有改变源代码理解领域。该方法有可能使程序员能够编写更可靠、更安全的软件。