#error #diagnostics #compiler #report #pretty #character-set

charon_ariadne

一个华丽的诊断与报告库 - 适用于crates.io/charon

1个不稳定版本

0.1.0 2022年7月7日

#404 in 可视化


用于 charon_core

MIT 许可证

66KB
1.5K SLoC

Ariadne

crates.io crates.io License actions-badge

一个华丽的编译器诊断库。

示例

Ariadne supports arbitrary multi-line spans

更多示例请见 examples/.

关于

ariadnechumsky 的姐妹项目。它们不互相依赖,但我同时在这两个项目上工作,并认为它们的功能可以互补。如果你考虑使用 ariadne 来处理编译器的输出,为什么不尝试使用 chumsky 来处理输入呢?

特性

  • 内联和多行标签,可以处理任意配置的跨度
  • 多文件错误
  • 支持自定义跨度和文件缓存
  • 支持选择字符集以确保兼容性
  • 支持彩色标签和高亮显示,包括8位和24位颜色支持(感谢 yansi
  • 标签优先级和排序
  • 紧凑模式以缩小诊断大小
  • 正确处理如制表符之类的变宽字符
  • 一个 ColorGenerator 类型,用于为视觉元素生成独特的颜色。
  • 许多其他选项(制表符宽度、标签连接点、下划线等)
  • 内置的排序/重叠启发式算法,以最佳方式避免重叠和标签交叉

计划中的特性

  • 改进布局规划和空间使用
  • 非ANSI终端支持
  • 更多可访问性选项(屏幕阅读器友好模式、作为颜色替代的纹理高亮等)
  • 更多颜色选项
  • 更好地支持布局限制(例如最大终端宽度)

稳定性

API(应该)遵循semver。然而,这并不适用于最终错误信息的布局。对内部布局启发式算法的微小调整通常会导致错误信息的确切格式发生变化,标签略有移动。如果您遇到布局变化,认为这是回归(无论是变化不正确,还是使您的诊断更难阅读),请提出一个问题。

致谢

感谢

  • @brendanzab,他们美丽的codespan crate启发了我去尝试推动错误诊断的边界。

  • @estebank,通过他们在Rust上的工作,向无数人展示了编译器诊断可以有多么好。

依赖关系

~91KB