【问题标题】:How can I mark "To Do" comments in Xcode?如何在 Xcode 中标记“待办事项”注释?
【发布时间】:2023-03-12 01:53:01
【问题描述】:

目前我正在处理基于 iOS 的图像处理任务。

问题:

我正在研究不同的模块。因此,如果将来我需要在模块中添加某些内容,我想将其标记为待办事项。 是否有其他宏或类似的宏可以在 Xcode 中添加待办事项?

我试过了:

为此,我目前正在使用#pragma,例如:

#pragma mark -
#pragma mark To do: Add the Image processing methods.

我得到了:

但它在“方法”部分中列出如下:

我真正需要的:

问题是,它列在方法列表下,所以有时我忘记从该部分中删除它,而且很难在整个源代码中找到它。 (搜索#pragma 结果以显示整个列表)

技术细节:

我使用的是 Xcode 4.6.2 版。

【问题讨论】:

  • 如何进入 Xcode 列出所有方法、pragma 标记和 TODO 注释的特定视图?
  • @Mischa:检查我的答案,它在方法列表栏下。
  • 我确实检查了您的答案,但没有找到如何显示该弹出窗口的提示。但我想我现在找到了:它位于“导航”栏中的代码编辑器顶部,对吧?
  • 顺便说一句:有没有办法一次显示所有项目的 TODO?
  • @Mischa:是的,它在代码编辑器的顶部,据我所知,没有办法一次显示所有要做的 cmets(而不是搜索整个项目)

标签: xcode


【解决方案1】:

我明白了。

写评论如:

// TODO: Do something

会成功的。

我得到了类似的东西:


还有很多选项,例如

  1. // FIXME: Midhun

  2. // ???: Midhun

  3. // !!!: Midhun

  4. // MARK: Midhun

【讨论】:

  • 您也可以使用 //FIXME: 或 #warning。当您使用#warning 时,您会在 Xcode 中收到警告,您可以直接跳转到该部分。
  • 这不是@Dev2rights 在您之前一小时发布的吗?你为什么不接受他的回答?
  • @trojanfoe:是的。但我得到了一个更适合我的解决方案 //MARK: 和 #warning。这就是为什么我没有接受它
  • 好吧,// FIXME// MARK#warning// TODO 不同,所以这不能回答您的问题。
  • @Domsou:目前除了列出的选项外,没有其他可用选项。如果我有任何答案,我会更新我的答案。
【解决方案2】:
// TODO: the thing todo

是你显示待办事项的方式。

【讨论】:

  • 您还可以使用// FIX: Everything crashes all the time 更轻松地返回使用跳转栏产生问题的代码部分。
  • 奇怪地使用这个不会显示 XCode 5.1.1 中的注释
  • 另外 2 个与此处相关的标记是 #warning 和 #error i.imgur.com/KVjrVwG.png
  • Nitpick:在//TODO: 之间放置一个空格。例如:// TODO: Read this from prefs。如果您查看 Swift 和 Objective C 语言的文档,就会发现相当一致地遵循此空间约定。
【解决方案3】:

使用

//TODO: some thing here

如果您只想查看下拉列表中的待办事项列表,则可以使用

如果您想打扰,可以使用#warning 标记:

#warning this will create a compiler warning.

当您构建应用程序时,您会收到一个编译器警告(一个黄色三角形,不是编译器错误),它更像是在提醒您需要做的事情。

【讨论】:

  • 我认为#warning 是最好的解决方案,因为它会在编译时警告您。谢谢
【解决方案4】:

使用下面的脚本,您可以看到所有必需的标签,例如警告。

  1. 在项目导航器中选择您的项目
  2. 在侧边栏中打开目标并移至“构建阶段”选项卡
  3. 点击“+”号
  4. 选择“新建运行脚本构建阶段”
  5. 将以下脚本添加到“运行脚本” 脚本:

    KEYWORDS="TODO:|FIXME:|DevTeam:|XXX:"
    find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/"
    

原答案取自Here

另一种选择是XToDo Xcode 插件。

【讨论】:

  • 很好的解决方案,有没有办法排除所有的 pod 文件?我使用的扩展中有几个 Todos 或 Mixmes?
  • 自己在这篇帖子stackoverflow.com/q/37157027/6003494找到了解决方案,脚本是:KEYWORDS="TODO:|FIXME:|\?\?\?:|\!\!\!:" find "." \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "./Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/"
【解决方案5】:

你可以使用 XToDo 插件

https://github.com/trawor/XToDo

使用 ctrl+t 触发列表窗口的开/关

使用 alcatraz 轻松安装 使用 ctrl+t 触发列表窗口开/关

【讨论】:

  • 正在向下滚动以建议,完全推荐。
【解决方案6】:

我开始了

// TODO: Implement bubble sort.

然后我加入了一个大型项目,有时我需要一个 todo 来比 WIP 提交更长寿,因此为了将我的 todo 与我的同行区分开来,我用我的首字母命名我的 todo:

// TODO: SM: Implement bubble sort

有时我想要更多的可见性,所以我开始在某些地方使用编译指示警告。

#warning Implement bubble sort

有一天,我决定通过将-Werror 添加到我的 cflags 来打开困难模式。不幸的是,这使得编译指示警告毫无用处,因为它们会阻止编译。所以我重新使用// TODO:,直到 Jeff Nadeau 告诉我我可以放

-Wno-error=#warnings

在我的 cflags 中,以免将编译指示警告视为错误。所以现在#warning-Werror 可以并存。

【讨论】:

    【解决方案7】:

    我倾向于准确地写:

    //TODO: Blah blah blah
    

    然后我只需执行 COMMAND-SHIFT-F 并查找“//TODO”。

    使用文件大纲下拉菜单只会显示当前文件的 TODO,但我倾向于查看我的项目的 TODO 状态。

    粗略的解决方案,但它确实有效。

    【讨论】:

      【解决方案8】:

      我将已识别的标记拆分为警告和错误以供我自己使用,我想我会在这里分享:

      KEYWORDS="STUB:|WARNING:|TODO:|FIXME:|DevTeam:|\?\?\?:" 
      find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: warning: \$1/"
      
      KEYWORDS="ERROR:|XXX:|\!\!\!:" 
      find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: error: \$1/"
      ERROR_OUTPUT=`find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: error: \$1/"`
      
      exit ${#ERROR_OUTPUT}
      

      【讨论】:

        【解决方案9】:

        另一种简单的方法,略超出框框,如果您不想弄乱方法列表栏,是在 cmets 中使用约定,如 //Todo:,当您想要整体解决它们时,只需选择Find Navigator,匹配大小写并搜索//Todo:

        我更喜欢这个,因为我不喜欢下拉菜单看起来像意大利面条代码。是的,我经常有很多 Todo:'s ;)

        【讨论】:

          【解决方案10】:
          #error
          

          #warning
          

          也用于C编程

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-26
            • 1970-01-01
            • 1970-01-01
            • 2020-11-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多