Инспекция кодовой базы

Анализирует репозитории через pygount: LOC, языки, соотношения.

Метаданные навыка

ИсточникВстроенный (установлен по умолчанию)
Путьskills/software-development/codebase-inspection
Версия1.0.0
АвторHermes Agent
ЛицензияMIT
Платформыlinux, macos, windows
ТегиLOC, Code Analysis, pygount, Codebase, Metrics, Repository
Похожие навыкиgithub

Справочник: полный 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-проекты
--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" .

# Сортировка по строкам кода (через pipe в 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__ — нераспознанные типы файлов

Подводные камни

  1. Всегда исключайте .git, node_modules, venv — без --folders-to-skip pygount обойдёт всё подряд и на больших деревьях зависимостей может работать минутами или зависнуть.
  2. Markdown показывает 0 строк кода — pygount относит всё содержимое Markdown к комментариям, а не к коду. Это ожидаемое поведение.
  3. JSON-файлы показывают заниженное число строк кода — pygount может считать строки JSON консервативно. Для точного подсчёта строк в JSON используйте wc -l напрямую.
  4. Крупные монорепозитории — для очень больших репозиториев используйте --suffix, чтобы нацелиться на конкретные языки, а не сканировать всё подряд.
перевод и редактура:

обновлено

⌕ ESC