17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-12 17:31:03 +01:00

fix: the bugs and vulnerabilities SonarCloud reports on PR #216

This commit is contained in:
2026-11-07 22:11:08 +01:00
parent 8e85def98f
commit 7667e5b2ec
65 changed files with 910 additions and 121 deletions

21
pr-reviews/PR-259.md Normal file
View File

@@ -0,0 +1,21 @@
# Review PR #259 — fix(cab): a diesel with only the starter button stops its engine with the main switch off command
Autor: @jerrrrycho · base: `master` · 4 pliki, +136/−1 · Fixes eu07/maszyna#427
https://github.com/MaSzyna-EU07/maszyna/pull/259
**Werdykt: Approve z drobnymi uwagami**
## Podsumowanie
SM03/SM04/2Ls150 (i DL2, ST44, TEM2) mają w kabinie tylko `main_on_bt`. `OnCommand_linebreakeropen()` dla takich pojazdów tylko animowało przycisk i wychodziło — silnika nie dało się zgasić. Teraz dla `DieselEngine`/`DieselElectric` komenda otwiera obwód (`MainSwitch(false)`), a przycisk rozruchu nie jest animowany.
## Co jest dobrze
- Bardzo dobra analiza przyczyny (automatyczna pompa paliwa + przetwornica podtrzymująca 110 V).
- Tabela „przed/po” z gry, lista dotkniętych pojazdów — zgodnie z `CLAUDE.md` (zmiana zachowania z istniejącymi danymi jest opisana).
- Świadome nieruszanie kwestii „pozycja 0 = stop” (to zmiana danych, wymaga decyzji).
## Uwagi
1. **Testy nie pokrywają właściwej zmiany.** Testy sprawdzają `MainSwitch(false)` w fizyce, co działało już przed PR. Zmieniona jest gałąź w `TTrain::OnCommand_linebreakeropen()`, której testy nie dotykają (TTrain nie jest linkowany w unit testach?). Test `REQUIRE(shunter->MainCircuitOpensWithStarterOnly())` sprawdza tylko typ silnika. Proponuję albo opisać to uczciwie w komentarzu testu, albo wydzielić decyzję „czy komenda otwiera obwód” do funkcji, którą da się przetestować bez `TTrain` (np. wolna funkcja przyjmująca: jest `main_off_bt`/`main_bt`/`main_on_bt` + typ silnika).
2. **Nazwa `MainCircuitOpensWithStarterOnly()` myli.** Funkcja nie sprawdza nic o kabinie/starterze — tylko typ silnika. Czytając `Train.cpp` można pomyśleć, że sprawdza konfigurację przycisków. Propozycja: `MainSwitchOffStopsEngine()` albo `IsDieselEngine()`; warunek o samym `main_on_bt` zostaje w `Train.cpp`.
3. **ST44 / TEM2** — dotąd gaszone pompą paliwa, teraz także `m`. Warto upewnić się u twórców tych pojazdów (lub w dokumentacji), że to pożądane — w realu TEM2 ma przycisk „stop silnika”, więc raczej tak, ale niech to będzie świadome.
4. **Brak wizualnej reakcji** po `m` na tych pojazdach — uzasadnione (trzymany przycisk uruchomiłby silnik), ale gracz może sądzić, że klawisz nie działa. Może dźwięk przełącznika (`dsbSwitch`) mimo braku animacji? Teraz `fMainRelayTimer = 0` daje dźwięk przekaźnika — proszę potwierdzić, że coś słychać.
5. Test JSON `diesel_shunter.json` — dobry, ale `_comment` zawiera opis SM03; warto dodać nazwę pliku `.fiz`, z którego pochodzą parametry, żeby dało się je zaktualizować.