← 最新论文
💻 computer science

MISRust: Mapping MISRA-C++ Coding Guidelines to the Rust Programming Language

本文系统地将 179 条 MISRA C++ 2023 指南映射到 Rust 编程语言,按适用性对其进行分类,以展示 Rust 的设计如何自动强制执行近半数规则,同时为其余指南提供具体适配方案并识别差距,从而支持安全关键系统的开发。

原作者: Marius Molz, Niels Schneider, Sven Lechner, Stefan Kowalewski, Alexandru Kampmann

发布于 2026-05-25
📖 1 分钟阅读☕ 轻松阅读

原作者: Marius Molz, Niels Schneider, Sven Lechner, Stefan Kowalewski, Alexandru Kampmann

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在建造一台高风险机器,比如自动驾驶汽车或医疗设备。你无法承受哪怕一颗螺栓松动或一根电线短路。几十年来,使用C++编程语言构建这些机器的工程师们一直遵循着一本庞大而严格的规则手册,名为MISRA。你可以将 MISRA 想象成一本 179 页的“安全手册”,其中规定着诸如“切勿这样做”、“务必那样做”以及“如果你触碰这个特定部件,就必须佩戴头盔”之类的条款。

现在,一种名为Rust的全新、更安全的语言已经问世。Rust 就像一个超先进的构建套件,仅凭其设计本身就能自动防止许多常见错误(例如螺栓脱落或电线短路)。由于 Rust 在设计上就极为安全,工程师们开始将其用于那些同样高风险的机器。

问题所在:
旧的安全手册(MISRA)是为 C++ 编写的。它包含了一些 Rust 甚至都不存在的方面的规则,同时也遗漏了 Rust 以不同方式处理的内容。如果你试图用旧手册来指导新套件,最终会得到大量令人困惑且不必要的规则。

解决方案(本文的使命):
本文的作者扮演了翻译员和安全检查员的角色。他们逐条审视了旧 C++ 手册中的全部 179 条规则,并问道:“这条规则对 Rust 是否仍然有意义?”

他们建立了一个新系统,将这些规则归入六个不同的类别

  1. “垃圾”箱(不适用): 这些是关于 Rust 中根本不存在的事物的规则。
    • 类比: 想象一条规则说:“不要使用马车。”如果你驾驶的是特斯拉,这条规则就毫无用处。你没有马,所以无需为此担忧。约 32% 的旧规则属于此类。
  2. “魔法”箱(已自动满足): 这些是 Rust 自动强制执行的规则。
    • 类比: 想象一条规则说:“不要让汽车驶下悬崖。”在 Rust 中,汽车 literally 无法驶下悬崖,因为在你检查地图之前,方向盘是被锁死的。这条规则依然成立,但你无需将其写下来,因为汽车的设计使其不可能被违反。约 30% 的规则属于此类。
  3. “仍需”箱(安全 Rust 中必需): 这些是关于通用常识的规则,Rust 无法自动修复。
    • 类比: 即使拥有一辆完美的汽车,你仍然需要一条规则说:“不要在困倦时驾驶。”Rust 能防止机械故障,但无法阻止困倦的司机做出错误决定。即使使用 Rust 的“安全”版本,约 12% 的规则仍然需要。
  4. “危险区”箱(非安全 Rust 中必需): Rust 有一个特殊的“紧急情况破窗”模式,称为非安全(Unsafe)。这允许你绕过安全锁以执行强大且底层的操作。
    • 类比: 如果你决定拆掉汽车的安全锁去赛车,你突然需要所有那些旧的安全规则。本文发现,有 36 条原本由 Rust 安全机制自动处理的规则,一旦使用这种“非安全”模式,会再次变得至关重要。
  5. “翻译”箱(需要调整): 有些规则涉及两种语言中都存在但运作方式不同的概念。
    • 类比: 一条规则可能说:“不要用螺丝刀敲钉子。”在 Rust 中,你根本不使用螺丝刀;你使用专用工具。其意图(不要使用错误的工具)是相同的,但具体指令需要重写以适应 Rust 的工具。约 6% 的规则需要这种类型的翻译。
  6. “缺失”箱: 本文指出,存在一些安全空白,Rust 需要新的规则,而这些规则在旧手册中尚不存在。

主要结论:

  • Rust 是游戏规则改变者: 由于 Rust 构建得极为安全,近**61%**的旧 C++ 安全规则要么变得不必要,要么已被语言本身自动处理。这意味着未来 Rust 的安全手册可以短得多,也更容易遵循。
  • “非安全”的陷阱: 如果你使用 Rust 的“安全”模式,你将受到严密保护。但如果你使用“非安全”模式(有时对于高性能任务是必要的),你就会失去这些自动保护。本文强调,Rust 的安全认证必须重点关注这些“非安全”部分的管理方式。
  • 尚未完成: 尽管 Rust 很出色,但本文指出,工具和行业标准尚未完全成熟。这就像拥有一辆极好的新车,但交通法规和保险公司尚未完全跟上。目前,Rust 更可能与 C++ 并存(例如在旧车上加装一台新的、更安全的引擎),而不是立即完全取代它。

总结:
作者们并没有仅仅说"Rust 很好”。他们付出了艰苦的努力,将旧的安全规则映射到新语言上,证明了 Rust 的设计消除了旧规则手册中的巨大部分,同时清晰地指出了哪些具体规则仍然重要,以及需要编写哪些新规则。他们公开了所有发现,以便工程师们今天就能开始使用 Rust 构建更安全的系统。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →