經過三年的發展 宣布發布新版 GNU cflow 實用程序 1.7。 對於那些不知道這個實用程序的人,他們應該知道它是 旨在構建 C 程序中函數調用的可視化圖,可以用來簡化應用邏輯的研究。
圖表或者它只是從源文本的分析中構建的,無需運行程序,另外它支持生成正向和反向流程圖,以及生成帶有代碼的文件的交叉引用列表。
該軟件包功能齊全,可在任何 GNU/Linux 發行版以及較新的類 UNIX 系統上編譯和運行。 它支持 POSIX 所需的所有換行命令。 它能夠以兩種格式生成輸出:GNU cflow 格式(這是默認格式)和 POSIX 格式。
目前,該實用程序只能處理 C 字體,因為這是與 POSIX 規範的唯一偏差,這需要能夠處理 YACC 和 LEX 字體以及二進制對象文件。
cflow-mode.el Emacs 模塊適用於 GNU cflow 格式(與 POSIX 格式相反)的文件,並已使用 Emacs 24.2.1 進行了測試。
GNU cflow 1.7 的主要新特性
在這個新的發布版本中 值得注意的是實現對“點”輸出格式的支持 ('–format=dot') 生成 DOT 結果,以便在 Graphviz 包中進行進一步處理。
此外,還強調 添加了通過複製“-main”選項來指定多個啟動功能的能力, 將為這些函數中的每一個生成一個單獨的圖表。
還注意到該選項已添加 "–target=FUNCTION" 將結果圖限制為一個分支 其中包括某些功能(“–target”選項可以指定多次)。
這個新版本的 GNU cflow 1.7 中集成的另一個變化是 添加了用於圖表導航的新命令 cflow-mode:“c”用於跳轉到調用函數,“n”用於跳轉到本層嵌套的下一個函數,“p”跳轉到同層嵌套的前一個函數.
另一方面,在新版 GNU cflow 1.7 的公告中也提到了 刪除了兩個漏洞 在 2019 年發現的在 cflow 中處理特製源文本時會導致內存損壞。
在已修復的漏洞中,提到了以下幾點:
- 第一個漏洞 (CVE-2019-16165) 發生在解析器代碼(parser.c 中引用的函數)中釋放(use-after-free)之後訪問內存時。
- 第二個漏洞(CVE-2019-16166)與 nexttoken() 函數中的緩衝區溢出有關。 在開發人員看來,這些問題並不代表安全威脅,因為它們僅限於實用程序的異常終止。
終於 如果您有興趣了解更多信息 關於這個新版本,您可以在 以下鏈接。
如何在 Linux 上安裝 cflow?
對於那些有興趣在他們的系統上安裝這個實用程序的人,他們應該知道 cflow 位於一些主要 Linux 發行版的存儲庫中。 我只需要提到,新版本還沒有在其中一些實現,但它會在幾天內準備好。
對於 Debian、Ubuntu 或其任何衍生產品的用戶,他們可以通過輸入以下命令從終端安裝:
sudo apt install cflow -y
對於 Arch Linux、Manjaro 或從這些衍生的任何其他發行版的用戶,必須從 AUR 存儲庫進行安裝:
yay -s cflow
有興趣可以編譯新版本的可以從 以下鏈接。