@@ -119,7 +119,46 @@ var (
119
119
}
120
120
)
121
121
122
+ func NewGovet (cfg * config.GovetSettings ) * goanalysis.Linter {
123
+ var settings map [string ]map [string ]interface {}
124
+ if cfg != nil {
125
+ settings = cfg .Settings
126
+ }
127
+ return goanalysis .NewLinter (
128
+ "govet" ,
129
+ "Vet examines Go source code and reports suspicious constructs, " +
130
+ "such as Printf calls whose arguments do not align with the format string" ,
131
+ analyzersFromConfig (cfg ),
132
+ settings ,
133
+ ).WithLoadMode (goanalysis .LoadModeTypesInfo )
134
+ }
135
+
136
+ func analyzersFromConfig (cfg * config.GovetSettings ) []* analysis.Analyzer {
137
+ if cfg == nil {
138
+ return defaultAnalyzers
139
+ }
140
+
141
+ if cfg .CheckShadowing {
142
+ // Keeping for backward compatibility.
143
+ cfg .Enable = append (cfg .Enable , shadow .Analyzer .Name )
144
+ }
145
+
146
+ var enabledAnalyzers []* analysis.Analyzer
147
+ for _ , a := range allAnalyzers {
148
+ if isAnalyzerEnabled (a .Name , cfg , defaultAnalyzers ) {
149
+ enabledAnalyzers = append (enabledAnalyzers , a )
150
+ }
151
+ }
152
+
153
+ return enabledAnalyzers
154
+ }
155
+
122
156
func isAnalyzerEnabled (name string , cfg * config.GovetSettings , defaultAnalyzers []* analysis.Analyzer ) bool {
157
+ if (name == nilness .Analyzer .Name || name == unusedwrite .Analyzer .Name ) &&
158
+ config .IsGreaterThanOrEqualGo118 (cfg .Go ) {
159
+ return false
160
+ }
161
+
123
162
if cfg .EnableAll {
124
163
for _ , n := range cfg .Disable {
125
164
if n == name {
@@ -128,58 +167,28 @@ func isAnalyzerEnabled(name string, cfg *config.GovetSettings, defaultAnalyzers
128
167
}
129
168
return true
130
169
}
170
+
131
171
// Raw for loops should be OK on small slice lengths.
132
172
for _ , n := range cfg .Enable {
133
173
if n == name {
134
174
return true
135
175
}
136
176
}
177
+
137
178
for _ , n := range cfg .Disable {
138
179
if n == name {
139
180
return false
140
181
}
141
182
}
183
+
142
184
if cfg .DisableAll {
143
185
return false
144
186
}
187
+
145
188
for _ , a := range defaultAnalyzers {
146
189
if a .Name == name {
147
190
return true
148
191
}
149
192
}
150
193
return false
151
194
}
152
-
153
- func analyzersFromConfig (cfg * config.GovetSettings ) []* analysis.Analyzer {
154
- if cfg == nil {
155
- return defaultAnalyzers
156
- }
157
-
158
- if cfg .CheckShadowing {
159
- // Keeping for backward compatibility.
160
- cfg .Enable = append (cfg .Enable , shadow .Analyzer .Name )
161
- }
162
-
163
- var enabledAnalyzers []* analysis.Analyzer
164
- for _ , a := range allAnalyzers {
165
- if isAnalyzerEnabled (a .Name , cfg , defaultAnalyzers ) {
166
- enabledAnalyzers = append (enabledAnalyzers , a )
167
- }
168
- }
169
-
170
- return enabledAnalyzers
171
- }
172
-
173
- func NewGovet (cfg * config.GovetSettings ) * goanalysis.Linter {
174
- var settings map [string ]map [string ]interface {}
175
- if cfg != nil {
176
- settings = cfg .Settings
177
- }
178
- return goanalysis .NewLinter (
179
- "govet" ,
180
- "Vet examines Go source code and reports suspicious constructs, " +
181
- "such as Printf calls whose arguments do not align with the format string" ,
182
- analyzersFromConfig (cfg ),
183
- settings ,
184
- ).WithLoadMode (goanalysis .LoadModeTypesInfo )
185
- }
0 commit comments