sbtags コマンドは、コンパイルで使用可能な情報のサブセットを収集します。ただし、簡略化された情報では、一部のブラウズ機能に制限があります。sbtags で生成されたデータベースにより、関数や変数に問い合わせを実行したり、関数呼び出しグラフを表示することができます。
現在、tags データベースには次の制限があります。
ローカル変数に関する問い合わせを発行できない
クラスをブラウズできない
クラスの関係をグラフ化できない
複雑な問い合わせを発行する機能に制限がある
問い合わせをフォーカスする機能に制限がある
コンパイルされた情報よりも信頼性が低い
通常、ファイルが変更された場合には、再度走査して変更をデータベースに取り込む必要はありません。
sbtags データベースは、ソースファイルの字句解析に基づいています。このデータベースは、すべての言語構造を正しく識別するとは限りませんが、コンパイルされないファイルでも動作し、再コンパイルよりも高速に実行されます。
sbtags は、変数、型、関数の定義を認識し、関数呼び出しの情報を収集します。関数呼び出しの情報以外は収集されません。特に、複雑な問い合わせに関する他の意味情報は収集されません。
sbtags の機能は、コールグラファを除き、ctags や etags と類似しており、定義とグラフ化に関するデータベースへの直接の問い合わせと、パターンマッチングによる問い合わせを組み合わせることができます。
sbtag で生成されたデータベースには、次の特徴があります。
クラスブラウザとクラスグラファの機能を使用できない
データベースには、シンボルと文字列に関する情報がすべて格納されているとは限らない。関数、クラス、型、変数の定義、関数呼び出しに関する情報は格納されている
sbtags プログラムはコンパイラよりも高速に動作するため、時間が節約される
データベースのサイズは、ソースコードのサイズよりもずっと小さい
データベースの内容については、意味上の正確さが保証されるとは限らない (sbtags プログラムが実行するのは単純な構文解析と意味解析だけであり、エラーが発生することもあるため)
コードが不完全であるか意味に誤りがあるためにソースコードをコンパイルできなくても、データベースは生成される