Skip to content

Commit 9468a8d

Browse files
committed
refactor inspector helper to use iterators instead of callbacks
Signed-off-by: sivchari <shibuuuu5@gmail.com>
1 parent 5ebe05f commit 9468a8d

27 files changed

Lines changed: 243 additions & 231 deletions

File tree

pkg/analysis/arrayofstruct/analyzer.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"golang.org/x/tools/go/analysis"
2323

2424
kalerrors "sigs.k8s.io/kube-api-linter/pkg/analysis/errors"
25-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/extractjsontags"
2625
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/inspector"
2726
markershelper "sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/markers"
2827
"sigs.k8s.io/kube-api-linter/pkg/analysis/utils"
@@ -50,9 +49,9 @@ func run(pass *analysis.Pass) (any, error) {
5049
return nil, kalerrors.ErrCouldNotGetInspector
5150
}
5251

53-
inspect.InspectFields(func(field *ast.Field, jsonTagInfo extractjsontags.FieldTagInfo, markersAccess markershelper.Markers, qualifiedFieldName string) {
54-
checkField(pass, field, markersAccess, qualifiedFieldName)
55-
})
52+
for f := range inspect.Fields() {
53+
checkField(pass, f.Field, f.Markers, f.QualifiedFieldName)
54+
}
5655

5756
return nil, nil //nolint:nilnil
5857
}

pkg/analysis/commentstart/analyzer.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
kalerrors "sigs.k8s.io/kube-api-linter/pkg/analysis/errors"
2626
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/extractjsontags"
2727
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/inspector"
28-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/markers"
2928
)
3029

3130
const name = "commentstart"
@@ -45,9 +44,9 @@ func run(pass *analysis.Pass) (any, error) {
4544
return nil, kalerrors.ErrCouldNotGetInspector
4645
}
4746

48-
inspect.InspectFields(func(field *ast.Field, jsonTagInfo extractjsontags.FieldTagInfo, _ markers.Markers, qualifiedFieldName string) {
49-
checkField(pass, field, jsonTagInfo, qualifiedFieldName)
50-
})
47+
for f := range inspect.Fields() {
48+
checkField(pass, f.Field, f.JSONTagInfo, f.QualifiedFieldName)
49+
}
5150

5251
return nil, nil //nolint:nilnil
5352
}

pkg/analysis/conflictingmarkers/analyzer.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"golang.org/x/tools/go/analysis"
2424
"k8s.io/apimachinery/pkg/util/sets"
2525
kalerrors "sigs.k8s.io/kube-api-linter/pkg/analysis/errors"
26-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/extractjsontags"
2726
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/inspector"
2827
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/markers"
2928
"sigs.k8s.io/kube-api-linter/pkg/analysis/utils"
@@ -67,9 +66,9 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
6766
return nil, kalerrors.ErrCouldNotGetInspector
6867
}
6968

70-
inspect.InspectFields(func(field *ast.Field, _ extractjsontags.FieldTagInfo, markersAccess markers.Markers, qualifiedFieldName string) {
71-
checkField(pass, field, markersAccess, a.conflictSets, qualifiedFieldName)
72-
})
69+
for f := range inspect.Fields() {
70+
checkField(pass, f.Field, f.Markers, a.conflictSets, f.QualifiedFieldName)
71+
}
7372

7473
return nil, nil //nolint:nilnil
7574
}

pkg/analysis/defaults/analyzer.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
107107
return nil, kalerrors.ErrCouldNotGetInspector
108108
}
109109

110-
inspect.InspectFields(func(field *ast.Field, jsonTagInfo extractjsontags.FieldTagInfo, markersAccess markershelper.Markers, qualifiedFieldName string) {
111-
a.checkField(pass, field, jsonTagInfo, markersAccess, qualifiedFieldName)
112-
})
110+
for f := range inspect.Fields() {
111+
a.checkField(pass, f.Field, f.JSONTagInfo, f.Markers, f.QualifiedFieldName)
112+
}
113113

114114
return nil, nil //nolint:nilnil
115115
}

pkg/analysis/dependenttags/analyzer.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"golang.org/x/tools/go/analysis"
2525

2626
kalerrors "sigs.k8s.io/kube-api-linter/pkg/analysis/errors"
27-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/extractjsontags"
2827
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/inspector"
2928
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/markers"
3029
"sigs.k8s.io/kube-api-linter/pkg/analysis/utils"
@@ -65,26 +64,26 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
6564
return nil, kalerrors.ErrCouldNotGetInspector
6665
}
6766

