使用 pygount 分析仓库的代码行数、语言分布、文件数量和代码/注释比率。
pip install --break-system-packages pygount 2>/dev/null || pip install pygount
获取完整的语言分布,包括文件数量、代码行数和注释行数:
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 会遍历它们,可能耗时很长或卡住。
根据项目类型调整:
# Python 项目
--folders-to-skip=".git,venv,.venv,__pycache__,.cache,dist,build,.tox,.eggs,.mypy_cache"
# JavaScript/TypeScript 项目
--folders-to-skip=".git,node_modules,dist,build,.next,.cache,.turbo,coverage"
# 通用兜底
--folders-to-skip=".git,node_modules,venv,.venv,__pycache__,.cache,dist,build,.next,.tox,vendor,third_party"
# 仅统计 Python 文件
pygount --suffix=py --format=summary .
# 仅统计 Python 和 YAML
pygount --suffix=py,yaml,yml --format=summary .
# 默认格式显示每个文件的明细
pygount --folders-to-skip=".git,node_modules,venv" .
# 按代码行数排序(通过 sort 管道)
pygount --folders-to-skip=".git,node_modules,venv" . | sort -t$'t' -k1 -nr | head -20
# 摘要表格(默认推荐)
pygount --format=summary .
# JSON 输出(程序化使用)
pygount --format=json .
# 管道友好格式:语言、文件数、代码、文档、空行、字符串
pygount --format=summary . 2>/dev/null
摘要表格列含义:
特殊伪语言:
__empty__——空文件__binary__——二进制文件(图片、编译产物等)__generated__——自动生成的文件(启发式检测)__duplicate__——内容完全相同的文件__unknown__——无法识别的文件类型--folders-to-skip,pygount 会遍历所有内容,大型依赖树可能耗时几分钟或卡住。wc -l。--suffix 针对特定语言而非扫描全部。
评论区