文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何利用机器学习进行静态分析

2024-12-03 14:58

关注

[[360128]]

其中一些应用尝试取得了一定的成功:Facebook、亚马逊和Mozilla公司现在都提供了某种形式的机器学习驱动的静态代码分析器。但是,正如了解机器学习基础的任何人都知道的那样,这些方法也存在一些固有的局限性。

机器学习静态分析器

在过去的几年里,人们看到市场上出现了大量的机器学习驱动的静态分析器。其中一些是由热心的业余爱好者开发的;另一些是由科技巨头开发的,Facebook、亚马逊和Mozilla现在都在提供这样的工具,而且在发布每一个版本时都承诺会彻底改变开发过程。

实际上,这些工具在搜索漏洞和错误时为开发人员节省了时间。以下了解一下市场上主流的一些机器学习静态分析器:

1.DeepCode

DeepCode可能是Java、JavaScript和Python最著名的漏洞搜索程序。DeepCode还提供了一个机器学习模块,开发人员称其为“开发人员的语法”。

DeepCode的机器学习模块通过查看开发人员在处理大量项目时所做的大量更改来工作。通过学习,DeepCode可以为开发人员提供针对他们正在解决的问题的建议解决方案,并捕获以前出现的错误。

DeepCode仍然包含一些限制。该系统的开发者声称,自从2018年起将支持采用C ++语言,开发人员可以通过其插件使用C ++和DeepCode。

2.Infer

Infer已经存在了将近十年,并于2013年被Facebook公司收购,作为基于机器学习原理的静态代码分析器的基础。由于多种原因,Infer作为静态分析器已变得非常流行:它支持多种语言,并且可以与AWS和Oculus结合使用。最重要的是,该项目的源代码于2015年开放,从而推动了项目的快速发展。

尽管它很受欢迎,即使是使用Infer的开发人员也承认,即使在Facebook项目中,它生成的警告中也只有80%是有用的。它将发现指针取消引用和内存泄漏错误,但是仍然存在Infer无法检测到的错误类别,包括类型转换异常和未验证的数据泄漏。

3.Source{d}

Source {d}是一个开源静态代码分析器和开发管理器,它不仅致力于为管理者提供有关特定软件项目进度的信息,而且还为开发人员提供了许多工具。作为静态应用程序安全测试协议的一部分,它可以执行许多有用的SAST功能,其中包括分析字节码和二进制文件以及应用程序源代码中的漏洞。

该软件的主要优点之一是其源代码是完全透明的,并且可以在GitHub存储库中使用,从而使开发人员可以从根本上构建自己的机器学习增强型代码分析器。

这就是说,Source {d}在隔离代码错误方面非常有限。它使用Babelfish服务将特定的代码实例转换为通用语法树,并从那里可以简化和建议对代码的编辑,使其更易于使用。在使用代码时,这可以为开发人员节省大量的时间,但这并不是一个完整的静态分析器。

其他的静态分析器

除了这三种解决方案之外,还有一些新兴的静态分析器有望实现。Clever-commit是Mozilla公司的一个项目,但是在细节方面仍然令人沮丧。CodeGuru是亚马逊公司的机器学习增强型静态代码分析器,但目前仅适用于Java。Embold是一个用于错误分析的启动平台,提供可视化的代码依存关系,但在可使用的语言方面也受到限制。

所有这些系统对于开发人员都非常有用,但只有在将它们与特定语言结合使用的情况下,并且仅在经过培训以实现特定结果的地方,这些功能才是有用的。换句话说,支持机器学习的静态代码分析器(一种可以在多种语言和环境中捕获错误和故障的多功能工具)的承诺尚未实现。

开发爱好者会说这只是因为机器学习驱动的静态分析器仍需要进一步开发。然而,重新考虑机器学习系统的实际工作方式表明,这些问题可能会持续存在一段时间。

结论

最后,人们要了解的是。机器学习技术仍处于起步阶段,并可能在许多开发领域中找到许多有用的应用程序。但是需要知道,机器学习技术仍然很难改变静态分析工具的构建方式。

从最根本的角度来说,这是因为静态分析与机器学习平台本质上是不同的。与用于运行人工智能和机器学习系统的模糊的概率逻辑不同,错误隔离和修复需要精确的、可重复的方法。最终人们不希望静态分析器根据其他示例指出代码可能出错,并且想确切地知道它是否能够工作。

遗憾的是,只有通过明确编码的分析器才能实现这种确定性。至少现在是这样。

来源:企业网D1Net内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