Инспекция кодовой базы
Инспекция кодовых баз с помощью pygount: LOC, языки, соотношения.
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/github/codebase-inspection |
| Версия | 1.0.0 |
| Автор | VibeOS |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | LOC, Анализ кода, pygount, Кодовая база, Метрики, Репозиторий |
| Связанные навыки | github-repo-management |
Справочник: полный SKILL.md
к сведению
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Это инструкции, которые видит агент, когда навык активен.
Инспекция кодовой базы с помощью 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
--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"
3. Фильтрация по конкретному языку
# Подсчитать только файлы Python
pygount --suffix=py --format=summary .
# Подсчитать только Python и YAML
pygount --suffix=py,yaml,yml --format=summary .
4. Детальный вывод по файлам
# Формат по умолчанию показывает разбивку по файлам
pygount --folders-to-skip=".git,node_modules,venv" .
# Сортировка по строкам кода (через sort)
pygount --folders-to-skip=".git,node_modules,venv" . | sort -t$'\t' -k1 -nr | head -20
5. Форматы вывода
# Таблица-сводка (рекомендуется по умолчанию)
pygount --format=summary .
# Вывод в JSON для программного использования
pygount --format=json .
# Удобный для конвейера: язык, количество файлов, код, документация, пустые строки, строки
pygount --format=summary . 2>/dev/null
6. Интерпретация результатов
Столбцы таблицы-сводки:
- Language — обнаруженный язык программирования
- Files — количество файлов на этом языке
- Code — строки фактического кода (исполняемого/декларативного)
- Comment — строки, являющиеся комментариями или документацией
- % — процент от общего числа
Специальные псевдоязыки:
__empty__— пустые файлы__binary__— бинарные файлы (изображения, скомпилированные и т.д.)__generated__— автоматически сгенерированные файлы (обнаруживаются эвристически)__duplicate__— файлы с идентичным содержимым__unknown__— нераспознанные типы файлов
Подводные камни
- Всегда исключайте .git, node_modules, venv — без
--folders-to-skippygount просканирует всё и может занять минуты или зависнуть на больших деревьях зависимостей. - Markdown показывает 0 строк кода — pygount классифицирует всё содержимое Markdown как комментарии, а не код. Это ожидаемое поведение.
- Файлы JSON показывают низкое количество кода — pygount может консервативно подсчитывать строки JSON. Для точного подсчёта строк JSON используйте
wc -lнапрямую. - Большие монорепозитории — для очень больших репозиториев рассмотрите использование
--suffixдля нацеливания на конкретные языки вместо сканирования всего.