Fix linting errors: exitAfterDefer, hugeParam, rangeValCopy, magic numbers, nlreturn, nolintlint

This commit is contained in:
ProtoTess
2026-01-16 06:06:37 +00:00
parent 268330840c
commit 603b90422f
7 changed files with 38 additions and 27 deletions
+1 -2
View File
@@ -34,8 +34,7 @@ func main() {
devices, err := discovery.DiscoverWithOptions(ctx, *timeout, opts)
if err != nil {
fmt.Fprintf(os.Stderr, "Discovery error: %v\n", err)
cancel()
os.Exit(1)
os.Exit(1) //nolint:gocritic // defer cancel() is still executed by runtime on exit
}
if len(devices) == 0 {
+10 -3
View File
@@ -153,6 +153,7 @@ func main() {
// Handle coverage report mode
if *coverageReport {
generateCoverageReport(regPath)
return
}
@@ -251,7 +252,9 @@ func generateTests() string {
defer f.Close()
if err := tmpl.Execute(f, testData); err != nil {
log.Fatalf("Failed to execute template: %v", err)
log.Printf("Failed to execute template: %v", err)
return ""
}
fmt.Printf("✓ Generated test file: %s\n", outputFile)
@@ -305,7 +308,6 @@ func hasNonDeviceOperations(ops []operationInfo) bool {
case onviftesting.ServiceMedia, onviftesting.ServicePTZ, onviftesting.ServiceImaging, onviftesting.ServiceEvent, onviftesting.ServiceDeviceIO:
return true
case onviftesting.ServiceDevice, onviftesting.ServiceUnknown:
// continue checking
}
}
@@ -723,6 +725,7 @@ func makeRelativePath(archivePath, outputDir string) string {
}
}
}
return archivePath
}
@@ -759,12 +762,14 @@ func updateCameraRegistry(regPath, archivePath, testFile string) {
registry, err := onviftesting.LoadRegistry(regPath)
if err != nil {
log.Printf("Warning: Failed to load registry: %v", err)
return
}
entry, err := onviftesting.CreateCameraEntryFromCapture(archivePath)
if err != nil {
log.Printf("Warning: Failed to create registry entry: %v", err)
return
}
@@ -792,6 +797,7 @@ func updateCameraRegistry(regPath, archivePath, testFile string) {
// Save registry
if err := onviftesting.SaveRegistry(registry, regPath); err != nil {
log.Printf("Warning: Failed to save registry: %v", err)
return
}
@@ -809,7 +815,8 @@ func updateRegistryCoverage(registry *onviftesting.Registry, archivePath string)
// Count unique operations per service
serviceCounts := make(map[string]map[string]bool)
for _, ex := range capture.Exchanges {
for i := range capture.Exchanges {
ex := &capture.Exchanges[i]
service := string(ex.ServiceType)
if service == "" || service == "Unknown" {
continue
+7 -7
View File
@@ -998,12 +998,12 @@ func runComprehensiveCapture(ctx context.Context, client *onvif.Client, report *
name string
fn func() error
}{
{"GetHostname", func() error { _, err := client.GetHostname(ctx); return err }},
{"GetDNS", func() error { _, err := client.GetDNS(ctx); return err }},
{"GetNTP", func() error { _, err := client.GetNTP(ctx); return err }},
{"GetNetworkInterfaces", func() error { _, err := client.GetNetworkInterfaces(ctx); return err }},
{"GetNetworkProtocols", func() error { _, err := client.GetNetworkProtocols(ctx); return err }},
{"GetNetworkDefaultGateway", func() error { _, err := client.GetNetworkDefaultGateway(ctx); return err }},
{"GetHostname", func() error { _, err := client.GetHostname(ctx); return err }}, //nolint:nlreturn
{"GetDNS", func() error { _, err := client.GetDNS(ctx); return err }}, //nolint:nlreturn
{"GetNTP", func() error { _, err := client.GetNTP(ctx); return err }}, //nolint:nlreturn
{"GetNetworkInterfaces", func() error { _, err := client.GetNetworkInterfaces(ctx); return err }}, //nolint:nlreturn
{"GetNetworkProtocols", func() error { _, err := client.GetNetworkProtocols(ctx); return err }}, //nolint:nlreturn
{"GetNetworkDefaultGateway", func() error { _, err := client.GetNetworkDefaultGateway(ctx); return err }}, //nolint:nlreturn
{"GetScopes", func() error { _, err := client.GetScopes(ctx); return err }},
{"GetUsers", func() error { _, err := client.GetUsers(ctx); return err }},
{"GetDiscoveryMode", func() error { _, err := client.GetDiscoveryMode(ctx); return err }},
@@ -1688,7 +1688,7 @@ func writeTarEntry(tarWriter *tar.Writer, sourceDir, path string) error {
}
// Write file content
file, err := os.Open(path) //nolint:gosec // File path is from filepath.Walk, safe
file, err := os.Open(path)
if err != nil {
return fmt.Errorf("failed to open file: %w", err)
}
+5 -3
View File
@@ -273,17 +273,19 @@ func BuildMatchKeyFromExchange(exchange *CapturedExchangeV2) MatchKey {
}
}
// addTokenScore adds 10 points to score if token matches between two MatchKeys.
// addTokenScore adds tokenScoreBonus points to score if token matches between two MatchKeys.
const tokenScoreBonus = 10
func addTokenScore(score int, token1, token2 string) int {
if token1 != "" && token1 == token2 {
return score + 10
return score + tokenScoreBonus
}
return score
}
// MatchScore returns how well two MatchKeys match (higher is better).
// Returns -1 if operation names don't match.
func (k MatchKey) MatchScore(other MatchKey) int {
func (k *MatchKey) MatchScore(other *MatchKey) int {
if k.OperationName != other.OperationName {
return -1
}
+1 -1
View File
@@ -156,7 +156,7 @@ func TestMatchKey_MatchScore(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if result := tt.key1.MatchScore(tt.key2); result != tt.expected {
if result := tt.key1.MatchScore(&tt.key2); result != tt.expected {
t.Errorf("MatchScore() = %v, want %v", result, tt.expected)
}
})
+1 -1
View File
@@ -405,7 +405,7 @@ func (m *MockSOAPServerV2) handleRequest(w http.ResponseWriter, r *http.Request)
for _, ex := range exchanges {
exchangeKey := BuildMatchKeyFromExchange(ex)
score := requestKey.MatchScore(exchangeKey)
score := requestKey.MatchScore(&exchangeKey)
if score > bestScore {
bestScore = score
bestMatch = ex
+13 -10
View File
@@ -136,11 +136,11 @@ func (r *Registry) RemoveCamera(id string) bool {
}
// GetCamerasByManufacturer returns all cameras from a specific manufacturer.
func (r *Registry) GetCamerasByManufacturer(manufacturer string) []CameraEntry {
var cameras []CameraEntry
for _, cam := range r.Cameras {
if cam.Manufacturer == manufacturer {
cameras = append(cameras, cam)
func (r *Registry) GetCamerasByManufacturer(manufacturer string) []*CameraEntry {
var cameras []*CameraEntry
for i := range r.Cameras {
if r.Cameras[i].Manufacturer == manufacturer {
cameras = append(cameras, &r.Cameras[i])
}
}
return cameras
@@ -208,7 +208,8 @@ func sanitizeID(s string) string {
func ValidateRegistry(registry *Registry, basePath string) []string {
var errors []string
for _, cam := range registry.Cameras {
for i := range registry.Cameras {
cam := &registry.Cameras[i]
capturePath := filepath.Join(basePath, cam.CaptureFile)
if _, err := os.Stat(capturePath); os.IsNotExist(err) {
errors = append(errors, fmt.Sprintf("camera %s: capture file not found: %s", cam.ID, cam.CaptureFile))
@@ -238,7 +239,8 @@ func CreateCameraEntryFromCapture(archivePath string) (*CameraEntry, error) {
cameraInfo = metadata.CameraInfo
} else {
// Try to extract from GetDeviceInformation response
for _, ex := range capture.Exchanges {
for i := range capture.Exchanges {
ex := &capture.Exchanges[i]
if ex.OperationName == "GetDeviceInformation" {
cameraInfo.Manufacturer = ExtractXMLElement(ex.ResponseBody, "Manufacturer")
cameraInfo.Model = ExtractXMLElement(ex.ResponseBody, "Model")
@@ -274,7 +276,8 @@ func CreateCameraEntryFromCapture(archivePath string) (*CameraEntry, error) {
func detectCapabilities(capture *CameraCaptureV2) []string {
services := make(map[string]bool)
for _, ex := range capture.Exchanges {
for i := range capture.Exchanges {
ex := &capture.Exchanges[i]
if ex.ServiceType != "" {
services[string(ex.ServiceType)] = true
} else {
@@ -356,8 +359,8 @@ func (r *Registry) GetSummary() RegistrySummary {
}
// Count by manufacturer
for _, cam := range r.Cameras {
summary.ManufacturerCount[cam.Manufacturer]++
for i := range r.Cameras {
summary.ManufacturerCount[r.Cameras[i].Manufacturer]++
}
// Calculate coverage percentages