Skip to content

[duplicate-code] Duplicate Code Analysis Report — commit f544f18 #8695

Description

@github-actions

Summary

The refactoring commit (f544f18) that routed all ValidationError constructors through newValidationError introduced all internal/config/ files together, surfacing two structural duplication patterns in internal/config/validation_rules.go. Both patterns involve near-identical validation functions sharing the same logic but differing only in error message wording — a classic copy-paste pattern.

Detected Patterns

This analysis found 2 significant duplication patterns:

  1. RequiredStringField / NonEmptyString — near-identical empty-string validators — Severity: Medium — See sub-issue [duplicate-code] Duplicate Code Pattern: Near-Identical Empty-String Validators (RequiredStringField / NonEmptyString) #8696
  2. TimeoutPositive / PositiveInteger — overlapping minimum-value validators — Severity: Low — See sub-issue [duplicate-code] Duplicate Code Pattern: Overlapping Minimum-Value Validators (TimeoutPositive / PositiveInteger) #8697

Overall Impact

  • Total Duplicated Lines: ~24 lines (two pairs of ~12-line validator functions)
  • Affected Files: 1 (internal/config/validation_rules.go)
  • Maintainability Risk: Medium — any future change to validation error structure must be applied to both functions in each pair; divergence already visible (different Message wording, missing logValidation.Print call in RequiredStringField that NonEmptyString also lacks)
  • Refactoring Priority: Medium — straightforward consolidation with no external API changes required

Next Steps

  1. Review individual pattern sub-issues for detailed analysis
  2. Consolidate RequiredStringField and NonEmptyString (have one delegate to the other)
  3. Consolidate TimeoutPositive and PositiveInteger (have TimeoutPositive delegate to PositiveInteger or merge)

Analysis Metadata

  • Analyzed Files: internal/config/validation_rules.go (primary), full internal/config/ package (secondary)
  • Detection Method: Semantic code analysis — symbol-level comparison and pattern search
  • Commit: f544f18
  • Analysis Date: 2026-07-05T03:41:30Z

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions