GNU Global ソースコードタグシステム
GNU Global は、ソースコードに索引付けを行うことで、大規模システムのハックやレビューを効率化するソフトウエアです。
ソースファイル中の指定したシンボルを高速に見つけ出し、素早くその場所に移動することができます。多くのサブディレクトリからなり、#ifdef
や main()
関数を沢山含んでいるような、いわゆる巨大なプロジェクトをハックするのに役立ちます。
ctags やetags に似た働きをしますが、エディタには依存せず、emacs, vi, less等の様々な環境でご利用になれます。ハイパーテキスト化してブラウザで読む事もできます。
最新の機能については、「新機能の御紹介」をご覧ください。
GNU Globalは GNU GPLv3 にもとづいた 自由なソフトウエア です。
動機
次の二つの条件を満たすソースコードタグシステムを開発しようと考えました。
- 幅広い環境で利用可能
-
ソースコードの解読をサポートするツールは数多く存在しますが、それらのほとんどは独自のユーザインターフェイスから使用することを前提に設計されており、他のツールと組み合わせて使うようにはできておりません。ある解析ツールを選択したならば、それ以外のツールを捨て去るか、あるいは関連のないツールを交互に参照しなければならないのです。
そこで、ソースコードの解読に必須であるタグ(索引付け)機能だけを独立させ、様々な環境から呼びだして使えるようにしようと考えました。 - 大規模プロジェクトに適用可能
-
ソフトウエアの規模は日増しに増大しておりますが、旧来のタグシステムは比較的小規模なプロジェクトを前提に作られています。
そこで大規模プロジェクトを高速に検索でき、深いディレクトリ構造を扱えるタグシステムを作ろうと考えました。
特徴
- 様々な環境で、ソースコードタグシステムとして機能します(Bash、Vi、Emacs、Less、各種Web ブラウザ、Doxygen等)。
- 指定されたシンボルのありかを素早く検索できます。
- シンボルの定義部だけではなく、参照部分も検索できます。
- 指定パターンを含むパスを検索できます。
- ソースディレクトリ全体を論理的なプロジェクトとして取り扱います。
- ソースディレクトリだけでなく、ライブラリディレクトリも検索できます。
- POSIX 1003.2 正規表現が利用可能です。
- grep の機能を内蔵しています。
- 検索エンジンとしてidutilsを利用できます。
- ソースコードをハイパーテキスト化できます(XHTML にも対応)。
- タグファイルはマシンアーキテクチャーからは独立しています。
- プラグインパーサを作成すれば、新たな言語をサポートできます。
- 利用するディスク領域を減らすためのコンパクトフォーマットが利用可能です。
- タグファイルの差分更新が可能です。
- style.css, gtags.conf を使って自由なコンフィグレーションが可能です。
- bash 等の補完入力で利用可能な補完リストを生成できます。
他のツールとの機能比較については、OpenGrokプロジェクトサイトの類似ツールとの比較表(Comparison with Similar Tools)をご覧ください。
動作環境
- 対応OS
-
- GNU システム - Debian, Fedora, Suse, Ubuntu
- BSD システム - FreeBSD, NetBSD, OpenBSD, MacOSX
- 各種POSIX互換 システム
- 対応言語:
-
- C
- Yacc
- Java
- PHP4
プラグインパーサを用いて新たな言語を組み込めます。また Exuberant Ctagsをパーサとして使用することもできます。
- 対応環境:
-
- シェルのコマンドライン
- Bashシェル
- 各種Viエディタ(nvi,elvis,vim)
- Emacsエディタ(emacs, mule, xemacs)
- Lessビュアー
- 各種Web ブラウザ
- Doxygen ドキュメンテーションシステム
関連リンク
外部の関連リンク
利用条件等
- 配布条件:
-
GNU GPLv3 (GNUの汎用的な公開ライセンス)の元で自由に再配布が可能です。言うまでもなく、動作および機能のすべては無保証です。