随着软件的重要性越来越突出,开发人员仍然花费大量的时间来修复错误而不是编写代码。事实上,IT行业每年花费的1.25万亿美元的软件开发成本中,约50%用于调试代码1。
随着异构时代的到来,即各种特殊的处理器组合来管理当今海量的数据,管理这些系统所需的软件变得越来越复杂,这使得出现错误的可能性越来越大。此外,很难找到能够正确、高效、安全地为跨体系结构硬件编写代码的程序员,这也增加了代码中难以发现的新错误的可能性。因此,调试代码工作将给开发者和整个行业带来更高的成本。
完全实现的controlflag可以通过自动化繁琐的软件开发工作(如测试、监视和调试)来帮助缓解上述挑战。这不仅可以提高开发人员的工作效率,使他们能够将更多的时间花在创造性上,而且可以解决当前软件开发中最昂贵的问题之一。
controlflag的bug检测功能是通过机器编程实现的,它集机器学习、形式化方法、编程语言、编译器和计算机系统于一体。
具体来说,controlflag通过一个称为异常检测的函数来操作。作为生活在大自然中的人类,我们从观察中学习到一些被认为是“正常”的模式。类似地,controlflag通过学习经验证的示例来检测正常的编程模式,并在代码中发现错误。此外,无论代码使用什么编程语言,controlflag都可以检测到这些异常。
controlflag的无监督模式识别方法的一个主要优点是它可以从本质上学习适应开发人员的风格。在有限的控制工具输入信息需要评估时,controlflag可以识别编程语言中的各种样式,类似于读者对英语中完整单词和缩略语使用差异的认识。
该工具将学习识别和标记这些样式选择,并根据其见解,定制错误识别和建议解决方案,从而使controlflag尽可能避免将两个开发团队之间的风格差异视为代码错误。
Controlflag已经被证明能够检测广泛使用的产品级代码中隐藏的错误,这些代码已经过软件开发人员的审查。例如,在分析curl(一种开源命令行工具,程序员广泛使用它来实现Internet下载)时,controlflag发现了一个以前没有发现的异常,这促使curl开发人员提出了一个更好的解决方案。
英特尔甚至开始在内部评估controlflag的使用,寻找自己的软件和固件产品化过程中的缺陷。这是“英特尔开发人员快速分析”项目的关键组成部分,该项目旨在通过提供专家支持帮助程序员加快速度。