npm 包 @theia/callhierarchy 使用教程

简介

在前端开发中,调用层级关系(Call Hierarchy)是十分重要的一种语言特性,它可以在代码中快速的找到某个函数或者方法的被调用情况,便于修复代码问题和分析代码结构。 而在 VSCode 中,@theia/callhierarchy 是一个非常好用的 npm 包,它提供了一些非常方便的接口,帮助我们快速查看调用层级关系。

安装

在项目中,可以使用以下命令进行安装:

--- ------- --------------------

API 接口

首先引入 @theia/callhierarchy 包。

------ - --------------------- ----------------------- ----------------- - ---- -----------------------

CallHierarchyItem

CallHierarchyItem @theia/callhierarchy 包中用来存储层级信息的基本单元。

----- ----------------- -
    ---- -------
    ----- -------
    ----- -----------
    ------ ------
    --------------- ------
    ---------- --------------------
-

它包含了以下重要属性:

  • uri(必需):文件的 URI。
  • name(必需):函数或方法的名称。
  • kind(必需):函数或方法的类型。
  • range(必需):函数或方法在文件中的位置。
  • selectionRange(必需):函数或方法名称选中的位置。
  • children(可选):一个子级的 CallHierarchyItem 数组。

其中,SymbolKind 表示函数或方法的类型,是一个枚举类型,包括以下几个:

  • Module:模块。
  • Namespace: 一些有层次结构的分组。
  • Package: 编译器自动生成的一些文件的分组。
  • Class:类(包括 TypeScript 中的 interface)。
  • Method:类的 method 类型或者函数的类型。
  • Property:对象属性或者类上面定义的属性。
  • Field:类的成员字段类型。
  • Constructor:类构造函数的类型。
  • Enum:枚举类型。
  • Interface:TypeScript 中的 interface。
  • Function:函数类型。
  • Variable:变量类型。
  • Constant:常量类型。
  • String:字符串类型。
  • Number:数字类型。
  • Boolean:布尔类型。
  • Array:数组类型。
  • Object:对象类型。
  • Key: 表示类型的 key。

CallHierarchyService

CallHierarchyService 是一个可以根据某一个函数或方法名称提供深度信息的类,它包含了以下重要方法:

prepareCallHierarchy

获取指定文件中函数或方法的 CallHierarchyItem[] 数组信息。

------------------------------ -------------- --------- ---------- --------------------------- - ----------

该方法接受两个参数:

  • document:文档对象。
  • position:函数或方法的位置。

provideIncomingCalls

获取指定函数或方法的入栈层级信息。

-------------------------- ------------------ ------ ------------------- ------------------- - ----------------------------

该方法接受以下两个参数:

  • item:要查找的 Call Hierarchy item,该项包括以下字段:

    • name:函数或方法名称。
    • uri:文件的 URI。
  • token(可选):取消操作的 token。

provideOutgoingCalls

获取指定函数或方法的出栈层级信息。

-------------------------- ------------------ ------ ------------------- ------------------- - ----------------------------

该方法接受以下两个参数:

  • item:要查找的 Call Hierarchy item,该项包括以下字段:

    • name:函数或方法名称。
    • uri:文件的 URI。
  • token(可选):取消操作的 token。

使用示例

下面,我们给出了一个示例,其中包含了如何使用 @theia/callhierarchy 这个 npm 包。

获取文件内函数或方法的层级信息

-- ------
----- -------- - ----- --------------------------------

-- ----
----- -------- - --- -------------------- -----------

-- -- ---- --------- ----- ----
----- ----- - ----- --- ----------------------------------------------------- ----------

获取某个函数或方法的入栈层级信息

-- -- ---- ----- ----------
----- ---- - -
    ---- ----------------
    ----- ---------------
--

-- --------
----- ----- - ----- --- --------------------------------------------------

获取某个函数或方法的出栈层级信息

-- -- ---- ----- ----------
----- ---- - -
    ---- ----------------
    ----- ---------------
--

-- --------
----- ----- - ----- --- ----------------------
     ----------------------------

注意事项

  • uri 应该是打开的 ITextDocument 对象的 URI 属性;
  • 如果 CallHierarchyItemkind 属性是 Method,则 CallHierarchyItem 必须有一个 selectionRange 属性;
  • 函数或方法的名称应该指的是其在代码中被定义时的名称,而非在调用中使用的别名。

总结

本文介绍了如何使用@theia/callhierarchy npm 包来快速查看函数或方法的调用层级信息。文章详细介绍了该 npm 包的常用 API 接口以及示例代码,希望能给大家带来帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/theia-callhierarchy


