arrow
返回

Declarative static analysis for multilingual programs using CodeQL

delete2023-03-09
delete0
PRE
AI
DOI:10.1002/spe.3199delete
delete原文链接
delete原文求助
delete分享
delete收藏
摘要

摘要

En 中文
摘要声明式静态程序分析已成为一种广泛使用的程序分析技术。声明式静态分析器执行三个步骤:从程序源代码创建事实数据库、通过规则评估生成新事实,以及通过查询系统在事实之上运行查询以提取与特定属性相关的所有信息。声明式静态分析器可以通过仅修改新语言的数据库和规则,轻松支持多种编程语言。由于查询系统独立于编程语言,因此它们可以重用于新语言。然而,即使声明式分析器支持多种编程语言,目前也不支持对使用两种或多种编程语言编写的多语言程序进行分析。我们提出了一种系统化方法,通过扩展支持多种语言的声明式静态分析器,使其也能支持多语言程序。主要思路是重用分析器现有的组件。我们的方法首先生成一个合并的事实数据库,由多个逻辑语言空间组成。它允许现有的语言特定规则从相应的语言空间中的事实推导出对应语言的新事实。然后,它定义语言互操作规则以处理语言互操作语义。最后,它利用相同的查询系统获取分析结果,并利用语言互操作语义。我们通过扩展CodeQL开发了一个概念验证的声明式静态分析器,用于多语言程序,该分析器能够跟踪跨语言边界的数据流。我们的评估表明,该分析器成功跟踪了Java-C和Python-C语言边界的跨语言数据流,并检测到了真实世界中多语言程序中的实际互操作错误。

期刊

暂无期刊信息

机构

暂无机构信息
引用论文

引用论文

暂无论文信息