Source file src/cmd/vendor/golang.org/x/tools/go/analysis/diagnostic.go
1 // Copyright 2019 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package analysis 6 7 import "go/token" 8 9 // A Diagnostic is a message associated with a source location or range. 10 // 11 // An Analyzer may return a variety of diagnostics; the optional Category, 12 // which should be a constant, may be used to classify them. 13 // It is primarily intended to make it easy to look up documentation. 14 // 15 // All Pos values are interpreted relative to Pass.Fset. If End is 16 // provided, the diagnostic is specified to apply to the range between 17 // Pos and End. 18 type Diagnostic struct { 19 Pos token.Pos 20 End token.Pos // optional 21 Category string // optional 22 Message string 23 24 // URL is the optional location of a web page that provides 25 // additional documentation for this diagnostic. 26 // 27 // If URL is empty but a Category is specified, then the 28 // Analysis driver should treat the URL as "#"+Category. 29 // 30 // The URL may be relative. If so, the base URL is that of the 31 // Analyzer that produced the diagnostic; 32 // see https://pkg.go.dev/net/url#URL.ResolveReference. 33 URL string 34 35 // SuggestedFixes is an optional list of fixes to address the 36 // problem described by the diagnostic. Each one represents an 37 // alternative strategy, and should have a distinct and 38 // descriptive message; at most one may be applied. 39 // 40 // Fixes for different diagnostics should be treated as 41 // independent changes to the same baseline file state, 42 // analogous to a set of git commits all with the same parent. 43 // Combining fixes requires resolving any conflicts that 44 // arise, analogous to a git merge. 45 // Any conflicts that remain may be dealt with, depending on 46 // the tool, by discarding fixes, consulting the user, or 47 // aborting the operation. 48 SuggestedFixes []SuggestedFix 49 50 // Related contains optional secondary positions and messages 51 // related to the primary diagnostic. 52 Related []RelatedInformation 53 } 54 55 // RelatedInformation contains information related to a diagnostic. 56 // For example, a diagnostic that flags duplicated declarations of a 57 // variable may include one RelatedInformation per existing 58 // declaration. 59 type RelatedInformation struct { 60 Pos token.Pos 61 End token.Pos // optional 62 Message string 63 } 64 65 // A SuggestedFix is a code change associated with a Diagnostic that a 66 // user can choose to apply to their code. Usually the SuggestedFix is 67 // meant to fix the issue flagged by the diagnostic. 68 // 69 // The TextEdits must not overlap, nor contain edits for other 70 // packages. Edits need not be totally ordered, but the order 71 // determines how insertions at the same point will be applied. 72 type SuggestedFix struct { 73 // A verb phrase describing the fix, to be shown to 74 // a user trying to decide whether to accept it. 75 // 76 // Example: "Remove the surplus argument" 77 Message string 78 TextEdits []TextEdit 79 } 80 81 // A TextEdit represents the replacement of the code between Pos and End with the new text. 82 // Each TextEdit should apply to a single file. End should not be earlier in the file than Pos. 83 type TextEdit struct { 84 // For a pure insertion, End can either be set to Pos or token.NoPos. 85 Pos token.Pos 86 End token.Pos 87 NewText []byte 88 } 89