檢視原始碼 Mix.Task.Compiler.Diagnostic (Mix v1.16.2)

診斷資訊,例如警告或編譯錯誤。

檔案和位置與診斷應顯示的位置相關。如果有檔案和位置,則診斷是精確的,您可以使用指定的檔案和位置來產生片段、IDE 註解等。選用的範圍包含診斷結束的行和欄。

否則,可能會提供堆疊追蹤,您可以放置自己的啟發式方法來提供更好的報告。

原始碼欄位指向編譯器追蹤錯誤的原始碼檔案。例如,檔案 lib/foo.ex 可能會嵌入 .eex 範本,來自 lib/foo/bar.eex。EEx 範本的語法錯誤將指向檔案 lib/foo/bar.eex,但原始碼是 lib/foo.ex

摘要

類型

診斷的嚴重性

t()

類型

@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()
}