基本操作

在这一部分中,我将分享我在查看源代码时常用的一些快捷键和小技巧,它们能显著提升你的阅读效率。

掌握这些快捷键和小技巧后,你的源码阅读效率将大幅提升!

查看当前类的层次结构

使用频率相关快捷键
⭐⭐⭐⭐⭐Ctrl + H

在阅读源码时,我们常常需要检查类的层次结构,特别是当我们遇到抽象类或接口时,了解其实现类非常有必要。例如,在Spring源码中,BeanDefinition是一个与Bean属性和定义相关的接口。

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {  
  ......  
}  

如果想要查看BeanDefinition被哪些类实现,只需将鼠标悬停在BeanDefinition类名上,然后按下快捷键Ctrl + H即可。

图片同样,如果需要了解接口AttributeAccessor被哪些类实现,只需将鼠标悬停在AttributeAccessor类名上并按下Ctrl + H

查看类的结构

使用频率相关快捷键
⭐⭐⭐⭐Alt + 7(Win) / Command + 7 (Mac)

类结构视图可以帮助我们快速了解当前类的方法、变量和常量,极为实用。

只需在类的任意位置使用快捷键Alt + 7(Win) / Command + 7(Mac)即可。

图片

快速检索类

使用频率相关快捷键
⭐⭐⭐⭐⭐Ctrl + N (Win) / Command + O (Mac)

使用快捷键Ctrl + N (Win) / Command + O (Mac)可以快速找到类或文件。

图片

关键字检索

使用频率相关快捷键
⭐⭐⭐⭐⭐见下文
  • 当前文件下检索:Ctrl + F (Win) / Command + F (Mac)
  • 全局文本检索:Ctrl + Shift + F (Win) / Command + Shift + F (Mac)

查看方法/类的实现类

使用频率相关快捷键
⭐⭐⭐⭐Ctrl + Alt + B (Win) / Command + Alt + B (Mac)

要跳转到某个方法或类的实现,只需在方法名或类名上按下快捷键Ctrl + Alt + B/鼠标左键 (Win) / Command + Alt + B/鼠标左键 (Mac)。

如果该方法或类只有一个实现,IDEA将直接跳转到相应的实现类。

例如,BeanDefinition接口的getBeanClassName()方法仅由AbstractBeanDefinition抽象类实现,使用快捷键即可直接访问该实现方法。

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {  
  @Nullable  
  String getBeanClassName();  
  ......  
}  

如果方法或类有多个实现类,IDEA会弹出选择框供你选择。

例如,BeanDefinition接口的getParentName()方法就有多个不同的实现。

图片

查看方法被使用的情况

使用频率相关快捷键
⭐⭐⭐⭐Alt + F7

通过在方法名上按下快捷键Alt + F7,可以查看该方法在哪些地方被调用。

图片

查看最近使用的文件

使用频率相关快捷键
⭐⭐⭐⭐⭐Ctrl + E(Win) / Command + E (Mac)

按下Ctrl + E(Win) / Command + E (Mac)可以显示IDEA最近使用的一些文件。

图片

查看图表形式的类继承链

使用频率相关快捷键
⭐⭐⭐⭐相关快捷键较多,不建议记

通过右键点击类名,选择Show Diagrams即可查看图表形式的类继承链。

图片

在图表中,你可以右键点击具体的类,选择查看其实现类或父类。

图片同样,你还可以选择是否显示类中的属性、方法和内部类等信息。

图片如果想要跳转到某个类的源码,直接右键点击图表中的类,选择Jump to Source

图片

插件推荐

一键生成方法的序列图

序列图(Sequence Diagram)是UML中的一种行为图,显示系统在执行某个方法或操作时,对象之间的顺序调用关系。

例如,当你需要执行某个对象alogin方法(登录),而这个方法又依赖对象bgetUser方法(获取用户),这就形成了a -> b的调用关系。

使用SequenceDiagram插件,可以一键生成方法的序列图。

如果因网络原因无法使用IDEA自带的插件市场,也可以手动从IDEA插件市场官网下载并安装。

图片

如何使用呢?

  1. 选择方法名(切勿选中类名),然后右键点击,选择Sequence Diagram选项即可!

图片

  1. 配置生成序列图的基本参数,例如调用深度,然后点击确定。

图片

  1. 生成的时序图可以帮助定位相关代码,这对阅读源码尤其有益!

图片

  1. 完成后,你还可以将生成的时序图导出为图片。

图片

项目代码统计

为了快速分析项目情况,我们可以统计项目的总代码行数、单个文件的代码行数、注释行数等信息

使用Statistic插件,能够帮助我们实现这一目标。

图片

借助这个插件,你可以直观地查看项目中各种文件的信息,包括数量和大小等,这将帮助你更好地了解项目。

图片

此外,你还能查看所有类的总行数、有效代码行数、注释行数以及有效代码比例等信息。

图片

如果担心插件过多会影响IDEA的速度,可以在需要进行代码统计时启用该插件,平时则可将其禁用。