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
+10 -9
View File
@@ -278,7 +278,8 @@ func (t *Tester) testRTSP(ctx context.Context, streamURL string, result *TestRes
result.Type = "FFMPEG"
for _, stream := range probeResult.Streams {
if stream.CodecType == "video" {
switch stream.CodecType {
case "video":
result.Codec = stream.CodecName
result.Resolution = fmt.Sprintf("%dx%d", stream.Width, stream.Height)
@@ -288,26 +289,26 @@ func (t *Tester) testRTSP(ctx context.Context, streamURL string, result *TestRes
if len(parts) == 2 {
// Calculate FPS from fraction
var num, den int
fmt.Sscanf(parts[0], "%d", &num)
fmt.Sscanf(parts[1], "%d", &den)
if den > 0 {
result.FPS = num / den
if n, _ := fmt.Sscanf(parts[0], "%d", &num); n == 1 {
if n, _ := fmt.Sscanf(parts[1], "%d", &den); n == 1 && den > 0 {
result.FPS = num / den
}
}
}
}
// Parse bitrate
if stream.BitRate != "" {
fmt.Sscanf(stream.BitRate, "%d", &result.Bitrate)
_, _ = fmt.Sscanf(stream.BitRate, "%d", &result.Bitrate)
}
} else if stream.CodecType == "audio" {
case "audio":
result.HasAudio = true
}
}
// Use format bitrate if stream bitrate not available
if result.Bitrate == 0 && probeResult.Format.BitRate != "" {
fmt.Sscanf(probeResult.Format.BitRate, "%d", &result.Bitrate)
_, _ = fmt.Sscanf(probeResult.Format.BitRate, "%d", &result.Bitrate)
}
if !result.Working {
@@ -348,7 +349,7 @@ func (t *Tester) testHTTP(ctx context.Context, streamURL string, result *TestRes
result.Error = fmt.Sprintf("HTTP request failed: %v", err)
return
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
// Check status code
if resp.StatusCode != http.StatusOK {