你能在Objective-C中添加自定义编译器警告吗?

26

(我在写问题时在别处找到了答案,但考虑到其他人可能也需要,所以我想发布这篇文章。)

我想标记那些需要更好的错误处理方法。我希望它们能显示为编译器警告,这样其他开发人员(可能负责该领域)会注意到,并在他们有空时予以修复。

(欢迎尝试其他方法,我已查看了 __attribute__((warning)) ,但无法使其工作。)

2个回答

51

非常容易实现:

#warning Needs better error handling, please.

2
这并不是一个好主意,因为它使警告成为构建的常规部分,而不是可能出现错误的指示。你最好使用//FIXME或//TODO来标记需要工作的代码段,许多IDE自动捕捉这些标记。 - Jon Shier
3
我会尽力进行翻译,保持原意并使其更易于理解。以下是需要翻译的内容:@jshier 我认为这是开发者错误(或者至少我只会标记我认为是开发者错误的地方)。这样做的想法是为了帮助其他人(以及我自己)在错误处理方面变得更好,以便今后做正确的事情。当这些问题得到解决时,警告将会消失,我认为它们需要得到解决。我不认为 //FIXME 和 //TODO 足够强大。 - zekel
当你在一个足够小的团队中工作时,这样做更有意义,也不会显得唐突,因为它只会被你的目标受众看到。 - zekel
5
使用//FIXME或//TODO时请注意,需要在末尾加上冒号。正确的语法是://FIXME:修复我评论和//TODO:要做评论。 - Designerd
@theReverend:它们会显示在代码窗口上方的跳转栏中的方法列表中。 - zekel

4
选择目标,然后选择“Build Phases”选项卡。在窗口底部,您会看到一个“Add Build Phase”的选项,可以在屏幕底部添加构建阶段。您可以使用“Add Build Phase”添加“Run Script build phase”。运行脚本选项允许您选择一个 shell 并针对项目执行任意代码。
要警告关于“TODO & FIXME”注释,请使用/bin/sh作为 shell,并粘贴以下脚本:
TAGS="TODO:|FIXME:"
echo "searching ${SRCROOT} for ${TAGS}"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"

来源: 从TODO注释中生成Xcode警告


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接