golangci-lint/pkg/config/severity.go

42 lines
878 B
Go

package config
import (
"errors"
"fmt"
)
const severityRuleMinConditionsCount = 1
type Severity struct {
Default string `mapstructure:"default-severity"`
CaseSensitive bool `mapstructure:"case-sensitive"`
Rules []SeverityRule `mapstructure:"rules"`
}
func (s *Severity) Validate() error {
if len(s.Rules) > 0 && s.Default == "" {
return errors.New("can't set severity rule option: no default severity defined")
}
for i, rule := range s.Rules {
if err := rule.Validate(); err != nil {
return fmt.Errorf("error in severity rule #%d: %w", i, err)
}
}
return nil
}
type SeverityRule struct {
BaseRule `mapstructure:",squash"`
Severity string
}
func (s *SeverityRule) Validate() error {
if s.Severity == "" {
return errors.New("severity should be set")
}
return s.BaseRule.Validate(severityRuleMinConditionsCount)
}