Zastanawiam się, czy istnieje jakiś tool do analizy kodu który umożliwia sprawdzenie czy dany member unii został zainicjalizowany ? Albo czy gdzieś nie ma próby dostępu niezainicjalizowanego obszaru pamięci wewnątrz obecnie aktywnego membera unii(który np. jest strukturą) ? Valgrind czy clang-analyzer nie radzą sobie z tym. Słyszałem jeszcze o zestawie tooli Frama-C ale nie mam z tym żadnych doświadczeń.
0
4
Potrzebujesz unii? W takim razie w C++17 używaj std::variant
, który obsługuję unię w bezpieczny sposób.
A z narzędzi to polecam używać "Address sanitizer" dostępny w Clang i Gcc, który potrafi wykryć takie błędy.
clang-analyzer
to jest narzędzie statycznej analizy kodu.
Natomiast Valgrind
sprawdza kod w runtime (ergo porównujesz dwie różne rzeczy). Clang ma zestaw "Sanitizer'ów", które skutecznie zastępują funkcje Valgrind
. W połączaniu z Xcode to są bardzo poręczne.