Skip to content

Commit e938076

Browse files
following pattern for using conflictingmarkers correctly
1 parent 93c9b6e commit e938076

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

pkg/analysis/conflictingmarkers/analyzer.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,6 @@ type analyzer struct {
3636
}
3737

3838
func newAnalyzer(cfg *ConflictingMarkersConfig) *analysis.Analyzer {
39-
return NewAnalyzer(cfg)
40-
}
41-
42-
// NewAnalyzer creates a new conflictingmarkers analyzer with the given configuration.
43-
// This function is exported so that other linters can use conflictingmarkers functionality
44-
// with custom configurations.
45-
func NewAnalyzer(cfg *ConflictingMarkersConfig) *analysis.Analyzer {
4639
if cfg == nil {
4740
cfg = &ConflictingMarkersConfig{}
4841
}

pkg/analysis/defaultorrequired/analyzer.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,22 @@ limitations under the License.
1616
package defaultorrequired
1717

1818
import (
19+
"errors"
20+
"fmt"
21+
1922
"golang.org/x/tools/go/analysis"
23+
"k8s.io/apimachinery/pkg/util/validation/field"
2024
"sigs.k8s.io/kube-api-linter/pkg/analysis/conflictingmarkers"
25+
"sigs.k8s.io/kube-api-linter/pkg/analysis/initializer"
2126
"sigs.k8s.io/kube-api-linter/pkg/markers"
2227
)
2328

24-
const name = "defaultorrequired"
29+
const (
30+
name = "defaultorrequired"
31+
doc = "Checks that fields marked as required do not have default values applied"
32+
)
33+
34+
var errUnexpectedInitializerType = errors.New("expected conflictingmarkers.Initializer() to be of type initializer.ConfigurableAnalyzerInitializer, but was not")
2535

2636
// newAnalyzer creates a new analyzer that wraps conflictingmarkers with a predefined configuration
2737
// for checking default and required marker conflicts.
@@ -39,12 +49,23 @@ func newAnalyzer() *analysis.Analyzer {
3949
},
4050
}
4151

42-
// Create the underlying conflicting markers analyzer
43-
analyzer := conflictingmarkers.NewAnalyzer(cfg)
52+
configInit, ok := conflictingmarkers.Initializer().(initializer.ConfigurableAnalyzerInitializer)
53+
if !ok {
54+
panic(fmt.Errorf("getting initializer: %w", errUnexpectedInitializerType))
55+
}
56+
57+
errs := configInit.ValidateConfig(cfg, field.NewPath("defaultorrequired"))
58+
if err := errs.ToAggregate(); err != nil {
59+
panic(fmt.Errorf("defaultorrequired linter has an invalid conflictingmarkers configuration: %w", err))
60+
}
61+
62+
analyzer, err := configInit.Init(cfg)
63+
if err != nil {
64+
panic(fmt.Errorf("defaultorrequired linter encountered an error initializing wrapped conflictingmarkers analyzer: %w", err))
65+
}
4466

45-
// Override the name to match this linter
4667
analyzer.Name = name
47-
analyzer.Doc = "Checks that fields marked as required do not have default values applied"
68+
analyzer.Doc = doc
4869

4970
return analyzer
5071
}

0 commit comments

Comments
 (0)