Skip to content

Metrics

When a filter is enabled, it automatically collects thread-safe metrics about what was checked and filtered.

f := gogenfilter.NewFilter(
gogenfilter.Enabled(),
gogenfilter.WithFilterOptions(gogenfilter.FilterAll),
)
f.ShouldFilter("db/models.go")
f.ShouldFilter("page_templ.go")
f.ShouldFilter("main.go")
stats := f.GetStats()
fmt.Printf("Total checked: %d\n", stats.TotalFilesChecked)
fmt.Printf("Total filtered: %d\n", stats.TotalFiltered())
stats := f.GetStats()
fmt.Printf("SQLC files: %d\n", stats.FilteredBy(gogenfilter.ReasonSQLC))
fmt.Printf("Templ files: %d\n", stats.FilteredBy(gogenfilter.ReasonTempl))
fmt.Printf("Protobuf files: %d\n", stats.FilteredBy(gogenfilter.ReasonProtobuf))
ReasonDescription
ReasonSQLCsqlc generated files
ReasonTempltempl generated files
ReasonGoEnumgo-enum generated files
ReasonProtobufprotobuf generated files
ReasonOapioapi-codegen generated files
ReasonDeepcopydeepcopy-gen generated files
ReasonWirewire generated files
ReasonMoqmoq generated files
ReasonMockgenmockgen generated files
ReasonStringerstringer generated files
ReasonGenericAny Code generated by comment
ReasonIncludePatternExcluded by include pattern scope
ReasonExcludePatternMatched an exclude pattern

A disabled filter returns zero stats:

f := gogenfilter.NewFilter(gogenfilter.Disabled())
stats := f.GetStats()
// stats.TotalFilesChecked == 0
// stats.TotalFiltered() == 0

GetStats() returns a snapshot. The internal metrics use sync primitives safe for concurrent use from multiple goroutines.