41

我已经开始在 XCode 中使用FIXME、和标签TODO,但是当标签位于函数中时,我发现它无法识别标签很痛苦。标签仅在给定函数之外被识别。???!!!

如何在函数中识别这些标签(因为这是错误所在)?

4

9 回答 9

51

在 xcode 4.1 中(不知道这是否适用于以前的版本)我写

#warning TODO: fix this later...

获得编译警告或

#error FIXME: fix now!

得到一个编译错误。

我还将这些添加到代码片段库中,以使添加待办事项变得非常容易。

于 2011-09-03T16:18:44.577 回答
37

一种解决方法是使用将这些标记为警告的构建脚本:

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

归功于本杰明·拉格布。

于 2011-06-04T17:27:21.557 回答
20

2016-02-02 编辑

Xcode 现在支持 //MARK:、//TODO: 和 //FIXME: 地标来注释您的代码并在跳转栏中列出它们。


要查找那些特殊标记(实际上是您自己指定的任何标记),您可以使用搜索导航器,输入以下字符串,然后选择“在项目中,匹配正则表达式“...”,忽略大小写”:

(//FIXME|//!!!|//\?\?\?|//TODO)

这将在您的项目中搜索所有这些特殊标记。您甚至可以添加任何您想添加的标记,例如“//REVIEW:请查看以下代码”。这将是以下搜索字符串:

(//FIXME|//!!!|//\?\?\?|//TODO|//REVIEW)

我在我的工作区中创建了一个选项卡,它始终打开搜索导航器,并用这个字符串填充。不幸的是,XCode 有时会从搜索框中删除此字符串,因此您必须在需要时将其复制粘贴准备好。

于 2012-07-05T19:44:42.340 回答
8

FIXME:、TODO:、???: 和 !!!: 在 4.3.3 内部和外部的函数中工作。

在双斜杠之前或之后可以有任意数量的空格,但必须使用大写字母并在标签后面加上冒号。

只是说清楚 - 所有这些工作:

//          FIXME: This works.
  //TODO: This works.
    //                  !!!: Working.
// // //???: Works as well.
于 2012-07-11T08:38:37.070 回答
4

这个 Xcode 插件怎么样?--> https://github.com/trawor/XToDo

于 2013-12-20T07:44:47.920 回答
4

xCode 6 beta 4 应该支持 MARK、TODO 和 FIXME 地标。

Xcode 现在支持 //MARK:、//TODO: 和 //FIXME 地标来注释您的代码并在跳转栏中列出它们。(14768427)!

于 2014-07-23T08:26:25.467 回答
2

只是提醒一下,但我注意到 TODO:'s 在任何类型的块中都不起作用。只需将其移动到您的块上方或下方即可。

于 2013-10-25T03:09:52.820 回答
0

这是我用作附加构建阶段的脚本,注意它不包括通过 Carthage 引入的文件(获取这些文件也很烦人,否则因为它不是“你的”代码):

TAGS="WARNING:|TODO:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" \( -name "*.swift" \) -not -path "${SRCROOT}/Carthage/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"

在带有 Swift 4 的 xCode 9.3 上运行良好

于 2018-04-23T09:26:12.503 回答
0

如果您想继续开发但需要确保您的应用程序不会在发布时留下剩余//FIXME:内容,您可以执行以下操作作为替代方案。

在您的一个标题中的某处定义它:

#if DEBUG
#define FIXME 0;
#endif

此定义允许您的应用程序为调试而构建,但阻止它被存档以供发布。

现在你可以FIXME在任何你会使用评论的地方使用。

前任:NSNumber *magicNumber = 7; FIXME

于 2020-01-31T00:59:13.167 回答