mirror of
https://github.com/mgechev/revive.git
synced 2024-11-21 17:16:40 +02:00
0df1bb0860
* Support go workspaces when detecting the go version. When a module is part of a workspace, a call to `go list -m` lists all modules in the workspace, and we need to parse multiple modinfos. * Do not invoke `go list` for every package. * Add a go language version override config option for golangci-lint.
72 lines
2.1 KiB
Go
72 lines
2.1 KiB
Go
package lint
|
|
|
|
import (
|
|
goversion "github.com/hashicorp/go-version"
|
|
)
|
|
|
|
// Arguments is type used for the arguments of a rule.
|
|
type Arguments = []interface{}
|
|
|
|
// FileFilters is type used for modeling file filters to apply to rules.
|
|
type FileFilters = []*FileFilter
|
|
|
|
// RuleConfig is type used for the rule configuration.
|
|
type RuleConfig struct {
|
|
Arguments Arguments
|
|
Severity Severity
|
|
Disabled bool
|
|
// Exclude - rule-level file excludes, TOML related (strings)
|
|
Exclude []string
|
|
// excludeFilters - regex-based file filters, initialized from Exclude
|
|
excludeFilters []*FileFilter
|
|
}
|
|
|
|
// Initialize - should be called after reading from TOML file
|
|
func (rc *RuleConfig) Initialize() error {
|
|
for _, f := range rc.Exclude {
|
|
ff, err := ParseFileFilter(f)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
rc.excludeFilters = append(rc.excludeFilters, ff)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// RulesConfig defines the config for all rules.
|
|
type RulesConfig = map[string]RuleConfig
|
|
|
|
// MustExclude - checks if given filename `name` must be excluded
|
|
func (rc *RuleConfig) MustExclude(name string) bool {
|
|
for _, exclude := range rc.excludeFilters {
|
|
if exclude.MatchFileName(name) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// DirectiveConfig is type used for the linter directive configuration.
|
|
type DirectiveConfig struct {
|
|
Severity Severity
|
|
}
|
|
|
|
// DirectivesConfig defines the config for all directives.
|
|
type DirectivesConfig = map[string]DirectiveConfig
|
|
|
|
// Config defines the config of the linter.
|
|
type Config struct {
|
|
IgnoreGeneratedHeader bool `toml:"ignoreGeneratedHeader"`
|
|
Confidence float64
|
|
Severity Severity
|
|
EnableAllRules bool `toml:"enableAllRules"`
|
|
Rules RulesConfig `toml:"rule"`
|
|
ErrorCode int `toml:"errorCode"`
|
|
WarningCode int `toml:"warningCode"`
|
|
Directives DirectivesConfig `toml:"directive"`
|
|
Exclude []string `toml:"exclude"`
|
|
// If set, overrides the go language version specified in go.mod of
|
|
// packages being linted, and assumes this specific language version.
|
|
GoVersion *goversion.Version
|
|
}
|