68-
inspect.InspectFields(func(field *ast.Field, jsonTagInfo extractjsontags.FieldTagInfo, markersAccess markers.Markers, qualifiedFieldName string) {
69-
if field.Doc == nil {
70-
return
67+
for f := range inspect.Fields() {
68+
if f.Field.Doc == nil {
69+
continue
7170
}
7271

73-
fieldMarkers := utils.TypeAwareMarkerCollectionForField(pass, markersAccess, field)
72+
fieldMarkers := utils.TypeAwareMarkerCollectionForField(pass, f.Markers, f.Field)
7473

7574
for _, rule := range a.cfg.Rules {
7675
if _, ok := fieldMarkers[rule.Identifier]; ok {
7776
switch rule.Type {
7877
case DependencyTypeAny:
79-
handleAny(pass, field, rule, fieldMarkers, qualifiedFieldName)
78+
handleAny(pass, f.Field, rule, fieldMarkers, f.QualifiedFieldName)
8079
case DependencyTypeAll:
81-
handleAll(pass, field, rule, fieldMarkers, qualifiedFieldName)
80+
handleAll(pass, f.Field, rule, fieldMarkers, f.QualifiedFieldName)
8281
default:
8382
panic(fmt.Sprintf("unknown dependency type %s", rule.Type))
8483
}
8584
}
8685
}
87-
})
86+
}
8887

8988
return nil, nil //nolint:nilnil
9089
}

pkg/analysis/duplicatemarkers/analyzer.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"golang.org/x/tools/go/analysis"
2424

2525
kalerrors "sigs.k8s.io/kube-api-linter/pkg/analysis/errors"
26-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/extractjsontags"
2726
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/inspector"
2827
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/markers"
2928
"sigs.k8s.io/kube-api-linter/pkg/analysis/utils"
@@ -48,13 +47,13 @@ func run(pass *analysis.Pass) (any, error) {
4847
return nil, kalerrors.ErrCouldNotGetInspector
4948
}
5049

51-
inspect.InspectFields(func(field *ast.Field, _ extractjsontags.FieldTagInfo, markersAccess markers.Markers, qualifiedFieldName string) {
52-
checkField(pass, field, markersAccess, qualifiedFieldName)
53-
})
50+
for f := range inspect.Fields() {
51+
checkField(pass, f.Field, f.Markers, f.QualifiedFieldName)
52+
}
5453

55-
inspect.InspectTypeSpec(func(typeSpec *ast.TypeSpec, markersAccess markers.Markers) {
56-
checkTypeSpec(pass, typeSpec, markersAccess)
57-
})
54+
for ts := range inspect.TypeSpecs() {
55+
checkTypeSpec(pass, ts.TypeSpec, ts.Markers)
56+
}
5857

5958
return nil, nil //nolint:nilnil
6059
}

pkg/analysis/forbiddenmarkers/analyzer.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222

2323
"golang.org/x/tools/go/analysis"
2424
kalerrors "sigs.k8s.io/kube-api-linter/pkg/analysis/errors"
25-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/extractjsontags"
2625
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/inspector"
2726
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/markers"
2827
"sigs.k8s.io/kube-api-linter/pkg/analysis/utils"
@@ -61,13 +60,13 @@ func (a *analyzer) run(pass *analysis.Pass) (any, error) {
6160
return nil, kalerrors.ErrCouldNotGetInspector
6261
}
6362

64-
inspect.InspectFields(func(field *ast.Field, _ extractjsontags.FieldTagInfo, markersAccess markers.Markers, qualifiedFieldName string) {
65-
checkField(pass, field, markersAccess, a.forbiddenMarkers, qualifiedFieldName)
66-
})
63+
for f := range inspect.Fields() {
64+
checkField(pass, f.Field, f.Markers, a.forbiddenMarkers, f.QualifiedFieldName)
65+
}
6766

68-
inspect.InspectTypeSpec(func(typeSpec *ast.TypeSpec, markersAccess markers.Markers) {
69-
checkType(pass, typeSpec, markersAccess, a.forbiddenMarkers)
70-
})
67+
for ts := range inspect.TypeSpecs() {
68+
checkType(pass, ts.TypeSpec, ts.Markers, a.forbiddenMarkers)
69+
}
7170

7271
return nil, nil //nolint:nilnil
7372
}

pkg/analysis/helpers/inspector/analyzer_test.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,11 @@ package inspector_test
1717

1818
import (
1919
"errors"
20-
"go/ast"
2120
"testing"
2221

2322
"golang.org/x/tools/go/analysis"
2423
"golang.org/x/tools/go/analysis/analysistest"
25-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/extractjsontags"
2624
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/inspector"
27-
"sigs.k8s.io/kube-api-linter/pkg/analysis/helpers/markers"
2825
"sigs.k8s.io/kube-api-linter/pkg/analysis/utils"
2926
)
3027

@@ -49,13 +46,13 @@ func run(pass *analysis.Pass) (any, error) {
4946
return nil, errCouldNotGetInspector
5047
}
5148

52-
inspect.InspectFields(func(field *ast.Field, jsonTagInfo extractjsontags.FieldTagInfo, _ markers.Markers, _ string) {
53-
pass.Reportf(field.Pos(), "field: %v", utils.FieldName(field))
49+
for f := range inspect.Fields() {
50+
pass.Reportf(f.Field.Pos(), "field: %v", utils.FieldName(f.Field))
5451

55-
if jsonTagInfo.Name != "" {
56-
pass.Reportf(field.Pos(), "json tag: %v", jsonTagInfo.Name)
52+
if f.JSONTagInfo.Name != "" {
53+
pass.Reportf(f.Field.Pos(), "json tag: %v", f.JSONTagInfo.Name)
5754
}
58-
})
55+
}
5956

6057
return nil, nil //nolint:nilnil
6158
}

0 commit comments

Comments
 (0)