Fix all linter issues: errcheck, staticcheck, and unused code

- Fix critical scanner.go bug: ineffective break in select (SA4011)
  Use labeled break to properly exit loop on context cancellation

- Add error checking for all file.Close() and resp.Body.Close()
  Prevent resource leaks in loader, onvif_simple, and tester

- Add error checking for fmt.Sscanf() calls in tester.go
  Prevent silent parse failures for FPS and bitrate extraction

- Add error checking for all SSE streamWriter calls
  Explicit ignore with _ = for SendJSON and SendError

- Remove unused sync.RWMutex field from SearchEngine

- Refactor if/else to switch for CodecType (staticcheck QF1003)
  More idiomatic Go code in stream tester

All 20 linter issues resolved. Code compiles and runs correctly.
This commit is contained in:
eduard256
2025-11-12 11:17:12 +03:00
parent 94f94a9f8c
commit 86a8fb36d5
7 changed files with 32 additions and 31 deletions
+4 -4
View File
@@ -52,7 +52,7 @@ func (l *Loader) LoadBrand(brandID string) (*models.Camera, error) {
}
return nil, fmt.Errorf("failed to open brand file: %w", err)
}
defer file.Close()
defer func() { _ = file.Close() }()
var camera models.Camera
decoder := json.NewDecoder(file)
@@ -104,7 +104,7 @@ func (l *Loader) LoadPopularPatterns() ([]models.StreamPattern, error) {
if err != nil {
return nil, fmt.Errorf("failed to open patterns file: %w", err)
}
defer file.Close()
defer func() { _ = file.Close() }()
var patterns []models.StreamPattern
decoder := json.NewDecoder(file)
@@ -133,7 +133,7 @@ func (l *Loader) LoadQueryParameters() ([]string, error) {
if err != nil {
return nil, fmt.Errorf("failed to open parameters file: %w", err)
}
defer file.Close()
defer func() { _ = file.Close() }()
var params []string
decoder := json.NewDecoder(file)
@@ -187,7 +187,7 @@ func (l *Loader) loadCameraFromFile(filePath string) (*models.Camera, error) {
if err != nil {
return nil, err
}
defer file.Close()
defer func() { _ = file.Close() }()
var camera models.Camera
decoder := json.NewDecoder(file)
-1
View File
@@ -15,7 +15,6 @@ import (
type SearchEngine struct {
loader *Loader
logger interface{ Debug(string, ...any); Error(string, error, ...any) }
mu sync.RWMutex
}
// NewSearchEngine creates a new search engine