我已经开始在 XCode 中使用FIXME
、和标签TODO
,但是当标签位于函数中时,我发现它无法识别标签很痛苦。标签仅在给定函数之外被识别。???
!!!
如何在函数中识别这些标签(因为这是错误所在)?
在 xcode 4.1 中(不知道这是否适用于以前的版本)我写
#warning TODO: fix this later...
获得编译警告或
#error FIXME: fix now!
得到一个编译错误。
我还将这些添加到代码片段库中,以使添加待办事项变得非常容易。
一种解决方法是使用将这些标记为警告的构建脚本:
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/"
归功于本杰明·拉格布。
2016-02-02 编辑
Xcode 现在支持 //MARK:、//TODO: 和 //FIXME: 地标来注释您的代码并在跳转栏中列出它们。
要查找那些特殊标记(实际上是您自己指定的任何标记),您可以使用搜索导航器,输入以下字符串,然后选择“在项目中,匹配正则表达式“...”,忽略大小写”:
(//FIXME|//!!!|//\?\?\?|//TODO)
这将在您的项目中搜索所有这些特殊标记。您甚至可以添加任何您想添加的标记,例如“//REVIEW:请查看以下代码”。这将是以下搜索字符串:
(//FIXME|//!!!|//\?\?\?|//TODO|//REVIEW)
我在我的工作区中创建了一个选项卡,它始终打开搜索导航器,并用这个字符串填充。不幸的是,XCode 有时会从搜索框中删除此字符串,因此您必须在需要时将其复制粘贴准备好。
FIXME:、TODO:、???: 和 !!!: 在 4.3.3 内部和外部的函数中工作。
在双斜杠之前或之后可以有任意数量的空格,但必须使用大写字母并在标签后面加上冒号。
只是说清楚 - 所有这些工作:
// FIXME: This works.
//TODO: This works.
// !!!: Working.
// // //???: Works as well.
这个 Xcode 插件怎么样?--> https://github.com/trawor/XToDo
xCode 6 beta 4 应该支持 MARK、TODO 和 FIXME 地标。
Xcode 现在支持 //MARK:、//TODO: 和 //FIXME 地标来注释您的代码并在跳转栏中列出它们。(14768427)!
只是提醒一下,但我注意到 TODO:'s 在任何类型的块中都不起作用。只需将其移动到您的块上方或下方即可。
这是我用作附加构建阶段的脚本,注意它不包括通过 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 上运行良好
如果您想继续开发但需要确保您的应用程序不会在发布时留下剩余//FIXME:
内容,您可以执行以下操作作为替代方案。
在您的一个标题中的某处定义它:
#if DEBUG
#define FIXME 0;
#endif
此定义允许您的应用程序为调试而构建,但阻止它被存档以供发布。
现在你可以FIXME
在任何你会使用评论的地方使用。
前任:NSNumber *magicNumber = 7; FIXME