高效能 Python 匯入與模組健康檢查工具(Rust 實作)
python-import-check 是一款以 Rust 開發、專為大型 Python 專案設計的自動化檢查工具。可遞迴掃描指定目錄下所有 Python 檔案,進行依賴分析、深度載入測試、資源監控(記憶體/CPU/載入速度)、循環引用、潛在記憶體洩漏、程式碼風格等多面向檢查,並以分組報表輸出所有異常。
# 需先安裝 Rust 與 Python3
cargo build --release
# 或直接使用 pip 安裝 Python 部分
pip install .python-import-check [參數]| 參數 | 型態 | 預設值 | 說明 |
|---|---|---|---|
| -d, --dir | 選用參數 | . | 指定要檢查的目錄 |
| -p, --python | 選用參數 | python3 | 指定 Python 執行路徑或 docker 指令 |
| -e, --exclude | 可多次 | 無 | 忽略特定資料夾,可重複指定 |
| --help | flag | 顯示說明 |
- 支援多重排除目錄(可重複 -e)。
- 可指定 docker 執行環境(如
--python "docker:python:3.11")。 - 預設會遞迴檢查所有 .py 檔案(排除 init.py)。
- 模組載入錯誤(MODULE_LOAD_ERROR)
- 執行時錯誤(RUNTIME_ERROR)
- 載入速度過慢(SLOW_LOAD)
- 記憶體用量異常(HIGH_MEMORY_USAGE)
- CPU 用量異常(HIGH_CPU_USAGE)
- 循環引用(CIRCULAR_REFERENCE)
- 潛在記憶體洩漏(POTENTIAL_MEMORY_LEAK)
- 代碼風格問題(如參數過多、函數過長、全域變數過多、萬用字元 import、import 過多、語法錯誤、單行過長、縮排混用等)
- 模組屬性異常、函數複雜度過高、分析錯誤等
python-import-checkpython-import-check -d ./python_import_check -e tests -e buildpython-import-check -d . -e test_bad.py -e test_good.pypython-import-check -d package1 -d package2 -d python_import_check/utils.pypython-import-check -p python3.12
python-import-check -p "docker:python:3.11"python-import-check --help- 若所有檔案皆通過,顯示:
所有Python檔案深度檢查通過! - 若有異常,依問題類型與檔案分組詳細列出,並統計各類型數量。
| 類型 | 說明 |
|---|---|
| MODULE_LOAD_ERROR | 模組無法載入(找不到 spec) |
| RUNTIME_ERROR | 執行時錯誤(import 或初始化例外) |
| SLOW_LOAD | 載入速度過慢 |
| HIGH_MEMORY_USAGE | 記憶體用量異常 |
| HIGH_CPU_USAGE | CPU 用量異常 |
| CIRCULAR_REFERENCE | 偵測到循環引用 |
| POTENTIAL_MEMORY_LEAK | 潛在記憶體洩漏 |
| STYLE_TOO_MANY_ARGUMENTS | 函數參數過多 |
| STYLE_FUNCTION_TOO_LONG | 函數/類別過長 |
| STYLE_TOO_MANY_GLOBALS | 全域變數過多 |
| STYLE_WILDCARD_IMPORT | 使用萬用字元(*)匯入 |
| STYLE_TOO_MANY_IMPORTS | import 敘述過多 |
| STYLE_SYNTAX_ERROR | 語法錯誤 |
| STYLE_LINE_TOO_LONG | 單行程式碼過長 |
| STYLE_MIXED_INDENTATION | 縮排混用空白與 tab |
| MANY_ATTRIBUTES | 模組屬性過多 |
| MODULE_ATTR_ERROR | 模組屬性檢查錯誤 |
| COMPLEX_FUNCTION | 函數複雜度過高 |
| FUNCTION_ANALYSIS_ERROR | 函數分析錯誤 |
| MODULE_CHECK_ERROR | 模組檢查過程發生錯誤 |
-
Q: 為何要用 Rust?
A: 提升大量檔案遞迴、依賴分析與資源監控效能,並可自動產生高效 Python 檢查腳本。 -
Q: 是否支援 Docker?
A: 可用-p "docker:python:3.11"或自訂 docker run 指令。 -
Q: 是否會修改原始檔案?
A: 不會,僅讀取與分析,不會更動任何檔案內容。
- python_import_check/
- complex_module.py
- config.py
- database.py
- high_cpu.py
- high_resource.py
- import_errors.py
- memory_leak.py
- memory_test.py
- utils.py
- circular/
- package1/
- package2/