当我生成我的ctags文件时,它似乎也在解析注释内容。例如,使用Vim的插件Tagbar,我可以在函数列表中看到不存在的函数,例如:
这里发生的事情是ctags会进行评论并找到类似的内容:
“这个函数是......”,认为“是”是一个函数,然后在标记文件中为它添加一个条目。
我想知道是否有一种简单的方法可以告诉ctags不要解析评论中的内容。
我发现显然在5.8.0之后会发布fix for this但我不确定这是否已经发布,我的ctags版本是5.8.0。
这与PHP项目有关,但我想如果答案可以涵盖适用于任何编程语言的解决方案(如果可能的话),那将会很好。
示例:
以下对函数的注释会生成标记“is”并将其列为函数:
/**
* This function is run to set certain preferences
*/
答案 0 :(得分:1)
ctags 5.8中存在一个错误。幸运的是,在它发布一天后,jafl提交了修订版729以解决问题。不幸的是,从那时起就没有发布过。
幸运的是,该项目已被分为" Universal Ctags。"以下是如何从源代码安装它。
# 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
答案 1 :(得分:0)
Excrant Ctags已经内置了多种语言。其中每个都有一个针对该语言定制的自定义解析器。当然,在标记文件中包含注释/注释掉的代码段是没有意义的。如果发生这种情况,它就是语言解析器中的一个错误,必须在ctags代码中修复。
请注意,Exuberant Ctags还支持通过正则表达式扩展新语言。有了这些,排除注释可能非常困难/缓慢/不可能(因为可能需要考虑大量的前置上下文,并且语言语法可能无法完全表示为regexp),并且您必须忍受这一点,或者应用变通办法,比如在处理之前预先处理来自源的注释。