Xcode使用FIXME,TODO,??? ,?

时间:2011-05-04 23:54:55

标签: xcode tags xcode4 comments todo

我已经开始在XCode中使用FIXMETODO???!!!标记,但我们发现当它们无法识别标记时很痛苦属于一个功能。标签只能在给定的功能之外识别。

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

9 个答案:

答案 0 :(得分:50)

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

#warning TODO: fix this later...

获取编译警告或

#error FIXME: fix now!

得到编译错误。

我还将这些添加到代码段库中,以便轻松添加待办事项。

答案 1 :(得分: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/"

归功于Benjamin Ragheb

答案 2 :(得分:19)

编辑2016-02-02

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


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

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

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

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

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

答案 3 :(得分:8)

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

你可以在双斜杠之前或之后有任意数量的空格,但是你必须使用大写字母并用冒号跟随标记。

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

//          FIXME: This works.
  //TODO: This works.
    //                  !!!: Working.
// // //???: Works as well.

答案 4 :(得分:4)

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

答案 5 :(得分:3)

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

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

答案 6 :(得分:2)

只是抬头,但我注意到了TODO:它不能在任何类型的块内工作。只需将其移到块的正上方或下方即可。

答案 7 :(得分: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上运行良好

答案 8 :(得分:0)

如果您想继续开发,但需要确保您的应用不会因剩余的//FIXME:而发布,则可以执行以下操作。

在您的标题之一中的某个位置定义

#if DEBUG
#define FIXME 0;
#endif

此定义使您的应用可以进行调试,但无法将其存档以进行发布。

现在您可以在要使用注释的任何地方使用FIXME

例如:NSNumber *magicNumber = 7; FIXME