【问题标题】:Xcode: View all TODO's in projectXcode:查看项目中的所有 TODO
【发布时间】:2016-07-30 20:18:41
【问题描述】:

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

我知道如何做到这一点in a file through the function drop down,但不确定如何查看项目中的所有内容。

【问题讨论】:

    标签: xcode todo


    【解决方案1】:

    而不是将它们标记为

    //TODO: do something
    

    我喜欢这样写:

    #warning TODO do something
    

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

    【讨论】:

    • 这是 Objective-C 中的一个特性,但在 Swift 中还不是一个特性。
    • 我不知道它是在哪个版本中添加的,但它可用于 Xcode 10 中的 Swift。
    • 在 Xcode 10 / Swift 4.2 中,现在的语法是:#warning ("TODO do something")
    • 这确实会修改您的程序流程。例如,如果您将其插入到函数f() { someValue } 中,编译将失败。您必须添加 return 语句,因为您的函数变成了多语句函数。我个人不喜欢这样,所以我坚持构建阶段解决方案。
    【解决方案2】:

    您可以将“运行脚本”构建阶段添加到您的目标中,该阶段将在您的整个项目中查看 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

    【讨论】:

    • 刚刚遇到这个,它让我的生活变得轻松多了,谢谢!
    【解决方案3】:

    我会这样做。

    按 shift+command+F (⇧⌘F),然后搜索 //TODO:(或者您的 TODO 已格式化)

    【讨论】:

      【解决方案4】:

      答案:

      除了使用快捷键“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 之外,您还想要自己的 TODO,您可以创建第 4 个我们称之为 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/"
        
      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 包管理器),那么您可以通过在路径中输入项目名称让脚本忽略工作区中的所有内容(项目除外),因此如果您的项目名为“MyProject”,则在脚本中将 find "${SRCROOT}" 替换为 find "${SRCROOT}/MyProject",这样最终将是(再次包括我们的 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

      【讨论】:

        猜你喜欢
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        相关资源
        最近更新 更多