Po trzech latach rozwoju ogłoszono wydanie nowej wersji narzędzia GNU cflow 1.7. Ci, którzy nie są świadomi tego narzędzia, powinni wiedzieć, że jest przeznaczony do budowania wizualnego wykresu wywołań funkcji w programach C, które można wykorzystać do uproszczenia badania logiki aplikacji.
Tabelalub jest zbudowany wyłącznie z analizy tekstów źródłowych, bez konieczności uruchamiania programu, dodatkowo obsługuje generowanie wykresów przepływu w przód i wstecz, a także generowanie list odsyłaczy dla plików z kodem.
Pakiet jest w pełni funkcjonalny, kompiluje się i działa na dowolnej dystrybucji GNU/Linux, a także na nowszych systemach typu UNIX. Obsługuje wszystkie wymagane przez POSIX przełączniki wiersza poleceń. Jest w stanie generować wyniki w dwóch formatach: w formacie GNU cflow (który jest domyślny) oraz w formacie POSIX.
Obecnie narzędzie może przetwarzać tylko czcionki C, ponieważ jest to jedyne odstępstwo od specyfikacji POSIX, która wymaga możliwości przetwarzania czcionek YACC i LEX, a także binarnych plików obiektowych.
Moduł Emacs cflow-mode.el pracuje z plikami w formacie GNU cflow (w przeciwieństwie do formatu POSIX) i został przetestowany z Emacs 24.2.1.
Główne nowe funkcje GNU cflow 1.7
W tej nowej wersji wydania godne uwagi ze względu na implementację obsługi formatu wyjściowego „kropka” ('–format=dot'), aby wygenerować wynik DOT do dalszego przetwarzania w pakiecie Graphviz.
Ponadto podkreśla się, że dodano możliwość określenia wielu funkcji startowych poprzez zduplikowanie opcji '–main', który zostanie wygenerowany z osobnym wykresem dla każdej z tych funkcji.
Należy również zauważyć, że opcja została dodana „–target=FUNCTION”, aby ograniczyć wynikowy wykres tylko do jednej gałęzi który zawiera pewne funkcje (opcję „–target” można podać wielokrotnie).
Kolejną zmianą, która została zintegrowana z tą nową wersją GNU cflow 1.7, jest to, że dodano nowe polecenia do nawigacji po mapach cflow-mode:”c”, który służy do przejścia do funkcji wywołującej, „n” służy do przejścia do następnej funkcji na tym poziomie zagnieżdżenia i „p” do przejścia do poprzedniej funkcji o tym samym poziomie zagnieżdżenia .
Z drugiej strony, w ogłoszeniu o nowej wersji GNU cflow 1.7 wspomniano, że również… usunięto dwie luki zidentyfikowane w 2019 r. powodujące uszkodzenie pamięci podczas przetwarzania specjalnie spreparowanych tekstów źródłowych w cflow.
Spośród naprawionych luk wymieniono następujące:
- Pierwsza podatność (CVE-2019-16165) występuje, gdy dostęp do pamięci następuje po zwolnieniu (użyj po zwolnieniu) w kodzie parsera (funkcja, do której odwołuje się parser.c).
- Druga podatność (CVE-2019-16166) związana jest z przepełnieniem bufora w funkcji nexttoken(). Zdaniem twórców problemy te nie stanowią zagrożenia dla bezpieczeństwa, ponieważ ograniczają się do nieprawidłowego zakończenia działania narzędzia.
W końcu jeśli chcesz dowiedzieć się więcej na ten temat o nowej wersji możesz sprawdzić szczegóły w poniższy link.
Jak zainstalować cflow w systemie Linux?
Ci, którzy są zainteresowani możliwością zainstalowania tego narzędzia w swoim systemie, powinni wiedzieć, że cflow znajduje się w repozytoriach niektórych głównych dystrybucji Linuksa. Wspomnę tylko, że w niektórych z nich nowa wersja nie została jeszcze zaimplementowana, ale będzie gotowa za kilka dni.
W przypadku użytkowników Debiana, Ubuntu lub dowolnej ich pochodnej, mogą zainstalować z terminala, wpisując następujące polecenie:
sudo apt install cflow -y
W przypadku użytkowników Arch Linux, Manjaro lub jakiejkolwiek innej dystrybucji wywodzącej się z nich, instalacja musi być wykonana z repozytoriów AUR:
yay -s cflow
Jeśli chodzi o tych, którzy są zainteresowani możliwością skompilowania nowej wersji, mogą ją uzyskać od następujący link.