猜你喜欢

  • npm包@types/d3-hexbin使用教程

    前言 D3-hexbin是D3.js中的一个模块,提供了一种对二维平面上数据进行分组和统计的方法。它通过以六边形网格为基础生成规则的方式,将数据点分组到不同的六边形区域,然后对每个区域中的数据进行统计...

    4 年前
  • npm 包 @types/d3-dsv 使用教程

    前言 在前端开发中,数据是非常重要的组成部分。而处理数据的工具也是不可或缺的,其中 D3.js 是一个非常优秀的数据可视化库。而在 D3.js 中,d3-dsv 模块用于处理各种类型的数据。

    4 年前
  • npm 包 @antv/l7-core 使用教程

    什么是 @antv/l7-core @antv/l7-core 是蚂蚁金服开发的一款前端数据可视化库,用于构建地理空间可视化场景。它提供了基于 WebGL 实现的高性能渲染,支持矢量和栅格瓦片的数据源...

    4 年前
  • npm 包 @antv/async-hook 使用教程

    在前端开发中,我们经常需要处理异步操作,例如发送 API 请求、读取本地存储等等。但是,异步操作往往会导致代码难以理解和调试,并且容易出现回调地狱(Callback Hell)的问题。

    4 年前
  • npm 包 @types/supercluster 使用教程

    前言 在前端开发中,我们经常会使用到地图相关的技术。而超级聚类(supercluster)是地图上分类数据的利器,是处理海量数据的重要手段。在这篇文章中,我们将学习如何使用 @types/superc...

    4 年前
  • npm 包 @types/mapbox-gl 使用教程

    简介 Mapbox GL JS 是一个基于 Web 的交互式地图库,它使用 WebGL 技术来进行高性能的渲染。@types/mapbox-gl 是 mapbox-gl.js TypeScript 定...

    4 年前
  • npm 包 @types/geojson 使用教程

    在前端开发中,GeoJSON 是一个常用的数据格式,它用于描述地理空间数据,如地图上的标注、线条和多边形等。通过使用 npm 包 @types/geojson,我们可以在 TypeScript 项目中...

    4 年前
  • npm 包 @types/deep-equal 使用教程

    在前端开发中,我们经常需要比较两个对象是否相等。而 JavaScript 中的对象比较有时候会比较困难,因为对象的相等性是根据引用判断的,即使两个对象的属性相同,但它们的引用不同也被认为是不同的对象。

    4 年前
  • npm 包 supercluster 使用教程

    在前端开发中,如果我们需要处理大量数据点的聚类问题,通常需要使用一些聚类算法来完成。而 supercluster 就是一个能够提供高效数据点聚类的 npm 包。在本文中,我们将详细介绍 supercl...

    4 年前
  • npm 包 eslint-config-strict-react 使用教程

    在前端开发中,代码规范的重要性不言而喻。为此,我们需要使用一些工具来监测我们的代码是否符合规范,其中一个重要工具就是 ESLint。ESLint 可以检查 JavaScript 代码中的语法错误,风格...

    4 年前
  • npm 包 react-eva-icons 使用教程

    前言 React 是目前最流行的前端框架之一,它能够帮助我们快速构建复杂的 web 应用程序。而 icon 是 web 页面中必不可少的组件之一,它可以进行很好的视觉增强和用户体验。

    4 年前
  • npm 包 react-arrow-nav 使用教程

    在前端开发中,我们经常需要构建具有良好交互性的网页导航。在这种情况下,react-arrow-nav 是一个很好的工具包。 本文将指导您如何使用 react-arrow-nav 包来构建网页导航。

    4 年前
  • npm 包 mdlz-prmtz 使用教程

    在前端开发中,我们经常需要对字符串进行处理,使用正则表达式可以快速实现很多字符串操作,npm 包 mdlz-prmtz 就为字符串处理提供了很多方便的方法。下面,我们就来学习如何使用这个 npm 包。

    4 年前
  • npm 包 @styled-system/variant 使用教程

    前言 在前端开发中,我们经常需要使用 CSS 样式来美化页面。但是,如果手动编写样式代码,可能会出现大量冗余代码,增加代码量和调试难度。此时,我们可以使用一些工具来更方便地管理和处理样式。

    4 年前
  • npm 包 typeface-raleway 使用教程

    简介 typeface-raleway 是一款开源的字体包,提供了 Raleway 字体的各种字体格式,如 .ttf,.woff,.woff2 等,可以在前端开发中使用。

    4 年前
  • npm 包 typeface-nunito-sans 使用教程

    介绍 typeface-nunito-sans 是一款使用 npm 进行安装的字体包,是一种 Sans-serif 字体,基于 Google Fonts 推出的 Nunito Sans 字体。

    4 年前
  • npm 包 use-dark-mode 使用教程

    在前端开发中,我们经常需要在网站或应用中添加黑暗模式(Dark Mode)选项,让用户可以根据自己的喜好选择浅色或深色主题来使用网站。此时,npm 包 use-dark-mode 就是一个非常好用的工...

    4 年前
  • npm 包 toasted-notes 使用教程

    在前端开发过程中,toast 是常用的一种提示形式,而 npm 包 toasted-notes 则是一款优秀的 toast 库,该库提供了丰富的 toast 类型。

    4 年前
  • npm 包 react-focus-lock 使用教程

    简介 react-focus-lock 是一款 React 组件库,能够帮助开发者实现一个弹窗或模态框等组件出现时,自动将焦点锁定到该组件中,可以防止用户误操作,增强用户体验。

    4 年前
  • npm 包 body-scroll-lock 使用教程

    背景 在前端开发中,常常需要控制页面中某个元素的滚动而不影响整个页面的滚动。例如在移动端开发中,当弹出一个固定高度的模态框时,需要禁用页面背景的滚动,只允许模态框内部的内容进行滚动。

    4 年前

相关推荐

    暂无文章