Project code lines counter program
Project description
Конечно! Твой проект написан очень аккуратно, имеет строгую структуру, логирование, CLI-интерфейс на Typer и автоматический инкремент сборок.
Ниже представлен современный, стильный и структурированный файл README.md, адаптированный под твою кодовую базу.
# 🔍 LineInspector
[](https://www.python.org/)
[](#)
[](https://github.com/psf/black)
**LineInspector** — утилита командной строки (CLI) для быстрого анализа и подсчета строк кода, комментариев и пустых строк в текстовых файлах вашего проекта.
Программа автоматически ведет учет внутренних сборок, поддерживает гибкую фильтрацию через блек-листы и умеет сохранять детализированные логи результатов.
---
## ✨ Особенности
* 🚀 **CLI на базе Typer:** Полноценный консольный интерфейс с интуитивными флагами и автодокументацией.
* 📊 **Прогресс-бар:** Визуализация процесса сканирования большого количества файлов в реальном времени с помощью `rich`.
* 🛡️ **Безопасный пропуск ошибок:** Файлы с неподдерживаемой кодировкой автоматически игнорируются, не прерывая общую работу утилиты.
* 🏷️ **Автоматический инкремент сборок:** В режиме разработки (`DEVELOPMENT_BUILD = True`) утилита автоматически увеличивает номер релиза в JSON-счетчике.
* 📦 **Поддержка PyInstaller:** Полная совместимость путей при сборке приложения в единый исполняемый `.exe` файл (используется `sys._MEIPASS`).
---
## 🛠️ Архитектура кодовой базы
Программа спроектирована по модульному принципу:
└── core/ ├── util/ │ ├── pyinstaller_path.py # Разрешение путей для скомпилированного .exe │ └── run_counter.py # Логика работы со счетчиком версий (counter.json) ├── log.py # Инициализация Stream и File логгеров └── meta.py # Single Source of Truth для метаданных проекта └── main.py # Точка входа, парсинг CLI и логика подсчета строк
---
## 🚀 Установка и запуск
### Из исходного кода
1. Клонируйте репозиторий:
```bash
git clone [https://gogs.bormart.ru/akato-the-dragon/LineInspector.git](https://gogs.bormart.ru/akato-the-dragon/LineInspector.git)
cd LineInspector
- Установите необходимые зависимости (
typer,rich):
pip install -r requirements.txt
- Запустите программу:
python main.py --help
📖 Использование
Основные аргументы командной строки
| Флаг | Альтернатива | Тип | Описание | Default |
|---|---|---|---|---|
--path |
-p |
PATH |
Один или несколько путей (файлы/папки) для анализа | . (текущая папка) |
--blacklist |
-b |
TEXT |
Имена файлов или директорий, которые нужно пропустить | None |
--output |
-o |
PATH |
Путь к файлу для сохранения отчета (логов) | None |
--recursive |
-r |
FLAG |
Рекурсивный поиск файлов внутри директорий | False |
--version |
-v |
FLAG |
Показать автора, версию приложения и выйти | False |
Примеры использования
- Базовый анализ текущей директории (без вложенных папок):
python main.py
- Рекурсивный анализ проекта с игнорированием виртуального окружения и кэша:
python main.py -p . --recursive -b .git -b .venv -b __pycache__ -b node_modules
- Анализ конкретных файлов и папок с записью результатов в лог-файл:
python main.py -p core/ -p main.py -r -o reports/report.txt
- Проверка текущей версии программы:
python main.py --version
📊 Пример вывода результатов
После сканирования утилита выведет в терминал детализированную сводку:
Inspecting lines [━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━] 100%
[2026-06-07 16:56:00][INFO] - =============================================
[2026-06-07 16:56:00][INFO] - LINE INSPECTOR RESULTS
[2026-06-07 16:56:00][INFO] - =============================================
[2026-06-07 16:56:00][INFO] - Content lines (code): 142
[2026-06-07 16:56:00][INFO] - Commented lines: 24
[2026-06-07 16:56:00][INFO] - Empty lines: 32
[2026-06-07 16:56:00][INFO] - ---------------------------------------------
[2026-06-07 16:56:00][INFO] - Total Lines: 198
[2026-06-07 16:56:00][INFO] - Total Files Processed: 5
[2026-06-07 16:56:00][INFO] - =============================================
📝 Спецификация логики подсчета
- Пустая строка: Строка, которая после удаления пробельных символов (
.strip()) имеет нулевую длину. - Строка комментария: Строка, которая после удаления пробелов начинается строго с символа
#. - Строка кода: Любая другая непустая строка, не являющаяся однострочным комментарием.
👤 Разработчик
- Автор: akato-the-dragon
- Студия: AkatoDevStudio
- Email: e-stepanov-ig@yandex.ru
© 2026 AkatoDevStudio. Все права защищены. Лицензия: Private.
---
### 💡 Пару советов по оформлению твоего репозитория:
1. Замени блок `[]`, если ты форматируешь код не через **Black** (например, через Ruff или autopep8).
2. Таблица аргументов полностью синхронизирована с твоими декораторами `typer.Option()` из файла `main.py`. Если добавишь новые фичи — просто допиши новые строки в Markdown-таблицу.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file line_inspector-1.0.3.tar.gz.
File metadata
- Download URL: line_inspector-1.0.3.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6fb76febcb29dc5b75d06c13a9443d32e758b30f7abacfd754c8d0ff25a7ea4
|
|
| MD5 |
8facac64d1891fd7313a4dfe497f37c5
|
|
| BLAKE2b-256 |
3b2dccea91749cad6ed6fe153d0e3974cd3125a434000076fd9d95cc9d9c3a9a
|
File details
Details for the file line_inspector-1.0.3-py3-none-any.whl.
File metadata
- Download URL: line_inspector-1.0.3-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3df25426d767e90924e06ec8148923075f7cf4261a859e440380e26368b15d8e
|
|
| MD5 |
7401d817c4a7155a683d2991d79525db
|
|
| BLAKE2b-256 |
56ad8b4c14a0afb6279058137ab6098534817f2dd38015e274fe89828cefa951
|