1. 为什么我会关注 Show Comment 这款小插件
写 Java 的人大概都有过这种体验:接手一个三四年前的老项目,打开某个 Service 类,满屏都是getXxx、setXxx、buildXxx,字段名起得又抽象,比如bizStatus、extInfo、flag。你想知道这个字段到底代表什么,鼠标悬停上去,IDE 只告诉你它是String类型,别的什么都没有。于是你只能一层层往上翻,翻到实体类定义,再翻到数据库建表语句,最后在某个犄角旮旯的注释里找到一句“0-正常 1-冻结 2-注销”。整个过程十分钟就没了,而你只是想改一行判断逻辑。
Show Comment 这款 IDEA 插件解决的正是这个痛点。它做的事情说起来很简单:把代码里那些原本藏在字段声明、方法签名、类定义旁边的注释,直接以行内提示的形式展示在你正在阅读的代码行末尾。你不用跳转,不用悬停,注释就摆在那里,像有人提前帮你把关键信息贴在了屏幕上。
我第一次装它是在一个金融类的老系统上,那个项目里大量字段的枚举含义都写在实体类的 Javadoc 里,但业务代码里到处是魔法值。装上 Show Comment 之后,if (status == 2)这种代码后面会直接跟一个灰色的// 2-已注销,排查问题的效率提升非常明显。后来我又在几个 JSON 配置驱动的项目里用它来看字段说明,同样顺手。
这篇文章适合几类人看:一是天天跟老代码打交道的 Java 后端,二是需要频繁阅读第三方 SDK 源码的开发者,三是刚接触 IDEA、还在摸索插件生态的新手。我会从插件的工作原理讲起,把安装配置、核心功能、实际使用场景、常见坑都过一遍,最后再聊聊它和其他几款注释类插件的取舍。内容基于我自己的使用经验,也会补充一些从社区里收集到的实践反馈。
2. Show Comment 到底做了什么:原理与核心机制拆解
2.1 它读取的是哪一层注释
很多人第一次用 Show Comment 会有一个疑问:为什么有些字段后面能显示注释,有些却不行?这就要说到它读取注释的来源。
Show Comment 主要读取的是Javadoc 风格的文档注释,也就是/** ... */这种写法。对于字段来说,它会把字段声明上方的 Javadoc 内容提取出来,作为行内提示显示。对于方法,它会读取方法签名上方的 Javadoc。对于类,它会读取类声明上方的 Javadoc。
这里有个关键点:普通的行注释//和块注释/* */通常不会被识别。我实测下来,如果你在字段上方写的是// 状态,插件大概率不会显示;但如果你写成/** 状态 */,它就能正常展示。这个设计其实是有道理的——Javadoc 本身就是 Java 生态里表达“这个成员是什么”的标准方式,插件选择只认它,避免了把临时调试注释也误显示出来。
提示:如果你维护的是一个注释风格混乱的老项目,想让 Show Comment 发挥作用,最直接的办法就是把关键字段的注释统一改成 Javadoc 格式。这件事一次性做完,后面所有读代码的人都受益。
2.2 行内提示是怎么渲染出来的
从技术实现角度看,Show Comment 用的是 IntelliJ Platform 提供的Inlay Hints(内嵌提示)机制。这是 IDEA 2018.3 之后引入的一套 API,允许插件在代码行的特定位置插入一段虚拟文本,这段文本不属于代码本身,不会被编译,也不会影响光标移动和编辑操作。
你可以把它理解成 IDE 在渲染代码时,额外画了一层“贴纸”。这层贴纸的位置、颜色、字体都可以由插件控制。Show Comment 默认用的是灰色斜体或者灰色常规字体,视觉上比真正的代码要淡,不会喧宾夺主。
这个机制带来的一个好处是:它不修改你的源文件。你不用担心装上插件之后代码被改得乱七八糟,也不用担心提交代码时把注释带进去。所有显示都是运行时的,关掉插件就消失。
2.3 和“悬停查看文档”有什么区别
IDEA 本身有 Quick Documentation 功能,快捷键是Ctrl+Q(Windows)或F1(Mac),鼠标悬停也能看到文档。那为什么还需要 Show Comment?
区别在于信息获取的成本。悬停或按快捷键是一个主动动作,你需要把鼠标移过去,或者按一下键,然后等弹窗出现,看完再关掉。而 Show Comment 是被动的,你扫一眼代码就看到了,不需要任何额外操作。
在需要连续阅读大量字段的场景下,这个差异会被放大。比如你在读一个包含三十个字段的 DTO,用悬停方式你得悬停三十次,用 Show Comment 你只需要滚动一遍。这就是它存在的价值——把“查阅”变成“浏览”。
2.4 支持哪些语言和文件类型
虽然 Show Comment 最常被用在 Java 项目里,但它对语言的支持其实更广一些。根据我的使用和社区反馈,它在以下场景下都能工作:
| 语言/文件类型 | 支持情况 | 说明 |
|---|---|---|
| Java | 完整支持 | 字段、方法、类、枚举常量的 Javadoc 均可显示 |
| Kotlin | 部分支持 | KDoc 注释可显示,但某些场景下不如 Java 稳定 |
| JavaScript/TypeScript | 部分支持 | JSDoc 注释可显示 |
| JSON | 有限支持 | 需要配合 JSON Schema 或特定注释格式 |
| Python | 有限支持 | docstring 显示效果一般 |
需要说明的是,Java 是它的主战场,其他语言的支持程度会随版本变化。如果你主要写 Java,可以放心用;如果你主要写 Kotlin 或前端,建议先装上看一眼效果再决定是否长期保留。
3. 安装与配置:从零到能用的完整流程
3.1 在 IDEA 里安装插件的两种方式
第一种方式是通过插件市场在线安装。打开 IDEA,进入File -> Settings -> Plugins,在 Marketplace 标签页里搜索 “Show Comment”。找到之后点击 Install,重启 IDE 即可。这是最省事的方式,适合网络环境正常的情况。
第二种方式是离线安装。如果你所在的环境访问插件市场不方便,可以去插件官网下载对应的.jar或.zip包,然后在 Plugins 页面点击齿轮图标,选择Install Plugin from Disk,选中下载的文件,重启即可。
注意:下载离线包时一定要看清楚对应的 IDEA 版本号。IntelliJ Platform 的插件 API 在不同大版本之间有兼容性要求,装错版本会导致插件无法加载,甚至让 IDE 启动变慢。
3.2 安装后需要做的几项配置
装好之后别急着用,先花两分钟把配置调一下,体验会好很多。进入File -> Settings -> Other Settings -> Show Comment(不同版本路径可能略有差异,也可能在Tools下面),你会看到几个关键选项:
- Enable/Disable:总开关,建议保持开启。
- Show for fields:是否对字段显示注释,建议开启。
- Show for methods:是否对方法显示注释,看个人习惯。我一般开启,但在方法调用密集的代码里会显得有点吵。
- Show for classes:是否对类显示注释,建议开启。
- Font color / Style:注释的显示颜色和样式。默认灰色就挺好,如果你用的是深色主题,可以调成稍微亮一点的灰,避免看不清。
- Max length:注释显示的最大长度。这个很重要,有些 Javadoc 写得很长,全显示出来会占满半屏。建议设置在 50 到 80 个字符之间,超出部分会被截断。
我自己的配置是:字段和方法都开,类注释开,最大长度 60,颜色用默认。这套配置在大多数项目里都比较平衡。
3.3 验证是否生效的快速方法
配置完之后,打开任意一个带有 Javadoc 的 Java 文件,把光标放到字段所在的行,看看行尾有没有出现灰色的注释文字。如果没有,按以下顺序排查:
- 确认字段上方确实是
/** ... */格式的 Javadoc,而不是//或/* */。 - 确认插件在 Settings 里是启用状态。
- 确认当前文件类型是插件支持的类型。
- 尝试
File -> Invalidate Caches / Restart,重启后再看。
这四步走完,基本能解决九成以上的“装了没反应”问题。
4. 实际使用场景:它在哪些时候真正帮到我
4.1 阅读老项目的实体类
这是 Show Comment 最典型的用武之地。老项目的实体类往往字段多、命名差、注释散。举个例子,一个订单实体可能有这样的字段:
/** 订单状态:0-待支付 1-已支付 2-已发货 3-已完成 4-已取消 */ private Integer orderStatus; /** 支付渠道:ALI-支付宝 WX-微信 BANK-银行卡 */ private String payChannel;没有插件的时候,你在业务代码里看到if (order.getOrderStatus() == 2),得跳回实体类才能知道 2 代表已发货。有了插件,这行代码后面直接显示// 订单状态:0-待支付 1-已支付 2-已发货...,虽然长了一点,但关键信息一眼就能抓到。
我个人的习惯是,接手新项目的第一件事就是确认实体类的字段注释是否完整。如果不完整,我会花半天时间补齐 Javadoc。这个投入在后续几个月的开发里会成倍地赚回来。
4.2 对接第三方 SDK 时快速理解参数
很多第三方 SDK 的源码里,方法参数的含义都写在 Javadoc 的@param标签里。Show Comment 对@param的支持情况取决于版本,但方法级别的描述通常能显示出来。
比如你在调用某个支付 SDK 的createOrder方法时,方法签名上方写着“创建订单,注意 amount 单位为分”,这行提示直接显示在调用处,能帮你避免把元当成分传进去的低级错误。这种错误在对接支付、金额相关接口时特别常见,一旦搞错就是真金白银的损失。
4.3 在 JSON 配置驱动的项目里看字段说明
现在很多项目用 JSON 做配置,比如工作流定义、规则引擎配置、表单配置等。这些 JSON 文件里的字段含义往往写在配套的文档或者 Java 实体类里。如果你的项目是把 JSON 映射到 Java 对象,那么给 Java 对象的字段写好 Javadoc,再配合 Show Comment,就能在阅读 Java 代码时快速理解每个字段对应 JSON 里的什么含义。
更进一步,有些团队会用 JSON Schema 来描述配置结构,Schema 里的description字段本质上就是注释。虽然 Show Comment 不直接读 JSON Schema,但你可以把 Schema 里的描述同步到 Java 实体的 Javadoc 里,形成一套“文档即注释”的工作流。
4.4 代码审查时快速判断逻辑正确性
做 Code Review 的时候,Show Comment 也能帮上忙。审查者往往对业务细节不如原作者熟悉,看到if (user.getLevel() == 3)这种代码,需要确认 3 代表什么等级。如果字段注释完整,审查者扫一眼就能判断逻辑对不对,不用反复问原作者。
这一点在远程协作、跨时区团队里尤其有价值。一个清晰的注释显示,能减少很多来回沟通的成本。
5. 和其他注释类插件的对比与取舍
5.1 与 IDEA 自带功能的对比
IDEA 自带的 Quick Documentation 和 Parameter Info 是 Show Comment 的天然替代品。Quick Documentation 信息更全,能显示完整的 Javadoc、@param、@return、@throws等;Parameter Info 在输入方法参数时能提示参数含义。
但它们的共同问题是需要主动触发。Show Comment 的定位不是替代它们,而是补充它们——日常浏览用 Show Comment,需要看完整文档时再用 Quick Documentation。两者配合使用,效率最高。
5.2 与“注释生成”类插件的区别
市面上还有一类插件是帮你生成注释的,比如根据字段名自动生成 Javadoc 模板。这类插件和 Show Comment 是互补关系:一个负责写,一个负责看。我通常建议团队里两个都装,写代码的人用生成插件保证注释覆盖率,读代码的人用 Show Comment 提升阅读效率。
5.3 什么情况下不建议用
Show Comment 也不是万能的。以下几种情况我会建议关掉它:
- 代码行本身就很长:如果一行代码已经接近 120 字符,再在后面加注释提示,会触发 IDEA 的自动换行,反而更难读。
- 注释质量很差:如果项目里的 Javadoc 都是“TODO”“待补充”这种,显示出来只是噪音。
- 演示或录屏场景:行内提示会让屏幕显得杂乱,演示时建议临时关闭。
提示:Show Comment 支持按项目配置。你可以在当前项目里关掉它,而不影响其他项目。这个设置在多项目并行开发时很实用。
6. 常见问题与排查技巧实录
6.1 装了插件但注释不显示
这是反馈最多的问题。排查顺序如下:
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 完全不显示 | 插件未启用 | Settings -> Plugins 确认已勾选 |
| 字段不显示 | 注释不是 Javadoc 格式 | 改成/** ... */ |
| 部分字段不显示 | 注释在字段行尾而非上方 | 把注释移到字段声明上方 |
| 方法不显示 | 方法配置被关闭 | Settings 里开启 Show for methods |
| 全部不显示 | 缓存问题 | Invalidate Caches / Restart |
6.2 注释显示太长影响阅读
前面提到过,用Max length配置截断。但截断之后可能丢失关键信息,这时候可以考虑优化注释本身——把最重要的信息放在 Javadoc 的第一行,因为插件通常只显示第一行或前几个字符。
比如把:
/** * 订单状态,这个字段用来标识订单当前所处的生命周期阶段, * 包括待支付、已支付、已发货、已完成、已取消五种状态 */改成:
/** 订单状态:0-待支付 1-已支付 2-已发货 3-已完成 4-已取消 */信息密度更高,显示效果也更好。
6.3 和主题配色冲突导致看不清
深色主题下,默认的灰色注释可能和背景色接近,看起来费劲。解决办法是在插件设置里把注释颜色调亮,或者换成带一点色调的颜色(比如浅蓝、浅绿)。我用的是一套深色主题,把注释调成了#8A9BA8这种偏冷的灰,对比度刚好。
6.4 插件导致 IDE 变卡
正常情况下 Show Comment 对性能的影响很小,因为它只是在渲染层加文本。但如果你打开的是一个几万行的大文件,或者项目里有大量超长 Javadoc,可能会有轻微卡顿。这时候可以:
- 关闭方法级别的注释显示,只保留字段。
- 降低 Max length。
- 在超大文件里临时关闭插件。
我实测在一个两万行的老 Service 文件里,开启插件后滚动确实有一点点延迟,但关闭方法注释后就恢复正常了。
6.5 团队协作时的一致性建议
如果团队决定用 Show Comment,建议做两件事:一是统一 Javadoc 的书写规范,特别是字段注释的格式;二是把插件配置导出成团队共享的设置,避免每个人显示效果不一样。IDEA 支持通过 Settings Repository 或者导出 settings.jar 来同步配置,这个在团队规模超过五个人之后会很有用。
7. 我踩过的坑和几条实用建议
第一个坑是过度依赖插件而忽视注释质量。有段时间我觉得反正有 Show Comment,注释随便写写就行。结果后来换了个项目,那边没装插件,我读代码时完全抓瞎。这件事让我意识到,插件只是放大器,注释本身的质量才是根本。注释写得清楚,插件才有价值;注释写得烂,插件只是把烂东西展示得更显眼。
第二个坑是在 Kotlin 项目里期待过高。我有个项目是 Kotlin 写的,兴冲冲装了 Show Comment,结果发现 KDoc 的显示效果不如 Java 稳定,有些字段能显示,有些不行。后来查了一下,是插件对 Kotlin 的支持还在完善中。所以如果你主写 Kotlin,建议先小范围试用,别一上来就全项目推广。
第三个坑是忽略了 JSON 场景的局限性。我原本以为 Show Comment 能直接读 JSON 文件里的注释,后来发现 JSON 标准本身不支持注释,插件也没法凭空变出注释来。如果你的配置是纯 JSON,得靠外部文档或者 JSON Schema 来描述字段含义,插件帮不上忙。但如果你的 JSON 会映射到 Java 对象,那给 Java 对象写好 Javadoc 就能间接解决问题。
几条实用建议:一是把字段注释的第一行写成“字段名:取值含义”的格式,这样即使被截断也能保留最关键的信息;二是定期检查项目里的 Javadoc 覆盖率,可以用 IDEA 的 Inspections 功能来扫描;三是在 Code Review 清单里加一条“新增字段是否有 Javadoc”,从源头保证注释质量。
最后分享一个小技巧:Show Comment 的显示效果和 IDEA 的字体设置有关。如果你把编辑器字体调得比较大,行内提示也会跟着变大,可能挤占代码空间。这时候可以在插件设置里单独调小注释字号,让它比代码字号小一到两号,视觉上更协调。这个细节很少有人提到,但调过之后阅读体验会舒服很多。