【问题标题】:Is it possible to use multiline todo's in IntelliJ IDEA?是否可以在 IntelliJ IDEA 中使用多行待办事项?
【发布时间】:2014-03-30 18:51:31
【问题描述】:

如果是,如何?

如果没有,是否有解决方法来获得类似的功能?

编辑:

我的意思是这样的:

// TODO line1
// line2
// line3

和 line1、line2、line3 属于同一个TODO 并且用蓝色突出显示。

【问题讨论】:

标签: intellij-idea todo


【解决方案1】:

This is supported since 2018.3.

多行 TODO cmets

IntelliJ IDEA 2018.3 现在支持多行 TODO cmets,现在第一行和所有后续 TODO 注释行在编辑器中突出显示并列在 TODO 工具窗口中。只需从多行 TODO 注释的第二行开始添加缩进,IDE 就会将其与普通注释区分开来。

【讨论】:

  • 谢谢!很有用。唯一的问题是当我单击 Ctrl-Alt-L 来格式化我的文件时,缩进被删除了。知道如何防止这种情况吗?
  • @Gep 我有 2021.2.3 版本的 WebStorm,他们似乎已经修复了它。
【解决方案2】:

不,暂时没有。

This feature has been discussed,但尚未实现。

编辑/更新:

2018.3版本实现。

【讨论】:

  • 请花点时间点击该链接并对问题进行投票以优先处理此问题。右侧的“选民”旁边有一个竖起大拇指的图标。
  • 现在在 IDEA 2018.3 中实现,目前在 EAP 中。 blog.jetbrains.com/idea/2018/09/…
  • 现在可以在 Android Studio 3.4 版本中使用,因为它基于 IDEA 2018.3
【解决方案3】:

在我的设置中,我将这样的正则表达式用于多行 TODO:

\/(\/|\*)[ ]*\btodo\b(.|\n)*(\*\/|)

唯一的问题是它没有突出显示多行注释的最后一个 */ 符号。如果有人能解决这个问题,那就太好了!

【讨论】:

  • 至少在 Android Studios 中发现了两个潜在的错误(或者可能是我的错误)。第一,出于某种原因,它会在我的项目中取消我对单个类的 repo 索引。每次也是同一个班。从 TODO 列表中删除它,它会被适当地重新索引。其次,它在 IDE 加载时会产生 StackOverflow 问题,但 IDE 不会发布警告或强制关闭或任何其他内容,因此我不确定严重性。我会继续研究它,但如果其他人遇到它,值得一提的是。话虽如此,它似乎确实在外面做它应该做的事情。
  • 您好 zgc7009!你能在这里发表你的 TODO 评论吗?更多人看到它 - 我们会更快地找到问题:-)
【解决方案4】:

您可以使用如下标签使用 FIXME 和 TODO

//FIXME: first line
//<tab> second line
//<tab> third line

更多信息请参考documentation

【讨论】:

  • 谢谢。它按预期对我有用。
【解决方案5】:

你是这个意思吗? using-todo-lists

/**
 * todo multi-line
 *  
 */

【讨论】:

  • 感谢您的回答。如果块中的所有行都属于待办事项并用蓝色突出显示,那就太好了。但这是我们目前最接近的东西。
【解决方案6】:

以 NonGrate 的回答为基础:

进入设置,搜索TODO设置,将现有的待办事项“\btodo\b.*”替换为:

(\btodo\b.*)|(\/\*(\*(?!\/)|[^*])*\btodo\b(\*(?!\/)|[^*])*\*\/)

结果:

您必须使用 */ 关闭突出显示。

它使用两种模式:

  1. (\btodo\b.) 捕获任何带有单词 todo 的行
  2. (/\*(\*(?!/)|[^*])*\btodo\b(\*(?!/)|[^*]*\*/) 捕获多以 /* 开头并以 */ 结尾的行 cmets

任何其他组合都可能不起作用。

注意:您必须替换现有的正则表达式以避免同一待办事项的多个实例出现在待办事项列表中。

【讨论】:

  • 刚刚在 Mac 上的 IntelliJ 2017.1.3 中使用它,效果很好。谢谢!
  • 在当前的Android Studio中,这不像@Jeremy上面所说的那样工作......但它确实适用于在TODO测试之前使用/**测试*/
  • 警告:这只会将 IntelliJ 和 Android Studio 分成十亿个部分。它具有 RegEx 递归,这在 Java 开发中几乎被认为是一种罪过,因为 RegEx 表达式是如何编译的,而且你很容易导致 SO(这确实会导致)。
【解决方案7】:

这个正则表达式对我有用:

(?:(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(\s*\b.*\b)*)|(?:\/\*\s*(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(?:(?!\*\/)[\s\S])*\*\/)

它基本上会寻找以下内容:

  • todoTODO 关键字可选地以括号中的工单/问题 ID 和单个空白字符后的任意数量的字符作为后缀。
  • /* 开头的 java 多行注释,后跟任意数量的空格,然后是上面单行待办事项描述中概述的条件。一旦在以下任何行中找到 */,它就会终止。

单行示例:

todo some very important stuff
TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376
// todo some very important stuff
// TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376

多行示例:

/* todo assignee or something
    a very important message
    another thing
*/

/* TODO[SAO-13]
 * a very important message
 * another thing
*/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多