索引和PSI Stub

2017-01-22  本文已影响57人  pr488

原文链接:
http://www.jetbrains.org/intellij/sdk/docs/basics/indexing_and_psi_stubs.html

索引

索引框架提供了一种在大型代码库中定位元素的快速方式,如包含特定单词的文件或具有特定名称的方法。 插件开发人员可以使用IDE构建的索引,也可以构建和使用自己的索引。

目前主要支持两种类型的索引:

基于文件的索引直接在文件内容上构建。Stub索引在序列化的*stub树 *上构建。 源文件的stub树是其PSI树的子集,其仅包含外部可见的声明,并序列化为紧凑的二进制格式。

查询基于文件的索引会得到符合特定条件的文件集。 查询stub索引会得到匹配的PSI元素集合。 因此,自定义语言插件开发人员通常在插件实现中使用stub索引。

Dumb模式

索引是一个潜在的长进程。 它在后台执行,在这段时间内,IDE的功能仅限于不需要索引的功能:基本文本编辑,版本控制等。此限制由DumbService管理。

DumbService提供了查询IDE当前是否在"dumb"模式(不允许访问索引)或"smart"模式(所有都已构建完成并准备好使用)。它还提供了延迟代码执行直到索引就绪的方法。 更多详情,请参阅其javadoc。

Gists

有时,满足以下条件:

在这些情况下可以使用基于文件的索引,但是文件gist提供了延迟计算数据,磁盘缓存的方式和更轻量的API。请查阅VirtualFileGistPsiFileGist文档。

上一篇下一篇

猜你喜欢

热点阅读