美文网首页
索引和PSI Stub

索引和PSI Stub

作者: pr488 | 来源:发表于2017-01-22 15:30 被阅读57次

    原文链接:
    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文档。

    相关文章

      网友评论

          本文标题:索引和PSI Stub

          本文链接:https://www.haomeiwen.com/subject/irdgbttx.html