Инструмент статического анализа PHP, который находит ошибки в коде, не запуская его.
tach-org/tach
Инструмент для Python на Rust, который визуализирует зависимости между модулями и публичные интерфейсы кодовой базы и следит за их соблюдением.
- Звёзды
- 2,862
- Форки
- 98
- Открытые issues
- 56
- Последний коммит
- 9 дней назад
Что это?
Tach помогает Python-проектам сохранять границы между модулями. Вы задаёте, каким модулям разрешено зависеть друг от друга, а Tach проверяет импорты по этим правилам и отмечает те, которые нарушают границы. Также он позволяет ограничить вызовы между модулями объявленным публичным интерфейсом и обнаруживать циклы в графе зависимостей.
Инструмент рассчитан на модульные монолиты и подходит для постепенного внедрения: можно отслеживать только выбранные пакеты. Настройка проходит в интерактивном режиме с помощью `tach init`, а при нарушениях `tach check` завершается с ненулевым кодом — поэтому его удобно запускать в CI или как pre-commit hook.
Tach также умеет визуализировать граф зависимостей: в виде веб-страницы с помощью `tach show --web` или локального файла GraphViz DOT. Команда `tach report` выводит зависимости и места использования для указанного пути.
Ключевые возможности
- 01Проверяет импорты на соответствие объявленным зависимостям между модулями
- 02Ограничивает вызовы между модулями их публичными интерфейсами
- 03Обнаруживает циклы в графе зависимостей
- 04Поддерживает постепенное внедрение: можно отметить только выбранные модули
- 05Визуализирует зависимости в виде веб-графа или в формате GraphViz DOT
- 06Интегрируется с CI и pre-commit hooks, завершаясь с ненулевым кодом при нарушениях
Сценарии использования
- Соблюдение слоистой или модульной архитектуры в крупном монолите на Python
- Предотвращение нежелательных импортов между пакетами в монорепозитории на Python
- Постепенное внедрение архитектурных правил в существующую кодовую базу
- Анализ структуры зависимостей проекта по сгенерированному графу
Быстрый старт
- 1
Установите Tach из PyPI
pip install tach - 2
Запустите интерактивную настройку, чтобы задать границы модулей
tach init - 3
Примените настроенные ограничения из корневого каталога проекта
tach check
Что важно знать
- Поддерживаются только кодовые базы на Python.
- Границы проверяются статически, а зависимости между модулями необходимо вручную указывать в tach.toml.
В подборках
Темы
Частые вопросы
- Что такое tach?
- Инструмент для Python на Rust, который визуализирует зависимости между модулями и публичные интерфейсы кодовой базы и следит за их соблюдением. Tach помогает Python-проектам сохранять границы между модулями. Вы задаёте, каким модулям разрешено зависеть друг от друга, а Tach проверяет импорты по этим правилам и отмечает те, которые нарушают границы. Также он позволяет ограничить вызовы между модулями объявленным публичным интерфейсом и обнаруживать циклы в графе зависимостей.
- tach можно использовать бесплатно? Какая у него лицензия?
- tach распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- tach всё ещё поддерживается?
- Активно поддерживается. Последний коммит в tach — 29 окт. 2026 г..
- Для чего можно использовать tach?
- Соблюдение слоистой или модульной архитектуры в крупном монолите на Python Предотвращение нежелательных импортов между пакетами в монорепозитории на Python Постепенное внедрение архитектурных правил в существующую кодовую базу Анализ структуры зависимостей проекта по сгенерированному графу
- Как установить tach?
- Установите Tach из PyPI: pip install tach Запустите интерактивную настройку, чтобы задать границы модулей: tach init Примените настроенные ограничения из корневого каталога проекта: tach check
- Где скачать tach?
- Исходный код и инструкции по установке — на GitHub: https://github.com/tach-org/tach
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Быстрый настраиваемый линтер для Go, заменяющий golint и поддерживающий пользовательские правила и форматы вывода.
Go CLI, который запускает любые линтеры и инструменты анализа кода и публикует их замечания в GitHub, GitLab или Bitbucket только для изменённых строк.
Статический анализатор Python: находит ошибки, проверяет соблюдение стандартов кодирования и выявляет проблемы в коде, не запуская его.
Расширяемый линтер для ECMAScript/JavaScript, который находит проблемные конструкции в коде и умеет автоматически исправлять многие из них.
Статический анализатор, который находит ошибки в коде на Java, C, C++ и Objective-C без его запуска.