mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-13 16:01:13 +01:00
fix: the bugs and vulnerabilities SonarCloud reports on PR #216
This commit is contained in:
20
pr-reviews/PR-234.md
Normal file
20
pr-reviews/PR-234.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Review PR #234 — Train: Handle 3-way light switches in headlighttoggle actions
|
||||
|
||||
Autor: @dos1 · base: `master` · 1 plik (`vehicle/Train.cpp`), +60/−16
|
||||
https://github.com/MaSzyna-EU07/maszyna/pull/234
|
||||
|
||||
**Werdykt: Approve z uwagami (głównie refaktor i opis zmiany zachowania)**
|
||||
|
||||
## Podsumowanie
|
||||
`headlighttoggleleft/right` dla przełączników 3-pozycyjnych (brak `ggLeftEndLightButton`, jest `ggLeftLightButton`) cyklicznie przełącza: wył. → reflektor → czerwone → wył. Dzięki temu przełącznik da się obsłużyć myszą/VR. Poprzednia uwaga @jakubg1 (pojazdy bez przełączników) jest zaadresowana warunkiem `|| ggLeftLightButton.SubModel == nullptr`.
|
||||
|
||||
## Uwagi
|
||||
1. **Zmiana zachowania klawiatury.** `headlighttoggle*` to ta sama komenda, którą wywołuje klawisz. Na ~110 pojazdach z listy (303E, 4E, EN57, ET22, TEM2…) drugie wciśnięcie klawisza zapali teraz czerwone zamiast zgasić reflektor, a dopiero trzecie zgasi. To może zaskoczyć graczy (i scenariusze szkoleniowe). Proszę opisać to wprost w PR, albo rozważyć rozróżnienie źródła (mysz/VR vs klawiatura) — np. przez osobną komendę „cycle” dla kliknięcia na przełącznik.
|
||||
2. **Duplikacja.** Blok lewy i prawy są identyczne poza maskami i przyciskami — razem ~60 linii kopii. Warto wyciągnąć helper w anonimowym namespace, np.
|
||||
```cpp
|
||||
void toggle_headlight_3way(TTrain *Train, command_data const &Command, side Side);
|
||||
```
|
||||
albo przynajmniej `bool has_3way_switch(TGauge const &End, TGauge const &Main)`. Ta sama heurystyka („brak dedykowanego przełącznika = 3-way”) jest już w `OnCommand_redmarkerenableleft` — dobrze mieć ją w jednym miejscu.
|
||||
3. **Złożoność.** Dodatkowe zagnieżdżenie `if` w `if (GLFW_PRESS)` może podbić S134/S3776 w Sonarze (QG przeszedł, ale warto zerknąć na szczegóły). Wczesny `return` dla `Command.action != GLFW_PRESS` uprości kod.
|
||||
4. **Stan niespójny.** Jeśli oba bity (`headlight_left` i `redmarker_left`) są ustawione (np. przez inną komendę/skrypt), gałąź `else if` przejdzie na czerwone — OK, ale warto to świadomie skomentować.
|
||||
5. Formatowanie: `} else {` w jednej linii odbiega od stylu reszty pliku (klamra w nowej linii).
|
||||
Reference in New Issue
Block a user