Files
Hein ad52f21cc2
CI / Test (push) Successful in 26s
CI / Build (push) Successful in 22s
feat(datagrip): migrate from LSP4IJ to native CLI integration
2026-07-17 13:20:49 +02:00

42 lines
1.5 KiB
Go

// 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"`
}