Перейти к содержанию

На этой странице Инспекция кодовых баз с помощью 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__ — нераспознанные типы файлов

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

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

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

  6. Справочник: полный SKILL.md
  7. Когда использовать
  8. Предварительные требования
  9. 1\. Базовая сводка (самое частое)
  10. 2\. Типовые исключения папок
  11. 3\. Фильтрация по конкретному языку
  12. 4\. Детальный вывод по файлам
  13. 5\. Форматы вывода
  14. 6\. Интерпретация результатов
  15. Подводные камни