|
|
|
@ -26,13 +26,14 @@ import (
|
|
|
|
|
|
|
|
|
|
// Error represents semantical errors on parsing rule groups.
|
|
|
|
|
type Error struct {
|
|
|
|
|
Group string
|
|
|
|
|
Rule int
|
|
|
|
|
Err error
|
|
|
|
|
Group string
|
|
|
|
|
Rule int
|
|
|
|
|
RuleName string
|
|
|
|
|
Err error
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (err *Error) Error() string {
|
|
|
|
|
return errors.Wrapf(err.Err, "group %q, rule %d", err.Group, err.Rule).Error()
|
|
|
|
|
return errors.Wrapf(err.Err, "group %q, rule %d, %q", err.Group, err.Rule, err.RuleName).Error()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// RuleGroups is a set of rule groups that are typically exposed in a file.
|
|
|
|
@ -67,10 +68,17 @@ func (g *RuleGroups) Validate() (errs []error) {
|
|
|
|
|
|
|
|
|
|
for i, r := range g.Rules {
|
|
|
|
|
for _, err := range r.Validate() {
|
|
|
|
|
var ruleName string
|
|
|
|
|
if r.Alert != "" {
|
|
|
|
|
ruleName = r.Alert
|
|
|
|
|
} else {
|
|
|
|
|
ruleName = r.Record
|
|
|
|
|
}
|
|
|
|
|
errs = append(errs, &Error{
|
|
|
|
|
Group: g.Name,
|
|
|
|
|
Rule: i,
|
|
|
|
|
Err: err,
|
|
|
|
|
Group: g.Name,
|
|
|
|
|
Rule: i,
|
|
|
|
|
RuleName: ruleName,
|
|
|
|
|
Err: err,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|