// Package diagnostics defines the shared Diagnostic type emitted by the linter // (and, later, the LSP). Both the CLI and the language server import this // package to avoid a circular dependency between pkg/lint and pkg/lsp. package diagnostics // Severity is the urgency of a diagnostic. type Severity string const ( SeverityError Severity = "error" SeverityWarning Severity = "warning" SeverityHint Severity = "hint" ) // TextFix is a byte-range replacement that can be applied to the source SQL. // Replace src[Offset:End] with New. An insertion has Offset == End. type TextFix struct { Offset int `json:"offset"` // byte offset in source (inclusive) End int `json:"end"` // byte offset in source (exclusive) New string `json:"new"` // replacement text Title string `json:"title"` // short description shown in editor UI } // Diagnostic is a single lint finding. type Diagnostic struct { // RuleID is the stable identifier for the rule that produced this finding // (e.g. "MIG001"). RuleID string `json:"ruleId"` // Severity is the urgency level. Severity Severity `json:"severity"` // Message is a human-readable description of the finding. Message string `json:"message"` // File is the path to the source file, or "" for stdin. File string `json:"file"` // Line is the 1-based line number of the finding. Line int `json:"line"` // Col is the 1-based column number of the finding. Col int `json:"col"` // Fix is non-nil when an autofix is available for this diagnostic. Fix *TextFix `json:"fix,omitempty"` }