2011-05-04 88 views
33

我已經開始在XCode中使用FIXME,TODO,???!!!標籤,但是我發現它在一個函數內不識別標籤時感到很痛苦。標籤只能在給定功能之外識別。Xcode使用FIXME,TODO,???,?

我該如何在一個函數中識別這些標籤(因爲這是錯誤所在)?

+1

也許是因爲我仍然在Xcode 3.2.6上,但是這些功能在功能列表中顯示得很好......您是否在尋找某種縮進來顯示功能中的成員身份? – Richard 2011-05-05 00:25:34

+1

你能指出你正在使用什麼版本的Xcode,並且(如果不是Obj-C)你正在寫什麼語言? – 2011-05-05 01:22:38

+0

如果您還未申請此功能,我建議您提交一份錯誤報告:http://bugreport.apple.com – 2011-05-05 08:44:44

回答

16

編輯的2016年2月2日

的Xcode現在支持// MARK:,// TODO://和FIXME:地標註釋你的代碼,並列出它們在跳吧。


要找到(你指定你自己,實際上任何標記)的特殊標記,你可以使用搜索導航,輸入以下字符串,然後選擇「在項目,正則表達式匹配」 ...「,忽略大小寫「:

(//FIXME|//!!!|//\?\?\?|//TODO) 

這將在您的項目中搜索所有這些特殊標記。您甚至可以添加您想要的任何標記,例如「//審覈:請查看以下代碼」。那麼這將是以下搜索字符串:

(//FIXME|//!!!|//\?\?\?|//TODO|//REVIEW) 

我在工作區中具有檢索瀏覽器始終打開,裝滿這個字符串創建一個標籤。不幸的是,XCode有時會將這個字符串從搜索框中刪除,因此您必須在需要時複製&粘貼。

36

一種解決方法是使用一個構建腳本這標誌着作爲那些警告:

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

+11

找到腳本[here](http://www.benzado.com/blog/post/329/make-xcode-nag-you-about-unfinished-todos)by Benjamin Ragheb – KDaker 2011-08-27 14:58:41

+3

如果你的代碼保存在一個文件路徑中,該文件路徑中包含空格,例如「/ Home/John/iPhone Apps/Code」。簡單的修復,在第二行,把引號$ {SRCROOT} – john 2011-10-21 03:20:24

+0

我把它放在Xcode的運行腳本中,但不知何故它沒有收到我的任何TODO。任何想法爲什麼 – 2012-01-16 07:24:33

48

在Xcode 4.1(不知道,如果這個工程在以前的版本)我寫

#warning TODO: fix this later... 

得到一個編譯警告或

#error FIXME: fix now! 

得到一個編譯錯誤。

我還將這些添加到代碼片段庫中,以便添加待辦事項非常容易。

+0

哦,你如何將它添加到片段庫? – 2012-01-16 07:14:18

+2

不幸的是,如果您在構建設置中將「顯示警告設置爲錯誤」,那麼這不算好 - 因爲一切都變成了錯誤! – 2012-04-21 13:10:56

+0

@RaffiKhatchadourian - 要添加一個片段,只需拖動你的源代碼。 http://stackoverflow.com/questions/6784627/how-to-add-custom-code-snippets-to-xcode-4 – 2013-01-03 04:17:29

8

FIXME:,TODO:,???:和!!!:在4.3.3的內部和外部都起作用。

您可以在雙斜線之前或之後有任意數量的空白,但必須使用大寫字母並使用冒號後面的標籤。

只是爲了說清楚 - 所有這些工作:

//   FIXME: This works. 
    //TODO: This works. 
    //     !!!: Working. 
// // //???: Works as well. 
+1

似乎它不是所有的時間。自己填寫錯誤。 – Johan 2012-07-12 08:12:53

+0

Gatada,你可以詳細說明你仍然發現的錯誤。 – Ben 2012-12-20 21:28:42

+0

它也可以在#Xcode 5 – g212gs 2014-05-23 12:36:45

2

剛擡起頭,但我已經注意到了TODO:的沒有任何類型的塊內工作。只要將它移到您的區塊上方或下方即可。

4

這個Xcode插件怎麼樣? - >https://github.com/trawor/XToDo

+0

中工作它沒關係,它在XCode 5.0.2中幾次崩潰。如果您還沒有XCode 5,則必須在XCode 5中手動創建插件文件夾。這是非常基本的,它創建了4個默認標記的列表:TODO,FIXME,??? &!!!並將任何標記的內容放到單獨的XCode窗口的下拉列表中:但是,我希望能夠創建自己的標記,例如「BOOKMARK:」和「WATCH:」,並讓它們也顯示出來 - 沒有簡單的方法來做到這一點與插件。 – OverToasty 2014-01-18 20:45:58

+0

@OverToasty檢查新的提交,叉子做出一些很大的改變 – 2014-02-12 08:00:36

3

xCode 6 beta 4應支持MARK,TODO和FIXME地標。

Xcode現在支持// MARK:,// TODO:和// FIXME地標來標註您的代碼,並在跳轉欄中列出它們。 (14768427)!

+1

鏈接已損壞。 – 2015-12-11 13:55:08