一款 PHP 静态分析工具,无需运行代码即可发现潜在错误。
tach-org/tach
一款用 Rust 编写的 Python 工具,用于可视化并强制执行模块间的依赖与接口约束。
- Star
- 2,861
- Fork
- 98
- 未关闭 Issue
- 56
- 最近提交
- 9天前
这是什么?
Tach 帮助 Python 项目维持模块边界。开发者在配置中声明各模块允许依赖的对象,工具会据此检查导入语句,并标出越过边界的导入。它还可以限制跨模块调用只能走模块声明的公共接口,并检测依赖图中的循环依赖。
它面向模块化单体(modular monolith)的代码结构,支持渐进式接入,团队可以只标记需要跟踪的包。通过 `tach init` 可以交互式完成初始配置,`tach check` 在发现违规时以非零退出码结束,便于集成到 CI 或 pre-commit 钩子中。
此外,Tach 可以生成依赖关系图:`tach show --web` 提供网页视图,本地运行则输出 GraphViz DOT 文件;`tach report` 可以列出指定路径的依赖与被引用情况。
核心功能
- 01根据声明的模块依赖检查导入语句
- 02限制跨模块调用只能通过公共接口
- 03检测依赖图中的循环依赖
- 04支持渐进式接入,只标记需要的模块
- 05以网页图或 GraphViz DOT 格式可视化依赖关系
- 06发现违规时以非零退出码结束,可接入 CI 与 pre-commit
适用场景
- 在大型 Python 单体应用中强制执行分层或模块化边界
- 防止 Python 单仓库(monorepo)中包之间出现不希望的导入
- 在已有代码库中逐步引入架构规则
- 通过生成的依赖图审视项目的依赖结构
快速上手
- 1
从 PyPI 安装 Tach
pip install tach - 2
运行交互式设置以标记模块边界
tach init - 3
在项目根目录下执行已配置的边界检查
tach check
使用前须知
- 仅支持 Python 代码库。
- 需要在 tach.toml 中手动声明模块依赖关系,并以静态方式检查边界。
收录于专题
标签
常见问题
- tach 是什么?
- 一款用 Rust 编写的 Python 工具,用于可视化并强制执行模块间的依赖与接口约束。 Tach 帮助 Python 项目维持模块边界。开发者在配置中声明各模块允许依赖的对象,工具会据此检查导入语句,并标出越过边界的导入。它还可以限制跨模块调用只能走模块声明的公共接口,并检测依赖图中的循环依赖。
- tach 可以免费使用吗?用的什么许可证?
- tach 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- tach 还在维护吗?
- 活跃维护中。tach 最近一次提交是在 2026年10月29日。
- tach 适合用来做什么?
- 在大型 Python 单体应用中强制执行分层或模块化边界 防止 Python 单仓库(monorepo)中包之间出现不希望的导入 在已有代码库中逐步引入架构规则 通过生成的依赖图审视项目的依赖结构
- tach 怎么安装和运行?
- 从 PyPI 安装 Tach: pip install tach 运行交互式设置以标记模块边界: tach init 在项目根目录下执行已配置的边界检查: tach check
- 在哪里获取 tach?
- 源代码和安装说明在 GitHub 上:https://github.com/tach-org/tach
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
1.4万+6 本周971PHPMIT维护活跃更新于 17小时前
一款快速、可配置的 Go 代码检查工具,可直接替代 golint,并支持自定义规则和输出格式。
5562+3 本周343GoMIT维护活跃更新于 4天前
一个 Go 命令行工具,可接入任意 linter 或静态分析工具,把结果以代码评审评论的形式发布到 GitHub、GitLab 等平台。
9725+16 本周513GoMIT更新于 17小时前
一款 Python 静态代码分析工具,无需运行代码即可检查错误、执行编码规范并发现代码异味。
57451424PythonGPL-2.0维护活跃更新于 4天前
可插件扩展的 JavaScript 代码检查工具,用于发现问题代码模式,并可自动修复其中不少问题。
2.8万+1 本周5205JavaScriptMIT维护活跃更新于 18小时前
一款静态分析工具,无需运行代码即可检测 Java、C、C++ 和 Objective-C 程序中的缺陷。
1.6万+7 本周2101OCamlMIT维护活跃更新于 前天