Google-Kythe-Kythe Schema Overview

Kythe Schema Overview

  • Terminology Overview
  • Edge and Node Examples
    • Jump-to-Definition
    • Callgraph
    • Class/Interface Hierarchy & Overrides
    • Functions and Parameters
    • Documentation
      • Text Fact Style
      • Anchor-Doc Style

本文档旨在作为KYTHE图形模式的高级概述,并解释构成整个图形结构的一些核心功能。
它不会取代KYTHE图形模式文档,后者仍应用作规范引用。
相反,这是为了帮助读者了解模式的各个部分的含义,以及如何解释它。

Terminology Overview

本文件采用以下基本术语:
Google-Kythe-Kythe Schema Overview_第1张图片
An anchor(锚)表示文件的区域。例如,在kcd.go中,Reader类型/接口有许多锚点:

type Reader interface {
   
  Revisions(_ context.Context, filter *RevisionsFilter, f func(Revision) error) error
  ^^^^^^^^^
}

例如,将有一个锚点(上面用^标记表示)覆盖来自kcd.go的标识符Revisions(修订)。
锚点的范围是包含感兴趣的实体的文件区域。

语义节点表示可以与文件直接关联或不直接关联的抽象实体。
语义节点通过与锚相关联来获得位置。

从上面的同一个例子中,我们可以把修订看作是属于类型阅读器的语义节点(函数)的定义位置。
它在kcd.go中有一个锚,用于定义它在文件中的位置。
在memdb.go中还有另一个锚点,其中为该文件中的(具体)数据库类型实现了修订函数。

fact是与节点关联的命名字节字符串值。
Kythe schema定义了各种事实的名称和预期格式,
例如,doc/uri fact 通常用于将对某些外部文档的引用附加到图中的节点。

边是两个节点之间的有向标记关系。
在上面的示例中,我们将绘制从修订点处的锚点到函数语义节点的define/binding(定义/绑定)边。
这表明锚点是函数的“定义”(具体来说,是将其绑定到标识符的定义)。

Note
在下图中,并未显示所有可能的锚点、语义节点、事实或边。
在可能的情况下,我们将继续参考相同的 kcd.go 文件。

Edge and Node Examples

现在,我们将解释您将在Kythe模式中看到的一些基本边和节点。

Jump-to-Definition

Jump-to-definition allows navigating from a usage of some entity (e.g., a variable or function) to its definition. To support this, the indexer must, at minimum, emit an anchor for a definition site, a semantic node to represent the entity that is defined, and an anchor for the usage site. In this example, we see one definition and two references for a variable named matchRevision (from kcd.go):
跳转到定义允许从某个实体(例如,变量或函数)的使用导航到其定义。
为了支持这一点,索引器必须 至少发出一个定义站点的锚、一个表示所定义的实体的语义节点和一个使用站点的锚。
在此示例中,我们看到名为matchRevision的变量的一个定义和两个引用from kcd.go):
Google-Kythe-Kythe Schema Overview_第2张图片

func (rf *RevisionsFilter

你可能感兴趣的:(Kythe,Kythe)