@@ -63,8 +63,8 @@ type headlessDiagnostic struct {
6363 Range headlessRange `json:"range"`
6464 Rule string `json:"rule"`
6565 Message headlessRuleMessage `json:"message"`
66- Fixes []headlessFix `json:"fixes"`
67- Suggestions []headlessSuggestion `json:"suggestions"`
66+ Fixes []headlessFix `json:"fixes,omitempty "`
67+ Suggestions []headlessSuggestion `json:"suggestions,omitempty "`
6868 FilePath string `json:"file_path"`
6969}
7070
@@ -102,15 +102,19 @@ func runHeadless(args []string) int {
102102 logLevel := utils .GetLogLevel ()
103103
104104 var (
105- traceOut string
106- cpuprofOut string
107- heapOut string
108- allocsOut string
105+ traceOut string
106+ cpuprofOut string
107+ heapOut string
108+ allocsOut string
109+ fix bool
110+ fixSuggestions bool
109111 )
110112 flag .StringVar (& traceOut , "trace" , "" , "file to put trace to" )
111113 flag .StringVar (& cpuprofOut , "cpuprof" , "" , "file to put cpu profiling to" )
112114 flag .StringVar (& heapOut , "heap" , "" , "file to put heap profiling to" )
113115 flag .StringVar (& allocsOut , "allocs" , "" , "file to put allocs profiling to" )
116+ flag .BoolVar (& fix , "fix" , false , "generate fixes for code problems" )
117+ flag .BoolVar (& fixSuggestions , "fix-suggestions" , false , "generate suggestions for code problems" )
114118 flag .CommandLine .Parse (args )
115119
116120 log .SetOutput (os .Stderr )
@@ -236,28 +240,34 @@ func runHeadless(args []string) int {
236240 Range : headlessRangeFromRange (d .Range ),
237241 Rule : d .RuleName ,
238242 Message : headlessRuleMessageFromRuleMessage (d .Message ),
239- Fixes : make ([] headlessFix , len ( d . Fixes ())) ,
240- Suggestions : make ([] headlessSuggestion , len ( d . GetSuggestions ())) ,
243+ Fixes : nil ,
244+ Suggestions : nil ,
241245 FilePath : d .SourceFile .FileName (),
242246 }
243- for i , fix := range d .Fixes () {
244- hd .Fixes [i ] = headlessFix {
245- Text : fix .Text ,
246- Range : headlessRangeFromRange (fix .Range ),
247- }
248- }
249- for i , suggestion := range d .GetSuggestions () {
250- hd .Suggestions [i ] = headlessSuggestion {
251- Message : headlessRuleMessageFromRuleMessage (d .Message ),
252- Fixes : make ([]headlessFix , len (suggestion .Fixes ())),
253- }
254- for j , fix := range suggestion .Fixes () {
255- hd .Suggestions [i ].Fixes [j ] = headlessFix {
247+ if fix {
248+ hd .Fixes = make ([]headlessFix , len (d .Fixes ()))
249+ for i , fix := range d .Fixes () {
250+ hd .Fixes [i ] = headlessFix {
256251 Text : fix .Text ,
257252 Range : headlessRangeFromRange (fix .Range ),
258253 }
259254 }
260255 }
256+ if fixSuggestions {
257+ hd .Suggestions = make ([]headlessSuggestion , len (d .GetSuggestions ()))
258+ for i , suggestion := range d .GetSuggestions () {
259+ hd .Suggestions [i ] = headlessSuggestion {
260+ Message : headlessRuleMessageFromRuleMessage (d .Message ),
261+ Fixes : make ([]headlessFix , len (suggestion .Fixes ())),
262+ }
263+ for j , fix := range suggestion .Fixes () {
264+ hd .Suggestions [i ].Fixes [j ] = headlessFix {
265+ Text : fix .Text ,
266+ Range : headlessRangeFromRange (fix .Range ),
267+ }
268+ }
269+ }
270+ }
261271 writeMessage (w , headlessMessageTypeDiagnostic , hd )
262272 if w .Available () < 4096 {
263273 w .Flush ()
@@ -297,6 +307,10 @@ func runHeadless(args []string) int {
297307 func (d rule.RuleDiagnostic ) {
298308 diagnosticsChan <- d
299309 },
310+ linter.Fixes {
311+ Fix : fix ,
312+ FixSuggestions : fixSuggestions ,
313+ },
300314 )
301315
302316 close (diagnosticsChan )
0 commit comments