На этой странице Инспекция кодовых баз с помощью pygount: строки кода, языки, соотношения.
Метаданные навыка¶
| Источник |
| Путь |
| Версия |
| Автор |
| Лицензия |
| Теги |
| Связанные навыки |
Справочник: полный SKILL.md¶
info Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Это инструкции, которые видит агент, когда навык активен.
Инспекция кодовой базы с помощью pygount¶
Анализ репозиториев: строки кода, разбивка по языкам, количество файлов и соотношение кода и комментариев с помощью pygount.
Когда использовать¶
- Пользователь просит подсчитать LOC (строки кода)
- Пользователь хочет получить разбивку по языкам в репозитории
- Пользователь спрашивает о размере или составе кодовой базы
- Пользователь хочет узнать соотношение кода и комментариев
- Общие вопросы вроде «насколько большой этот репозиторий»
Предварительные требования¶
[code] pip install --break-system-packages pygount 2>/dev/null || pip install pygount
[/code]
1\. Базовая сводка (самое частое)¶
Получите полную разбивку по языкам с количеством файлов, строками кода и строками комментариев:
[code]
cd /path/to/repo
pygount --format=summary \
--folders-to-skip=".git,node_modules,venv,.venv,pycache,.cache,dist,build,.next,.tox,.eggs,*.egg-info" \
.
[/code]
ВАЖНО: Всегда используйте --folders-to-skip, чтобы исключить директории зависимостей и сборки — иначе pygount просканирует их и будет выполняться очень долго или зависнет.
2\. Типовые исключения папок¶
Настраивайте в зависимости от типа проекта:
[code]
# 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"
[/code]
3\. Фильтрация по конкретному языку¶
[code]
# Только Python-файлы
pygount --suffix=py --format=summary .
# Только Python и YAML
pygount --suffix=py,yaml,yml --format=summary .
[/code]
4\. Детальный вывод по файлам¶
[code]
# Формат по умолчанию — разбивка по файлам
pygount --folders-to-skip=".git,node_modules,venv" .
# Сортировка по строкам кода (через sort)
pygount --folders-to-skip=".git,node_modules,venv" . | sort -t$'\\t' -k1 -nr | head -20
[/code]
5\. Форматы вывода¶
[code]
# Таблица-сводка (рекомендуется по умолчанию)
pygount --format=summary .
# JSON для программного использования
pygount --format=json .
# Удобный для передачи в pipe: язык, кол-во файлов, код, документация, пустые строки, строка
pygount --format=summary . 2>/dev/null
[/code]
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для фильтрации по конкретным языкам вместо сканирования всего. - Справочник: полный SKILL.md
- Когда использовать
- Предварительные требования
- 1\. Базовая сводка (самое частое)
- 2\. Типовые исключения папок
- 3\. Фильтрация по конкретному языку
- 4\. Детальный вывод по файлам
- 5\. Форматы вывода
- 6\. Интерпретация результатов
- Подводные камни