package linter const ( PresetFormatting = "format" PresetComplexity = "complexity" PresetStyle = "style" PresetBugs = "bugs" PresetUnused = "unused" PresetPerformance = "performance" ) type Config struct { Linter Linter EnabledByDefault bool DoesFullImport bool NeedsSSARepr bool InPresets []string Speed int // more value means faster execution of linter AlternativeNames []string OriginalURL string // URL of original (not forked) repo, needed for autogenerated README } func (lc Config) WithFullImport() Config { lc.DoesFullImport = true return lc } func (lc Config) WithSSA() Config { lc.DoesFullImport = true lc.NeedsSSARepr = true return lc } func (lc Config) WithPresets(presets ...string) Config { lc.InPresets = presets return lc } func (lc Config) WithSpeed(speed int) Config { lc.Speed = speed return lc } func (lc Config) WithURL(url string) Config { lc.OriginalURL = url return lc } func (lc Config) WithAlternativeNames(names ...string) Config { lc.AlternativeNames = names return lc } func (lc Config) NeedsProgramLoading() bool { return lc.DoesFullImport } func (lc Config) NeedsSSARepresentation() bool { return lc.NeedsSSARepr } func (lc Config) GetSpeed() int { return lc.Speed } func (lc Config) AllNames() []string { return append([]string{lc.Name()}, lc.AlternativeNames...) } func (lc Config) Name() string { return lc.Linter.Name() } func NewConfig(linter Linter) *Config { return &Config{ Linter: linter, } }