#produce #source #tool #reduce #compile #obélix #mve

bin+lib obelix

Obélix 是一个将 Rust 源文件缩减为 MVE 的工具。

2 个不稳定版本

0.2.0 2020年6月19日
0.1.0 2020年6月17日

#1882 in 开发工具

MIT/Apache

19KB
372

Obélix

Obélix 是一个将 Rust 源文件缩减为 MVE 的工具。

为什么使用这个工具?

缩减通常有助于理解编译器错误。隔离错误并去除噪音很重要,这有助于找出问题。在 Stack Overflow 或 Rust 编程语言论坛等网站上提问时也非常重要。这个工具有助于自动化此过程。

此工具的预期用途是帮助用户生成缩小的源代码,

  • 帮助他们理解为什么代码无法编译。
  • 帮助他们生成 MVE 以在 Stack Overflow、Rust 编程语言论坛上提问。
  • 帮助他们生成 MVE 以在 GitHub 上为编译器错误报告问题。

请注意,缩减并不总是完美的:在提问时,有时需要一些上下文信息。但 Obélix 无法知道代码是无用的还是有意提供上下文。这意味着在使用此工具后,通常会有一段时间的后期处理阶段。

如何使用它

目前,Obélix 的界面非常简单。

您可以使用 cargo install obelix 安装它。只需调用 obelix your-file.rs 即可,它将输出一个简化版本,产生与原始文件相同的错误,您可能希望将其通过 rustfmt 输出。

$ cat a.rs 
fn main() {
    error
}

fn unused() {}
$ rustc a.rs 
error[E0425]: cannot find value `error` in this scope
 --> a.rs:2:5
  |
2 |     error
  |     ^^^^^ not found in this scope

error: aborting due to previous error

For more information about this error, try `rustc --explain E0425`.
$ obelix a.rs | rustfmt 
fn main() {
    error
}
$ obelix a.rs | rustc -
error[E0425]: cannot find value `error` in this scope
 --> <anon>:1:15
  |
1 | fn main ( ) { error }
  |               ^^^^^ not found in this scope

error: aborting due to previous error

For more information about this error, try `rustc --explain E0425`.

请注意,Obélix 永远不会覆盖您的文件。

为什么叫“Obélix”?

我想给这个工具起一个听起来像“mini rust”或“mini-rs”之类的名字。我最终选择了 menhir,这个名字似乎很好,特别是考虑到 hir 的意思是 long。不幸的是,这个名称已经在 crates.io 上被预留了。因此,我将名称更改为 Obélix,这是一个略带 weight problem 的 menhir 雕塑家。

许可证

根据您的选择,许可协议为 Apache License,版本 2.0MIT 许可证

除非您明确声明,否则您根据Apache-2.0许可证定义的提交给Obélix的任何有意贡献,均将采用上述双许可方式,不附加任何额外条款或条件。

所有名为 so-ID 的测试文件是来自Stack Overflow的用户贡献,并受CC BY-SA许可。原始帖子可在https://stackoverflow.com/questions/$ID 访问。

所有名为 URLO-ID 的测试文件是来自Rust编程语言论坛的用户贡献,并受CC BY-NC-SA 3.0许可。原始帖子可在https://users.rust-lang.org/t/$ID 访问。

Menhir图标由Good Ware在www.flaticon.com制作。

依赖项

~3.5–5.5MB
~104K SLoC