代碼庫檢查
使用 pygount 檢查和分析代碼庫,以統計代碼行數 (LOC)、語言分佈以及代碼與註釋的比例。當被要求檢查代碼行數、倉庫大小、語言組成或代碼庫統計數據時使用此技能。
技能元數據
| 來源 | 捆綁(默認安裝) |
| 路徑 | skills/github/codebase-inspection |
| 版本 | 1.0.0 |
| 作者 | Hermes Agent |
| 許可證 | MIT |
| 標籤 | LOC, Code Analysis, pygount, Codebase, Metrics, Repository |
| 相關技能 | github-repo-management |
參考:完整 SKILL.md
信息
以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理看到的指令。
使用 pygount 進行代碼庫檢查
使用 pygount 分析倉庫的代碼行數、語言分佈、文件數量以及代碼與註釋的比例。
何時使用
- 用戶詢問 LOC(代碼行數)計數
- 用戶希望瞭解倉庫的語言分佈
- 用戶詢問代碼庫的大小或組成
- 用戶希望獲取代碼與註釋的比例
- 一般的“這個倉庫有多大”的問題
前提條件
pip install --break-system-packages pygount 2>/dev/null || pip install pygount
1. 基本摘要(最常見)
獲取包含文件數量、代碼行數和註釋行數的完整語言分佈:
cd /path/to/repo
pygount --format=summary \
--folders-to-skip=".git,node_modules,venv,.venv,__pycache__,.cache,dist,build,.next,.tox,.eggs,*.egg-info" \
.
重要: 始終使用 --folders-to-skip 排除依賴項/構建目錄,否則 pygount 將遍歷這些目錄,導致耗時極長或掛起。
2. 常見文件夾排除
根據項目類型進行調整:
# Python projects
--folders-to-skip=".git,venv,.venv,__pycache__,.cache,dist,build,.tox,.eggs,.mypy_cache"
# JavaScript/TypeScript projects
--folders-to-skip=".git,node_modules,dist,build,.next,.cache,.turbo,coverage"
# General catch-all
--folders-to-skip=".git,node_modules,venv,.venv,__pycache__,.cache,dist,build,.next,.tox,vendor,third_party"
3. 按特定語言過濾
# Only count Python files
pygount --suffix=py --format=summary .
# Only count Python and YAML
pygount --suffix=py,yaml,yml --format=summary .
4. 詳細的逐文件輸出
# Default format shows per-file breakdown
pygount --folders-to-skip=".git,node_modules,venv" .
# Sort by code lines (pipe through sort)
pygount --folders-to-skip=".git,node_modules,venv" . | sort -t
## 5. 輸出格式
```bash
# Summary table (default recommendation) \{#5-output-formats}
pygount --format=summary .
# JSON output for programmatic use \{#6-interpreting-results}
pygount --format=json .
# Pipe-friendly: Language, file count, code, docs, empty, string \{#pitfalls}
pygount --format=summary . 2>/dev/null
6. 解讀結果
摘要表格列說明:
- Language — 檢測到的編程語言
- Files — 該語言的文件數量
- Code — 實際代碼行數(可執行/聲明性)
- Comment — 註釋或文檔行數
- % — 佔總數的百分比
特殊偽語言:
__empty__— 空文件__binary__— 二進制文件(圖像、編譯文件等)__generated__— 自動生成的文件(通過啟發式方法檢測)__duplicate__— 內容相同的文件__unknown__— 無法識別的文件類型
常見陷阱
- 始終排除 .git、node_modules、venv — 如果不使用
--folders-to-skip,pygount 將遍歷所有內容,在大型依賴樹上可能需要數分鐘或掛起。 - Markdown 顯示為 0 代碼行 — pygount 將所有 Markdown 內容歸類為註釋,而非代碼。這是預期行為。
- JSON 文件顯示的代碼行數較少 — pygount 可能會保守地計算 JSON 行數。如需準確的 JSON 行數,請直接使用
wc -l。 - 大型單體倉庫 — 對於非常大的倉庫,考慮使用
--suffix針對特定語言,而不是掃描所有內容。\t' -k1 -nr | head -20
## 5. 輸出格式
```bash
# Summary table (default recommendation)
pygount --format=summary .
# JSON output for programmatic use
pygount --format=json .
# Pipe-friendly: Language, file count, code, docs, empty, string
pygount --format=summary . 2>/dev/null
6. 解讀結果
摘要表格列說明:
- Language — 檢測到的編程語言
- Files — 該語言的文件數量
- Code — 實際代碼行數(可執行/聲明性)
- Comment — 註釋或文檔行數
- % — 佔總數的百分比
特殊偽語言:
__empty__— 空文件__binary__— 二進制文件(圖像、編譯文件等)__generated__— 自動生成的文件(通過啟發式方法檢測)__duplicate__— 內容相同的文件__unknown__— 無法識別的文件類型
常見陷阱
- 始終排除 .git、node_modules、venv — 如果不使用
--folders-to-skip,pygount 將遍歷所有內容,在大型依賴樹上可能需要數分鐘或掛起。 - Markdown 顯示為 0 代碼行 — pygount 將所有 Markdown 內容歸類為註釋,而非代碼。這是預期行為。
- JSON 文件顯示的代碼行數較少 — pygount 可能會保守地計算 JSON 行數。如需準確的 JSON 行數,請直接使用
wc -l。 - 大型單體倉庫 — 對於非常大的倉庫,考慮使用
--suffix針對特定語言,而不是掃描所有內容。