実行せずにPHPコードのバグを見つける静的解析ツール。
tach-org/tach
Rust製のPythonツール。コードベースのモジュール依存関係と公開インターフェースを可視化し、ルールを適用できます。
- スター
- 2,861
- フォーク
- 98
- 未解決の Issue
- 56
- 最終コミット
- 8 日前
これは何?
Tachは、Pythonプロジェクトでモジュール境界を保つためのツールです。どのモジュールがどのモジュールに依存できるかを宣言すると、インポートがその宣言に沿っているかを検査し、越えてはならない境界を越えるインポートを検出します。また、モジュール間の呼び出しを各モジュールで宣言した公開インターフェースに限定したり、依存関係グラフの循環を検出したりできます。
モジュラーモノリス向けに設計されており、段階的に導入できるため、追跡したいパッケージだけを対象にできます。`tach init` を使った対話形式のセットアップに対応し、違反があると `tach check` はゼロ以外のコードで終了するので、CIやpre-commit hookで簡単に実行できます。
依存関係グラフは、`tach show --web` によるWeb表示、またはローカルのGraphViz DOTファイルとして出力できます。また、`tach report` を使うと、指定したパスの依存関係と使用箇所を一覧表示できます。
主な機能
- 01宣言されたモジュール依存関係に照らしてインポートを検査
- 02モジュール間の呼び出しを公開インターフェースに限定
- 03依存関係グラフの循環を検出
- 04対象モジュールを選び、段階的に導入
- 05依存関係をWebグラフまたはGraphViz DOT形式で可視化
- 06違反時にゼロ以外のコードで終了し、CIやpre-commit hookと連携
ユースケース
- 大規模なPythonモノリスでレイヤーやモジュールの境界を適用する
- Pythonモノレポ内のパッケージ間で不要なインポートを防ぐ
- 既存のコードベースにアーキテクチャ上のルールを段階的に導入する
- 生成されたグラフでプロジェクトの依存関係を確認する
クイックスタート
- 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モノレポ内のパッケージ間で不要なインポートを防ぐ 既存のコードベースにアーキテクチャ上のルールを段階的に導入する 生成されたグラフでプロジェクトの依存関係を確認する
- tach のインストール方法は?
- PyPIからTachをインストールする: pip install tach 対話型セットアップを実行して、モジュールの境界を設定する: tach init プロジェクトのルートディレクトリから、設定した境界を適用する: tach check
- tach はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/tach-org/tach
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
golintの置き換えとして使える、高速で設定可能なGoリンター。独自ルールや出力フォーマッターにも対応します。
あらゆるリンターやコード解析ツールを実行し、検出結果を変更行に絞ってGitHub、GitLab、Bitbucketのレビューコメントとして投稿するGo製CLI。
Pythonコードを実行せずに解析し、エラーの検出、コーディング規約の適用、コードスメルの指摘を行う静的解析ツールです。
ECMAScript/JavaScriptの問題のあるパターンを検出し、多くの問題を自動修正できる、プラグイン対応のリンターです。
Java、C、C++、Objective-Cのコードを実行せずにバグを検出する静的解析ツール。