Plany dla php:S112, S1142, S1192, S3776, S1448, S138 — gotowe do APPLY. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.2 KiB
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 |
|
true |
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.
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)
<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>