默认情况下,就我所见,ctags和cscope解析一组C文件并构建一个数据库/索引(例如ctags文件......),关于解析期间遇到的标识符/宏...
稍后,当用户询问给定标识符时,他将获得标识符声明的可能位置列表。然后,用户可以从列表中选择一个选项并查看标识符的定义。
现在,例如,如果你在linux内核中要求标识符“dev”,那么可供选择的列表超过1500个条目!
实际上,一次只使用一个定义。由于#includes
(包括或不包含其他文件)或制定规则(哪个对象链接在一起),其余部分在构建时被排除。
有没有办法让Ctags / Cscope(或任何其他人)考虑#includes
和Makefiles
来制作更好的列表?希望只留下列表中唯一有效的引用,或者至少按更高的概率顺序对列表进行排序......
我知道,构建选项可能会对此产生影响,并且该工具(Ctags,Cscope ......)无法提前猜测。当使用Ctag / Cscope时,构建环境可能非常复杂或不完整/缺失......但是听起来尝试它可能会导致更好的情况,而不仅仅是呈现有时超过1000个条目的平面列表选择......
或者有没有理由不这样做,我显然很想念......