跳到主要內容

代碼庫檢查

使用 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__ — 無法識別的文件類型

常見陷阱

  1. 始終排除 .git、node_modules、venv — 如果不使用 --folders-to-skip,pygount 將遍歷所有內容,在大型依賴樹上可能需要數分鐘或掛起。
  2. Markdown 顯示為 0 代碼行 — pygount 將所有 Markdown 內容歸類為註釋,而非代碼。這是預期行為。
  3. JSON 文件顯示的代碼行數較少 — pygount 可能會保守地計算 JSON 行數。如需準確的 JSON 行數,請直接使用 wc -l
  4. 大型單體倉庫 — 對於非常大的倉庫,考慮使用 --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__ — 無法識別的文件類型

常見陷阱

  1. 始終排除 .git、node_modules、venv — 如果不使用 --folders-to-skip,pygount 將遍歷所有內容,在大型依賴樹上可能需要數分鐘或掛起。
  2. Markdown 顯示為 0 代碼行 — pygount 將所有 Markdown 內容歸類為註釋,而非代碼。這是預期行為。
  3. JSON 文件顯示的代碼行數較少 — pygount 可能會保守地計算 JSON 行數。如需準確的 JSON 行數,請直接使用 wc -l
  4. 大型單體倉庫 — 對於非常大的倉庫,考慮使用 --suffix 針對特定語言,而不是掃描所有內容。