查看源代码 Mix.Task.Compiler.Diagnostic (Mix v1.16.2)
诊断信息,例如警告或编译错误。
文件和位置与应显示诊断信息的位置相关。如果存在文件和位置,则诊断信息是精确的,您可以使用给定的文件和位置来生成代码片段、IDE 注解等。可以使用可选的跨度,其中包含诊断信息结束的行和列。
否则,可能会给出堆栈跟踪,您可以根据自己的启发式方法提供更好的报告。
source 字段指向编译器跟踪错误的源文件。例如,文件 lib/foo.ex
可能会嵌入来自 lib/foo/bar.eex
的 .eex
模板。EEx 模板上的语法错误将指向文件 lib/foo/bar.eex
,但源文件是 lib/foo.ex
。
总结
类型
@type severity() :: :error | :warning | :information | :hint
诊断信息的严重程度
:error
- 导致编译失败的问题:warning
- 没有导致失败但提示程序员可能犯了错误的问题:hint
- 关于风格或良好实践的建议,其严重程度不如警告:information
- 与编译相关的任何其他信息,不属于上述类别
@type t() :: %Mix.Task.Compiler.Diagnostic{ compiler_name: String.t(), details: term(), file: Path.t() | nil, message: IO.chardata(), position: Code.position(), severity: severity(), source: Path.t() | nil, span: {line :: pos_integer(), column :: pos_integer()} | nil, stacktrace: Exception.stacktrace() }