Codebase Inspection
Анализ кодовой базы через pygount: LOC, языки, соотношения.
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/github/codebase-inspection |
| Версия | 1.0.0 |
| Автор | Hermes Agent |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | LOC, Code Analysis, pygount, Codebase, Metrics, Repository |
| Связанные навыки | github-repo-management |
Справочник: полный SKILL.md
инфо
Ниже — полное определение навыка, которое Hermes Agent загружает при его активации. Именно это агент видит как инструкции во время работы навыка.
Codebase Inspection with pygount
Анализируй репозитории по строкам кода, разбивке языков, количеству файлов и соотношению кода к комментариям с помощью pygount.
Когда использовать
- Пользователь просит посчитать LOC (lines of code)
- Нужна разбивка по языкам для репозитория
- Вопрос о размере или составе кодовой базы
- Нужно соотношение кода к комментариям
- Общие вопросы вида «насколько большой этот репозиторий»
Требования
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 .
# Pipe-совместимый формат: язык, кол-во файлов, код, документация, пустые строки, строковые литералы
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 консервативно. Для точного подсчёта используй
wc -lнапрямую. - Большие монорепозитории — для очень крупных репо лучше применять
--suffixи нацеливаться на конкретные языки, а не сканировать всё подряд.