2

ctags ファイルを生成すると、コメント内のコンテンツも解析されているようです。たとえば、Vim のプラグイン Tagbar を使用すると、次のような存在しない関数が関数のリストに表示されます。

  • ただ

ここで何が起こっているかというと、ctags がコメントに入って、次のようなものを見つけているということです。

「この関数は...」と、「is」が関数だと思って、タグファイルにエントリを追加しています。

コメント内のコンテンツを解析しないように ctags に指示する簡単な方法があるかどうか疑問に思っています。

どうやら 5.8.0 の後にリリースされる修正があったようですが、これがすでにリリースされているかどうかはわかりません。私の ctags バージョンは 5.8.0 です。

これはPHPプロジェクトに関連していますが、答えがどのプログラミング言語でも機能するソリューションをカバーできればいいと思います(そのようなことが可能であれば).

例:

次の関数へのコメントは、タグ「is」を生成し、それを関数としてリストします。

/**
 * This function is run to set certain preferences
 */
4

2 に答える 2

2

ctags 5.8 にはバグがあります。幸いなことに、リリースの翌日、jafl は問題を修正するためにリビジョン 729 をコミットしました。残念ながら、それ以来リリースされていません。

幸いなことに、このプロジェクトは「ユニバーサル Ct​​ags」としてフォークされています。ソースからインストールする方法は次のとおりです。

# Get rid of 5.8.
sudo apt-get remove exuberant-ctags

# autoconf is needed to assemble the configure files
sudo apt-get install autoconf autoconf-doc

git clone https://github.com/universal-ctags/ctags.git universal-ctags

cd universal-ctags

./autogen.sh
./configure
make

sudo make install
于 2015-12-21T17:36:33.740 に答える
0

Exuberant Ctags には、すでにさまざまな言語が組み込まれています。これらにはそれぞれ、その言語に合わせたカスタム パーサーがあります。もちろん、タグ ファイルにコメントやコメント アウトされたコード セクションを含めることは意味がありません。これが発生した場合、それは言語のパーサーのバグであり、ctags コードで修正する必要があります。

Exuberant Ctags は、正規表現による新しい言語への拡張もサポートしていることに注意してください。これらを使用すると、コメントを除外することが非常に困難/遅い/不可能になる可能性があり (考慮すべき先行コンテキストが大きく、言語構文が正規表現として完全に表現できない可能性があるため)、これに対処する必要があるか、またはソースを処理する前に、ソースからコメントを前処理するなどの回避策を適用してください。

于 2014-03-24T15:37:43.093 に答える