Files
orderPRO/.paul/phases/06-sonarqube-quality/06-02-PLAN.md
Jacek Pyziak 3a9cfcd4a2 wip(06-sonarqube-quality): 6 planów SonarQube Quality utworzonych
Plany dla php:S112, S1142, S1192, S3776, S1448, S138 — gotowe do APPLY.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 10:54:57 +01:00

7.2 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous
phase plan type wave depends_on files_modified autonomous
06-sonarqube-quality 02 execute 1
src/Modules/Settings/AllegroIntegrationController.php
src/Modules/Settings/ShopproIntegrationsController.php
true
## Goal Zredukować liczbę `return` w metodach do maksymalnie 3 — eliminacja naruszeń SonarQube php:S1142 (57 wystąpień).

Purpose

Metody z 4+ returnami (np. save() z 5 returnami) są trudne do śledzenia — nie wiadomo jaką ścieżką wróciła wartość. Wydzielenie walidacji do osobnych metod upraszcza główną ścieżkę logiki.

Output

AllegroIntegrationController i ShopproIntegrationsController z metodami o max 3 return statements. SonarQube S1142 spada o ~15-20 violations.

## Project Context @.paul/PROJECT.md

Source Files

@src/Modules/Settings/AllegroIntegrationController.php @src/Modules/Settings/ShopproIntegrationsController.php

## Required Skills (from SPECIAL-FLOWS.md)
Skill Priority When to Invoke Loaded?
sonar-scanner required Po APPLY, przed UNIFY

Skill Invocation Checklist

  • sonar-scanner uruchomiony po zakończeniu APPLY

<acceptance_criteria>

AC-1: AllegroIntegrationController::save() — max 3 return

Given save() ma 5 return statements (walidacja CSRF, URL, credentials, dates, etc.)
When refaktoryzujesz przez wydzielenie walidacji do private validateSaveInput(): ?string
Then save() ma ≤3 return statements; zachowanie identyczne

AC-2: AllegroIntegrationController::saveImportSettings() — max 3 return

Given saveImportSettings() ma 4 return statements
When wydzielasz walidację do private validateImportSettingsInput(): ?string
Then saveImportSettings() ma ≤3 return statements

AC-3: AllegroIntegrationController::oauthCallback() — max 3 return

Given oauthCallback() ma 4 return statements (walidacja state, code, brak credentials, etc.)
When wydzielasz walidację parametrów do private validateOAuthCallbackParams(): ?string
Then oauthCallback() ma ≤3 return statements

AC-4: ShopproIntegrationsController::save() — max 3 return

Given save() ma 5 return statements
When wydzielasz walidację do private validateSaveInput(): ?string
Then save() ma ≤3 return statements

AC-5: Brak regresji funkcjonalnej

Given formularze integracji Allegro i Shoppro działają przed zmianą
When refaktoryzacja jest czysto strukturalna (ta sama logika, inne rozłożenie)
Then wszystkie walidacje nadal działają, komunikaty błędów identyczne

</acceptance_criteria>

Task 1: Refaktoryzacja AllegroIntegrationController — redukcja return w save(), saveImportSettings(), oauthCallback() src/Modules/Settings/AllegroIntegrationController.php Przeczytaj dokładnie trzy metody: save(), saveImportSettings(), oauthCallback().
**Wzorzec refaktoryzacji (stosuj w każdej metodzie):**
- Wydziel bloki walidacji (if + return z błędem) do private helper: validateXxxInput(array $input): ?string
- Helper zwraca komunikat błędu lub null (gdy wszystko OK)
- W głównej metodzie: $error = $this->validateXxxInput($data); if ($error !== null) { [flash + redirect z $error]; return; }
- Dzięki temu główna metoda ma: 1 return po walidacji + 1 return po logice = 2 return zamiast 5

