Xcode:查看项目中的所有待办事项

Xcode:查看项目中的所有待办事项,xcode,todo,Xcode,Todo,有没有办法查看Xcode项目中的所有TODO标记 我知道如何做到这一点,但不确定如何查看项目中的所有内容。我会直接进行文本搜索 按shift+command+F⇧⌘F、 并搜索//TODO:或您的TODO的格式,而不是将其标记为 //TODO: do something 我喜欢这样写: #warning TODO do something 这允许在问题导航器中查看它们。在生产版本上,我甚至检查了“将所有警告视为错误”编译器设置。您可以向目标添加一个运行脚本构建阶段,该阶段将查看整个项目的TO

有没有办法查看Xcode项目中的所有TODO标记


我知道如何做到这一点,但不确定如何查看项目中的所有内容。

我会直接进行文本搜索


按shift+command+F⇧⌘F、 并搜索//TODO:或您的TODO的格式,而不是将其标记为

//TODO: do something
我喜欢这样写:

#warning TODO do something

这允许在问题导航器中查看它们。在生产版本上,我甚至检查了“将所有警告视为错误”编译器设置。

您可以向目标添加一个运行脚本构建阶段,该阶段将查看整个项目的TODO:| FIXME:标记并将其标记为警告

当您构建项目%+B时,新的构建阶段将在问题导航器中将所有TODO标记列为警告

以下是Ben Dodson关于使用Swift文件执行此操作的教程的链接:

下面是我一直在做的一个项目的截图:

答复: 除了使用快捷方式命令+Shift+F进行全局搜索并查找所有出现的TODO和FIXME外,您还可以将所有TODO和FIXME转换为警告:

导航到构建阶段,单击左上角的+并选择新建运行脚本阶段 在文本区域中输入以下内容:

TAGS="TODO:|FIXME:"
find "${SRCROOT}/" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"
保留所有其他选项,然后构建项目

享受吧

修改: 如果除了MARK FIXME TODO之外,您还需要自己的代码,您可以创建第四个我们称之为ERROR的代码,它会像其他实际错误一样将您的代码线高亮显示为红色,但不会使您的应用程序崩溃:

TAGS="TODO:|FIXME:"
ERRORTAG="ERROR:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$|($ERRORTAG).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/" | perl -p -e "s/($ERRORTAG)/ error: \$1/"
如果您不希望脚本显示与cocoapods一起安装的软件包中存在的TODO和FIXME,请使用此修改后的脚本,该脚本仍然包含上面的错误标记:

TAGS="TODO:|FIXME:"
ERRORTAG="ERROR:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$|($ERRORTAG).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/" | perl -p -e "s/($ERRORTAG)/ error: \$1/"
如果您在使用CoCoapod之外安装包,例如手动安装或使用Swift Package Manager安装,那么您可以通过在路径中输入项目名称,让脚本忽略工作区中除项目之外的所有内容,因此如果您的项目名为MyProject,则在脚本中用find替换find${SRCROOT}${SRCROOT}/MyProject所以final将再次包含我们的错误标记:

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

Hector Matos、Zoe Van Brunt和Noah Wilder的功劳来自

这是Objective-C中的一个功能,但还不是Swift中的一个功能。我不知道它是在什么版本中添加的,但它在Xcode 10中对Swift可用。在Xcode 10/Swift 4.2中,语法现在是:警告要做某事刚刚遇到了这个问题,它让我的生活如此忙碌太简单了,谢谢你!