Code Diagrams
pydeps vs Pyan vs Pyreverse
The primary difference between pydeps, Pyan, and Pyreverse lies in the “level” of the code they visualize: pydeps focuses on high-level module imports, Pyreverse focuses on object-oriented class structures (UML), and Pyan focuses on granular function-to-function call graphs.
Pyan # function; 圖很亂,大量重疊
pydeps # import
pydeps
1
uv run pydeps app.py -x textual -x datetime
👉 這是你版本的「正確 exclude 用法」
Pyreverse
Pyreverse 在 pylint 包中,需要下載 pylint 以及繪圖軟體 graphviz。
1
2
pip install pylint
scoop install graphviz
接下來就可以開始分析,語法是 pyreverse -o <格式> -p <名稱> <要分析的檔案>。分析的檔案也可以直接是一整個 package,我們以 gallery-dl 為例,用法會變成
1
2
3
git clone --depth=1 https://github.com/mikf/gallery-dl.git
pyreverse -o png -p test ./gallery-dl/gallery_dl
如果遇到解析度問題可以設定輸出成 pdf,首先要轉成 dot 檔案再經由 graphviz 轉換成 pdf,並且加上顏色,然後只顯示類別名稱,指令如下
1
2
pyreverse --colorized --only-classnames -o dot -p gallery-dl ./gallery-dl/gallery_dl
dot -Tpdf classes_gallery-dl.dot -o classes_gallery-dl.pdf
https://zsl0621.cc/memo/python/pyreverse-usage
Diagrams:代碼即架構圖 (Diagrams as Code)
Mermaid & UML
Pyan & Pylint:自動分析程式碼架構
若你的專案很大,想自動分析現有代碼的呼叫關係:
- Pyan:可以分析 Python 代碼並生成模組間的呼叫關係圖 (Call Graph)。
- Pyreverse (隨 Pylint 安裝):自動根據你的專案代碼產生 UML 類別圖。
--
Comments powered by Disqus.