Xcode:查看项目中的所有TODO

时间:2016-04-09 15:17:00

标签: xcode todo

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

我知道如何执行此操作in a file through the function drop down但不确定如何在项目中查看所有内容。

3 个答案:

答案 0 :(得分:14)

而不是将它们标记为

//TODO: do something

我喜欢这样写:

#warning TODO do something

允许在问题导航器中查看它们。在生产构建中,我甚至会检查"将所有警告视为错误"编译器设置。

答案 1 :(得分:9)

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

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

以下是Ben Dodson使用Swift文件执行此操作的教程的链接:https://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/

以下是我一直在研究的项目的截图:

Showing TODO marks as Warnings in the Issue Navigator

答案 2 :(得分:0)

答案:

除了使用快捷键“ Command + 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/"

保留所有其他选项,并构建您的项目。

享受!

修改:

  1. 如果您想在MARK FIXME TODO之外拥有自己的产品,则可以将其命名为ERROR,它将与其他任何实际错误一样突出显示为红色,但不会使您的应用崩溃:< / p>

    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/"
    
  2. 如果您不希望脚本显示与cocoapods一起安装的软件包中存在的TODO和FIXME,请使用此修改后的脚本(仍然包含上面的ERROR标记):

    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/"
    
  3. 如果您在使用cocoapods之外安装软件包(例如手动安装或使用Swift Package Manager),则可以通过在脚本中输入项目名称来使脚本忽略工作空间中除项目以外的所有内容。路径,因此,如果您的项目名为“ MyProject”,则在脚本中将find "${SRCROOT}"替换为find "${SRCROOT}/MyProject",使final成为(同样包含ERROR标签):

    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/"
    

信贷来自How to Highlight Your TODOS, FIXMES, & ERRORS in Xcode的赫克托·马托斯(Hector Matos),佐伊·范布伦特(Zoe Van Brunt)和诺亚·怀尔德(Noah Wilder)