**save() (linia ~115):**
- Wydziel do private validateSaveInput(array $data): ?string
- Walidacje do wydzielenia: CSRF check, URL validation, credentials check, date validations
- Zwraca pierwszy napotkany błąd jako string, lub null

**saveImportSettings() (linia ~169):**
- Wydziel do private validateImportSettingsInput(array $data): ?string
- Walidacje: CSRF, date range checks, inne

**oauthCallback() (linia ~403):**
- Wydziel do private validateOAuthCallbackParams(array $params): ?string
- Walidacje: state parameter, code parameter, CSRF state match

Zasady:
- NIE zmieniaj logiki biznesowej — tylko strukturę
- NIE zmieniaj komunikatów błędów ani flash keys
- NIE zmieniaj redirect paths
- Nowe private metody dodaj na końcu klasy, przed ostatnim }
php -l src/Modules/Settings/AllegroIntegrationController.php grep -c "return" w obrębie save(), saveImportSettings(), oauthCallback() — każda ≤3 AC-1, AC-2, AC-3 satisfied: trzy metody mają ≤3 return statements; składnia poprawna Task 2: Refaktoryzacja ShopproIntegrationsController — redukcja return w save() i innych metodach src/Modules/Settings/ShopproIntegrationsController.php Przeczytaj dokładnie: save(), test(), saveStatusMappings(), syncStatuses().
**save() (linia ~112):**
- Wydziel do private validateSaveInput(array $data): ?string
- Walidacje: CSRF, URL, credentials, data range checks
- Docelowo: ≤3 return w save()

**test() (linia ~202):**
- 3 return — sprawdź czy można zredukować do 2 przez wydzielenie warunków wejściowych
- Jeśli nie da się bez utraty czytelności, zostaw (SonarQube limit to 3 — akceptowalne)

**saveStatusMappings() (linia ~238):**
- Jeśli ma 4+ return: wydziel wstępną walidację

**syncStatuses() (linia ~301):**
- Jeśli ma 4+ return: wydziel walidację

Stosuj ten sam wzorzec co Task 1: private validateXxxInput(): ?string.
Nowe private metody dodaj na końcu klasy.
NIE zmieniaj logiki, komunikatów, redirect paths.
php -l src/Modules/Settings/ShopproIntegrationsController.php Ręczne przeliczenie: save(), saveStatusMappings(), syncStatuses() — każda ≤3 return AC-4 satisfied: ShopproIntegrationsController::save() i inne metody mają ≤3 return statements

DO NOT CHANGE

  • Logika biznesowa (warunki, komunikaty błędów, redirect paths, flash keys)
  • Inne metody poza wymienionymi — nie ruszaj
  • Pliki widoków, routes/web.php, inne kontrolery

SCOPE LIMITS

  • Refaktoryzacja strukturalna tylko w 2 plikach
  • Nowe private helper methods — tylko walidacja (nie wydzielaj logiki zapisu do bazy)
  • Nie wydzielaj metod do osobnych klas (to jest zakres planu 06-05)
  • Nie zmieniaj visibility metod (public/private)
Przed zamknięciem planu: - [ ] php -l src/Modules/Settings/AllegroIntegrationController.php — brak błędów - [ ] php -l src/Modules/Settings/ShopproIntegrationsController.php — brak błędów - [ ] Ręczne sprawdzenie: save() i oauthCallback() w AllegroIntegrationController — ≤3 return każda - [ ] Ręczne sprawdzenie: save() w ShopproIntegrationsController — ≤3 return - [ ] sonar-scanner uruchomiony — S1142 violations zmalały

<success_criteria>

  • Oba pliki bez błędów składniowych
  • save(), saveImportSettings(), oauthCallback() (Allegro) — ≤3 return każda
  • save() (Shoppro) — ≤3 return
  • SonarQube S1142 spada o min. 10 violations </success_criteria>
Po zakończeniu utwórz `.paul/phases/06-sonarqube-quality/06-02-SUMMARY.md`