IDE TODO 标签治理:用 IDEA 管好 TODO/FIXME/HACK
不只用 TODO:给常见的任务标签(FIXME/XXX/HACK/OPTIMIZE/REVIEW)加上 IDE 识别规则,让待办、缺陷、临时方案分层可见,避免“满屏 TODO”难以管理。
很多同学在 Java 项目里写待办的时候,几乎只会用一种写法:
// TODO: 这里后面要重构
时间一长,代码里到处都是 TODO,严重一点的 bug、临时 HACK、需要重点 Review 的地方,和普通“以后再说”的 TODO 都混在一起,根本分不清轻重缓急。
其实,IDEA 本身支持很多“类似 TODO 的任务标签”,我们完全可以:
- 用不同的标签区分:待办 / 已知 bug / 临时方案 / 需要评审
- 再让 IntelliJ IDEA 自动帮你把这些标签统一收集到 TODO 面板里

一、常见的注释标记有哪些?
在 Java 项目(以及大多数语言)里,大家比较常用的一些“任务/提示型”注释标签大致有:
- TODO:有待完成的工作、后续要补的功能/重构/文档等
- FIXME:这里有已知问题,需要修复(语义上比 TODO 更偏向“缺陷”)
- XXX:这里的实现比较可疑/存在隐患,需要重点关注或复查
- HACK:临时方案、权宜之计,以后要用更正规的方式重构掉
- NOTE / INFO:重要说明或提示信息,不一定需要改代码
- BUG:显式标注这里是一个 bug(有些团队会配合工单号使用)
- OPTIMIZE:这里的实现可以优化(性能、可读性、架构等)
- REVIEW:希望代码评审时重点关注、或需要二次确认的地方
这些标签本质上都是普通注释里的关键字,IDE 是否识别,完全取决于它的配置。

二、为什么 IDE 只识别 TODO/FIXME?
很多人遇到的现象是:
代码里写了 HACK、XXX、OPTIMIZE,但在 TODO 面板里却完全看不到。
原因其实很简单——IDE 默认只会根据你配置过的“Task / TODO 模式(Patterns)”去扫描注释。
- 在 IntelliJ IDEA 里,这些规则在:
Settings/Preferences → Editor → TODO
默认通常只有TODO(有时会带上FIXME)等少数几项。 - 在 Eclipse 里,对应的是:
Preferences → Java → Compiler → Task Tags
默认一般包含TODO、FIXME、XXX。
也就是说:
- 在 TODO 配置里注册过的标签,IDE 会当作“任务注释”去索引:
- 能在 TODO/TASK 面板里统一看到
- 通常还会在编辑器里用高亮或特殊颜色显示
- 没有注册的标签(比如你自己写的
HACK、OPTIMIZE),
就只会被当成普通注释,不会出现在 TODO 面板里。
三、在 IntelliJ IDEA 里让更多标签“生效”
下面以 IntelliJ IDEA 为例,演示如何把自己的标签加进 TODO 体系。
1. 打开 TODO 配置
路径:Settings/Preferences → Editor → TODO
你会看到一个 Patterns 列表,里面是当前 IDEA 能识别的“任务注释模式”。
很多同学这里只有类似:
\bTODO\b.*- 可能还有
\bFIXME\b.*
【配图建议:IDEA 设置窗口截图,指向 Editor → TODO → Patterns 列表】
2. 新增你需要的标签
点击右侧的 + 按钮,新建 Pattern,例如:
\bHACK\b.*\bXXX\b.*\bOPTIMIZE\b.*\bREVIEW\b.*
这里的写法有两个小要点:
- 正则表达式:IDEA 的 Pattern 是正则(Regex),不是简单文本匹配
\bTAG\b.*模式:\b表示单词边界,避免把NOTES这种单词也匹配进去.*表示匹配该标签后面整行的文字,方便在 TODO 面板里完整展示
保存之后,IDEA 会自动重新扫描这些 TODO/Task 注释;
你也可以切到左下角的 TODO Tool Window 看一下是否已经出现了新标签。

四、在 Eclipse 里配置 Task Tags
如果你用的是 Eclipse,思路也是一样的,只是入口不同。
1. 找到 Task Tags 配置
路径:Preferences → Java → Compiler → Task Tags
这里可以看到当前生效的 Task 标签,一般会有:
TODOFIXMEXXX
2. 根据团队约定添加/删减
- 根据团队实际需要,新增或删除标签,比如:
- 添加:
OPTIMIZE、HACK - 删除:几乎没人用的自定义标签
- 添加:
- 设置每个标签的 优先级(Priority),比如:
FIXME/BUG:HighTODO:NormalOPTIMIZE:Low
配置完成后,Eclipse 的 Tasks 视图就会按新的标签去收集和展示注释任务。
五、团队实践:推荐的标签组合
实际项目里,如果标签太多、太花,会带来两个问题:
- 搜索/筛选困难,信息不集中
- 不同人理解不一致,造成沟通成本
结合我的经验,更推荐控制在 2~4 个“核心标签”,并且团队统一约定含义,例如:
- TODO:功能、重构、补充文档/测试等待办事项
- FIXME:已知缺陷,需要修复
- OPTIMIZE(可选):有优化空间的实现(性能/结构/可维护性)
- REVIEW(可选):需要重点评审或二次确认的代码
进一步,还可以:
- 配合工单/Issue 编号使用,提高可追踪性
FIXME(#1234): 这里在并发场景下有问题TODO(#5678): 替换为统一的鉴权组件
- 统一格式,比如:
TAG: 描述TAG(#IssueId): 描述
这样一来,你在 TODO/TASK 面板中就可以很方便地按标签、按 Issue 来过滤和统计。
六、几个容易踩的坑
-
只看“有没有高亮”,忽略 TODO 面板
编辑器里的高亮有时受主题、Inspection 影响;但 TODO 面板基本只认 TODO/Task Patterns,以它为准更稳。
-
正则写得太宽泛,误匹配
建议统一用\bTAG\b.*这样的模式,避免匹配到单词内部。 -
团队没有约定,导致标签含义混乱
建议在团队规范里写清楚:哪些标签允许使用、各自语义、是否要带 Issue 号。
总结
- Java 项目里,除了 TODO 外,常见的还有 FIXME / XXX / HACK / NOTE / BUG / OPTIMIZE / REVIEW 等标签。
- IDE 默认只会识别配置过的模式,在 IntelliJ IDEA 的
Editor → TODO和 Eclipse 的Task Tags里都可以自定义。 - 推荐团队统一 2~4 个核心标签,并配合 Issue 编号,既能被 IDE 统一索引,又便于后续追踪和治理。