meldestelle/issues_found.md
2025-07-18 23:07:05 +02:00

3.0 KiB

Code Analysis - Issues Found

Summary

Analysis of the codebase revealed multiple inconsistencies and issues across different modules:

1. Validation Framework Inconsistencies

Problem: Mixed Validation Approaches

  • Horse-registry: Uses custom response objects with List<String> for errors
  • Master-data: Mixed approach - new ValidationResult framework in some methods, old ValidationResult API in others
  • Member-management: Uses ApiResponse pattern with Map<String, String> for validation errors

Specific Issues:

  1. CreateCountryUseCase (master-data):

    • createCountry() uses new ValidationResult with isValid() method
    • updateCountry() uses old ValidationResult with isValid property
    • deleteCountry() uses old ValidationResult with ValidationResult.success()
    • Unsafe casting: (validationResult as ValidationResult.Invalid)
  2. CreateHorseUseCase (horse-registry):

    • Uses custom CreateHorseResponse instead of standard ApiResponse<T>
    • Uses List<String> for errors instead of ValidationResult framework
    • Force unwrapping with !! operator (potential NPE)
  3. CreatePersonUseCase (member-management):

    • Uses Map<String, String> for validation errors
    • Hardcoded validation instead of using ValidationUtils
    • Custom email validation instead of ValidationUtils.validateEmail()

2. Unused Imports

  • DomPferd.kt: import kotlinx.datetime.todayIn (line 12) - not used
  • CreateHorseUseCase.kt: import kotlinx.datetime.todayIn (line 9) - not used
  • GetHorseUseCase.kt: import kotlinx.datetime.todayIn (line 30) - not used
  • UpdateHorseUseCase.kt: import kotlinx.datetime.todayIn (line 42) - not used

3. Code Quality Issues

DomPferd.kt:

  1. Potential NPE: Line 100 uses geburtsdatum!!.year with force unwrap
  2. Age calculation bug: Lines 134-136 use dayOfYear comparison which doesn't handle leap years properly
  3. Inconsistent validation: validateForRegistration() returns List<String> instead of using ValidationResult

CreateHorseUseCase.kt:

  1. Force unwrapping: Lines 126, 132, 135, 136 use !! operator
  2. Hardcoded validation: Could use ValidationUtils for birth date validation

4. Architecture Inconsistencies

  • Different modules use different response patterns (ApiResponse vs custom responses vs ValidationResult)
  • Validation logic is scattered and inconsistent
  • No standardized error handling approach

Phase 1: Standardize Validation Framework

  1. Update all use cases to use consistent ValidationResult approach
  2. Remove unsafe casting and force unwrapping
  3. Standardize on ApiResponse for all API responses

Phase 2: Clean Up Code Quality Issues

  1. Remove unused imports
  2. Fix potential NPE issues
  3. Improve age calculation logic
  4. Use ValidationUtils consistently

Phase 3: Standardize Error Handling

  1. Ensure all validation uses ValidationError objects
  2. Consistent error codes and messages
  3. Proper exception handling