2 个不稳定版本
0.2.0 | 2020年6月19日 |
---|---|
0.1.0 | 2020年6月17日 |
#1882 in 开发工具
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.0 或 MIT 许可证。
除非您明确声明,否则您根据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