mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-13 00:34:30 +01:00
fix: the bugs and vulnerabilities SonarCloud reports on PR #216
This commit is contained in:
29
pr-reviews/PR-243.md
Normal file
29
pr-reviews/PR-243.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Review PR #243 — Editor, NMT location: assign the place from the camera; //$g found in included files
|
||||
|
||||
Autor: @miloszunio · base: `feat/switch-blades` · 3 pliki, +55/−1
|
||||
https://github.com/MaSzyna-EU07/maszyna/pull/243
|
||||
|
||||
**Werdykt: Request changes (konflikty + struktura kodu)**
|
||||
|
||||
## Podsumowanie
|
||||
1. „Przypisz z kamery” — odwrotność „The scenery is here”: kliknięty punkt mapy = obecna pozycja kamery, z tego liczony jest początek układu (`E0 = E + x`, `N0 = N − z`).
|
||||
2. „Środek zapisany w pliku scenerii” — przywraca początek z linii `//$g`.
|
||||
3. `read_georeference()` szuka `//$g` także w plikach `include` (jeden poziom).
|
||||
|
||||
Bardzo przydatne — dziś jeden błędny klik psuł georeferencję.
|
||||
|
||||
## Co sprawdziłem
|
||||
- Wzór kamery jest zgodny z istniejącą konwersją w `editormode.cpp` (`config.north + Camera.Pos.z`, `config.east - Camera.Pos.x`). ✔
|
||||
- Kolejność `{m_georeference_origin.y, m_georeference_origin.x}` zgadza się z `nmt_place_scenery` (`Point.x = east`). ✔
|
||||
- `read_georeference()` jest wołane co klatkę w `render_nmt_place`, ale ma cache `m_georeference_read`, więc pliki czytane są raz. ✔
|
||||
|
||||
## Uwagi
|
||||
1. **Konflikty.** GitHub pokazuje stan `dirty` — PR wymaga rebase na aktualny `feat/switch-blades`. Jest też `split/3-switch-blades` — warto ustalić, na którą gałąź ma finalnie trafić.
|
||||
2. **Zagnieżdżenie i wcięcia w `read_georeference()`.** Wewnętrzna pętla nie została wcięta po dodaniu zewnętrznego `for`, a głębokość to teraz for→for→if→if→if — Sonar zgłosi S134 i prawdopodobnie S3776. Proponuję:
|
||||
- helper `std::optional<std::filesystem::path> include_target(std::string_view line)` w anonimowym namespace,
|
||||
- helper `bool parse_georeference_line(std::string const &line, …)`,
|
||||
- pętlę po plikach z wczesnym `continue`.
|
||||
3. **Ścieżki include.** `Global.asCurrentSceneryPath / name` — sprawdzić wielkość liter (na Linuksie `irt/IRT_sceneria.inc` vs `irt/irt_sceneria.inc`); funkcja dla głównego pliku już ma fallback na porównanie bez wielkości liter, include'y nie.
|
||||
4. **Limit `files.size() < 8`** — magiczna liczba, warto nazwaną stałą z komentarzem.
|
||||
5. **Ochrona przed pomyłką u źródła.** Skoro problemem jest przypadkowe „The scenery is here”, rozważyć potwierdzenie (popup) tego przycisku, gdy sceneria ma już `//$g` albo ułożone tory. Nowe przyciski to dobra droga powrotu, ale prewencja byłaby jeszcze lepsza.
|
||||
6. Opis PR zawiera link do sesji Claude Code — do usunięcia przed merge (nie wnosi nic dla recenzenta).
|
||||
Reference in New Issue
Block a user