GNU cflow 1.7 zostało już wydane i zawiera nowe polecenia i nie tylko

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.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.