我正在尝试让 ctags 输出 C++ 类层次结构,但它似乎难以处理多重继承(有时甚至是单一继承)。
例如:
class Fred
: public BaseFred
{
};
class John: public BaseJohn,
public BaseFred
{
};
ctags -N -x --c++-kinds=+p --fields=+i+k CtagsTest.cpp
Fred class 1 CtagsTest.cpp class Fred
John class 7 CtagsTest.cpp class John: public BaseJohn,
BaseFred 在哪里?
ctags V5.8 在两种(有效)情况下都没有多重继承。
有没有更好的工具?
最佳答案
默认情况下,即使您指定了 --fields=+i 选项,-x 也不会打印“继承”。
通用 ctag ( https://ctags.io ) 可能对您有所帮助。
它有 --_xformat
选项。
[jet@living]/tmp% ~/var/ctags/ctags -x --_xformat="%N => %i" foo.cc
~/var/ctags/ctags -x --_xformat="%N => %i" foo.cc
Fred => BaseFred
John => BaseJohn,BaseFred
--_xformat
在 http://docs.ctags.io/en/latest/news.html?highlight=--_xformat#customizing-xref-output 中解释.
关于c++ - 使用ctags获取类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16654054/