答案是否定的——既有工具的问题仍会重现。但Checked C的设计支持渐进式转换:允许函数部分参数/变量使用检查指针(获得安全检查),其余保持传统指针;还支持通过互操作类型为代码区域(如标准库)提供检查类型接口。仅使用检查指针的代码区域可确保空间安全——运行时安全问题不会归咎于该区域代码。这种机制使得转换工具无需完美:可输出部分注释代码,开发者再处理工具无法处理的部分。
本研究探讨如何半自动化地将现有C程序移植到Checked C。我们观察到移植过程本质包含两方面:重构代码以符合Checked C规范,以及为代码添加Checked C指针类型注释。为此开发的3C(Checked C转换器)工具自动化注释部分,并指导开发者进行必要重构。我们建立了3C运行与人工重构交替的两阶段工作流。
3C采用两种创新静态分析算法:typ3c(确定可转换的遗留指针)和boun3c(推断arr/ntarr指针边界)。实验表明,这种结合自动化分析与人工指导的渐进式方法,能有效提升C代码的内存安全性,同时保持合理的性能开销和开发成本。