diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index b72b7bdc..0dec7c50 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -94,5 +94,5 @@ jobs: uses: golangci/golangci-lint-action@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a # v9.3.0 with: # renovate: github=golangci/golangci-lint - version: v2.12.2 + version: v2.13.1 args: "--max-same-issues=0" diff --git a/.golangci.yaml b/.golangci.yaml index 5d492193..20965238 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,3 +1,4 @@ +# $schema: https://golangci-lint.run/jsonschema/golangci.jsonschema.json version: "2" linters: default: all @@ -9,6 +10,7 @@ linters: - err113 - exhaustive - exhaustruct + - exhaustruct_v5 - fatcontext - funcorder - funlen diff --git a/cmd/windows_exporter/main_test.go b/cmd/windows_exporter/main_test.go index 20092b3b..28642391 100644 --- a/cmd/windows_exporter/main_test.go +++ b/cmd/windows_exporter/main_test.go @@ -190,8 +190,7 @@ func waitUntilListening(tb testing.TB, network, address string) error { break } - var winErr windows.Errno - if errors.As(err, &winErr) { + if winErr, ok := errors.AsType[windows.Errno](err); ok { return fmt.Errorf("listener not listening: %w (#%d)", winErr, uint32(winErr)) } diff --git a/internal/collector/iis/iis.go b/internal/collector/iis/iis.go index 30237cfb..42fa179d 100644 --- a/internal/collector/iis/iis.go +++ b/internal/collector/iis/iis.go @@ -304,7 +304,7 @@ func deduplicateIISNames[T collectorName](counterValues []T) { // Use map to deduplicate IIS entries for index, counterValue := range counterValues { - name := strings.Split(counterValue.GetName(), "#")[0] + name, _, _ := strings.Cut(counterValue.GetName(), "#") if name == counterValue.GetName() { continue } diff --git a/internal/collector/performancecounter/performancecounter.go b/internal/collector/performancecounter/performancecounter.go index a26b3390..40b896b6 100644 --- a/internal/collector/performancecounter/performancecounter.go +++ b/internal/collector/performancecounter/performancecounter.go @@ -328,7 +328,7 @@ func (c *Collector) collectObject(ch chan<- prometheus.Metric, perfDataObject Ob continue } - metricType, _ := field.Interface().(prometheus.ValueType) + metricType, _ := reflect.TypeAssert[prometheus.ValueType](field) labels := make(prometheus.Labels, len(counter.Labels)+1) diff --git a/internal/collector/printer/printer.go b/internal/collector/printer/printer.go index dbf28fd5..eb295983 100644 --- a/internal/collector/printer/printer.go +++ b/internal/collector/printer/printer.go @@ -265,7 +265,7 @@ func (c *Collector) groupPrintJobs(printJobs []wmiPrintJob) map[PrintJobStatusGr groupedPrintJobs := make(map[PrintJobStatusGroup]int) for _, printJob := range printJobs { - printerName := strings.Split(printJob.Name, ",")[0] + printerName, _, _ := strings.Cut(printJob.Name, ",") if c.config.PrinterExclude.MatchString(printerName) || !c.config.PrinterInclude.MatchString(printerName) { diff --git a/internal/headers/dhcpsapi/dhcpsapi.go b/internal/headers/dhcpsapi/dhcpsapi.go index 09e30379..ff35b447 100644 --- a/internal/headers/dhcpsapi/dhcpsapi.go +++ b/internal/headers/dhcpsapi/dhcpsapi.go @@ -69,7 +69,7 @@ func GetDHCPV4ScopeStatistics() ([]DHCPV4Scope, error) { var errs []error for _, subnet := range subnets { - if err := (func() error { + if err := func() error { var subnetInfo *DHCP_SUBNET_INFO err := dhcpGetSubnetInfo(subnet.SubnetAddress, &subnetInfo) @@ -129,7 +129,7 @@ func GetDHCPV4ScopeStatistics() ([]DHCPV4Scope, error) { scopes = append(scopes, scope) return nil - })(); err != nil { + }(); err != nil { errs = append(errs, err) } } diff --git a/internal/headers/psapi/psapi.go b/internal/headers/psapi/psapi.go index 6683062c..bf2a4a4e 100644 --- a/internal/headers/psapi/psapi.go +++ b/internal/headers/psapi/psapi.go @@ -52,7 +52,7 @@ var ( func GetPerformanceInfo() (PerformanceInformation, error) { var lppi PerformanceInformation - size := (uint32)(unsafe.Sizeof(lppi)) + size := uint32(unsafe.Sizeof(lppi)) lppi.cb = size r1, _, err := procGetPerformanceInfo.Call(uintptr(unsafe.Pointer(&lppi)), uintptr(size)) diff --git a/internal/headers/sysinfoapi/sysinfoapi.go b/internal/headers/sysinfoapi/sysinfoapi.go index 10c1ed08..6f529c4c 100644 --- a/internal/headers/sysinfoapi/sysinfoapi.go +++ b/internal/headers/sysinfoapi/sysinfoapi.go @@ -128,7 +128,7 @@ var ( func GlobalMemoryStatusEx() (MemoryStatus, error) { var mse memoryStatusEx - mse.dwLength = (uint32)(unsafe.Sizeof(mse)) + mse.dwLength = uint32(unsafe.Sizeof(mse)) r1, _, err := procGlobalMemoryStatusEx.Call(uintptr(unsafe.Pointer(&mse))) if ret := *(*bool)(unsafe.Pointer(&r1)); !ret { diff --git a/internal/pdh/error.go b/internal/pdh/error.go index dc6d784e..9e2ed37e 100644 --- a/internal/pdh/error.go +++ b/internal/pdh/error.go @@ -35,8 +35,7 @@ func (m *Error) Is(err error) bool { return false } - var e *Error - if errors.As(err, &e) { + if e, ok := errors.AsType[*Error](err); ok { return m.ErrorCode == e.ErrorCode } diff --git a/internal/pdh/registry/perflib.go b/internal/pdh/registry/perflib.go index 424d82ae..64c7f09c 100644 --- a/internal/pdh/registry/perflib.go +++ b/internal/pdh/registry/perflib.go @@ -254,8 +254,7 @@ func queryRawData(query string) ([]byte, error) { continue case err != nil: - var errNo windows.Errno - if errors.As(err, &errNo) { + if errNo, ok := errors.AsType[windows.Errno](err); ok { return nil, fmt.Errorf("ReqQueryValueEx failed: %w errno %d", err, uint(errNo)) }