@@ -87,17 +87,9 @@ func ReadFromBytes(fileContent []byte) (Analyzer, YamlAnalyzer, error) {
87
87
return Analyzer {}, YamlAnalyzer {}, err
88
88
}
89
89
90
- lang := DecodeLanguage (checker .Language )
91
- if lang == LangUnknown {
92
- return Analyzer {}, YamlAnalyzer {}, fmt .Errorf ("unknown language code: '%s'" , checker .Language )
93
- }
94
-
95
- if checker .Code == "" {
96
- return Analyzer {}, YamlAnalyzer {}, fmt .Errorf ("no name provided in checker definition" )
97
- }
98
-
99
- if checker .Message == "" {
100
- return Analyzer {}, YamlAnalyzer {}, fmt .Errorf ("no message provided in checker '%s'" , checker .Code )
90
+ lang , code , message , err := verifyChecker (checker )
91
+ if err != nil {
92
+ return Analyzer {}, YamlAnalyzer {}, err
101
93
}
102
94
103
95
var patterns []* sitter.Query
@@ -116,7 +108,7 @@ func ReadFromBytes(fileContent []byte) (Analyzer, YamlAnalyzer, error) {
116
108
patterns = append (patterns , pattern )
117
109
}
118
110
} else {
119
- return Analyzer {}, YamlAnalyzer {}, fmt .Errorf ("no pattern provided in checker '%s'" , checker . Code )
111
+ return Analyzer {}, YamlAnalyzer {}, fmt .Errorf ("no pattern provided in checker '%s'" , code )
120
112
}
121
113
122
114
if checker .Pattern != "" && len (checker .Patterns ) > 0 {
@@ -134,7 +126,7 @@ func ReadFromBytes(fileContent []byte) (Analyzer, YamlAnalyzer, error) {
134
126
for _ , exclude := range checker .Exclude {
135
127
g , err := glob .Compile (exclude )
136
128
if err != nil {
137
- return Analyzer {}, YamlAnalyzer {}, err
129
+ return Analyzer {}, YamlAnalyzer {}, fmt . Errorf ( "invalid exclude pattern in yaml checker" )
138
130
}
139
131
pathFilter .ExcludeGlobs = append (pathFilter .ExcludeGlobs , g )
140
132
}
@@ -156,7 +148,7 @@ func ReadFromBytes(fileContent []byte) (Analyzer, YamlAnalyzer, error) {
156
148
queryStr := filter .PatternInside + " @" + filterPatternKey
157
149
query , err := sitter .NewQuery ([]byte (queryStr ), lang .Grammar ())
158
150
if err != nil {
159
- return Analyzer {}, YamlAnalyzer {}, err
151
+ return Analyzer {}, YamlAnalyzer {}, fmt . Errorf ( "invalid tree-sitter pattern inside 'pattern-inside' field" )
160
152
}
161
153
162
154
filters = append (filters , NodeFilter {
@@ -169,7 +161,7 @@ func ReadFromBytes(fileContent []byte) (Analyzer, YamlAnalyzer, error) {
169
161
queryStr := filter .PatternNotInside + " @" + filterPatternKey
170
162
query , err := sitter .NewQuery ([]byte (queryStr ), lang .Grammar ())
171
163
if err != nil {
172
- return Analyzer {}, YamlAnalyzer {}, err
164
+ return Analyzer {}, YamlAnalyzer {}, fmt . Errorf ( "invalid tree-sitter pattern inside 'pattern-not-inside' field" )
173
165
}
174
166
175
167
filters = append (filters , NodeFilter {
@@ -181,7 +173,7 @@ func ReadFromBytes(fileContent []byte) (Analyzer, YamlAnalyzer, error) {
181
173
}
182
174
183
175
patternChecker := Analyzer {
184
- Name : checker . Code ,
176
+ Name : code ,
185
177
Language : lang ,
186
178
Description : checker .Description ,
187
179
Category : checker .Category ,
@@ -193,7 +185,7 @@ func ReadFromBytes(fileContent []byte) (Analyzer, YamlAnalyzer, error) {
193
185
Patterns : patterns ,
194
186
NodeFilter : filters ,
195
187
PathFilter : pathFilter ,
196
- Message : checker . Message ,
188
+ Message : message ,
197
189
}
198
190
199
191
patternChecker .Run = RunYamlAnalyzer (yamlAnalyzer )
@@ -285,3 +277,19 @@ func filterMatchesParent(filter *NodeFilter, parent *sitter.Node, source []byte)
285
277
286
278
return false
287
279
}
280
+
281
+ func verifyChecker (checker Yaml ) (Language , string , string , error ) {
282
+ lang := DecodeLanguage (checker .Language )
283
+ code := checker .Code
284
+ msg := checker .Message
285
+
286
+ if lang == LangUnknown {
287
+ return lang , code , msg , fmt .Errorf ("unknown language code: %v" , lang )
288
+ }
289
+
290
+ if (code == "" ) || (msg == "" ) {
291
+ return lang , code , msg , fmt .Errorf ("missing necessary field in checker definition" )
292
+ }
293
+
294
+ return lang , code , msg , nil
295
+ }
0 commit comments