我已经开始在XCode中使用FIXME
,TODO
,???
和!!!
标记,但我们发现当它们无法识别标记时很痛苦属于一个功能。标签只能在给定的功能之外识别。
如何在函数中识别这些标记(因为这是错误所在的位置)?
答案 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