Skip to content

Commit c24d494

Browse files
committed
feat: make fixes/suggestions opt-in
1 parent e38f138 commit c24d494

File tree

6 files changed

+172
-508
lines changed

6 files changed

+172
-508
lines changed

cmd/tsgolint/headless.go

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

cmd/tsgolint/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,10 @@ func runMain() int {
470470
func(d rule.RuleDiagnostic) {
471471
diagnosticsChan <- d
472472
},
473+
linter.Fixes{
474+
Fix: true,
475+
FixSuggestions: true,
476+
},
473477
)
474478

475479
close(diagnosticsChan)

0 commit comments

Comments
 (0)