中文

面向可移植性的宏使用语义分析

软件工程 2024-01-22 v1

摘要

C 是一种不安全的语言。研究人员一直在开发工具,以将 C 代码移植到更安全的语言,如 Rust、Checked C 或 Go。然而,现有工具通常先对源文件进行预处理,然后对生成的代码进行移植,这会导致生成的代码难以辨认且丢失宏抽象。为了保留宏的使用,移植工具需要能够理解宏行为以将其移植到等价结构的分析。但是宏的语义与典型函数不同,无法通过简单的语法转换进行移植。我们引入了首个用于分析宏使用可移植性的综合框架。我们将宏行为分解为 26 个细粒度属性,并实现了一个名为 Maki 的程序分析工具,该工具在真实代码中识别这些属性的准确率达到 94%。我们将 Maki 应用于包含总计 86,199 个宏定义的 21 个程序。我们发现,真实世界中的宏比以往认知的更具可移植性。超过三分之一(37%)的宏易于移植,且 Maki 为移植更复杂的宏提供了提示。与以往工作相比,我们平均发现了 2 倍多的易移植宏,在最佳情况下甚至多达 7 倍。在 Maki 输出的指导下,我们在四个真实程序中发现并手动移植了宏。我们向 Linux 维护者提交了补丁,对 11 个宏进行了转换,其中 9 个已被接受。

关键词

引用

@article{arxiv.2401.10422,
  title  = {Semantic Analysis of Macro Usage for Portability},
  author = {Brent Pappas and Paul Gazzillo},
  journal= {arXiv preprint arXiv:2401.10422},
  year   = {2024}
}

备注

12 pages. 4 figures. 2 tables. To appear in the 2024 IEEE/ACM 46th International Conference on Software Engineering (ICSE '24), April 14-20, 2024, Lisbon, Portugal. See https://zenodo.org/doi/10.5281/zenodo.7783131 for the latest version of the artifact associated with this paper