Как я могу пометить комментарии «To Do» в Xcode?


111

В настоящее время я работаю над задачей обработки изображений на базе iOS.

Проблема:

Работаю над разными модулями. Поэтому, если мне нужно будет что-то добавить в модуль в будущем, я хочу отметить это как заметку «Сделать». Есть ли какие-либо другие макросы или аналогичные для добавления заметки в Xcode?

Я попытался:

Для этого в настоящее время я использую #pragma:

#pragma mark -
#pragma mark To do: Add the Image processing methods.

Я получил:

Но он перечислен в разделе «Метод», например:

Делать

Что мне действительно нужно:

Проблема в том, что он указан в списке методов, поэтому иногда я забываю удалить его из раздела, также очень сложно найти его во всем исходном коде. (Поиск результатов #pragma для отображения целых списков)

Технические подробности:

Я использую Xcode версии 4.6.2.


Как мне перейти к тому конкретному представлению, где Xcode перечисляет все методы, прагматические метки и аннотации TODO?
Миша

@Mischa: Проверьте мой ответ, он находится под панелью списка методов.
Midhun MP

Я проверил ваш ответ и не нашел подсказки, как показать это всплывающее окно. Но я думаю, что нашел его сейчас: он находится в верхней части редактора кода в этой «навигационной» панели, верно?
Миша

Кстати: есть ли способ показать сразу все TODO проекта?
Миша

@Mischa: Да, он находится в верхней части редактора кода, и, насколько мне известно, нет способа отобразить все, чтобы делать комментарии сразу (вместо поиска по всему проекту)
Midhun MP

Ответы:


133

Я понял.

Написание комментария вроде:

// TODO: Do something

Сделаем свое дело.

Получилось что-то вроде:

ДЕЛАТЬ


Также есть много таких вариантов, как :

  1. // FIXME: Midhun

  2. // ???: Midhun

  3. // !!!: Midhun

  4. // MARK: Midhun

16
вы также можете использовать // FIXME: или #warning. когда вы используете #warning, вы получаете предупреждение в Xcode, и вы можете перейти непосредственно к этой части.
brush51

6
Разве это не то, что @ Dev2rights опубликовал за час до вас? Почему ты не принимаешь его ответ?
trojanfoe

@trojanfoe: да. Но у меня есть более подходящее решение // MARK: и #warning. Вот почему я не принял это
Midhun MP

1
Ну // FIXME, // MARKи #warningэто не то же самое, что // TODOи так, это не отвечает на ваш вопрос.
trojanfoe

1
@Domsou: В настоящее время нет других доступных вариантов, кроме перечисленных. Я обновлю свой ответ, если получу.
Midhun MP

129
// TODO: the thing todo

Это то, как вы показываете задачи todo.


10
Вы также можете использовать, // FIX: Everything crashes all the timeчтобы упростить возврат к частям вашего кода, которые создают проблемы, с помощью панели перехода.
Maarten

Как ни странно, использование этого не показывает комментарий в XCode 5.1.1
loretoparisi 01

Еще 2 маркера, которые кажутся актуальными здесь: #warning и #error i.imgur.com/KVjrVwG.png
Зейн Хелтон

3
Nitpick: поставьте пробел между //и TODO:. Например: // TODO: Read this from prefs. Если вы просмотрите документацию по языкам Swift и Objective C, то это соглашение о пространстве довольно последовательно соблюдается.
Джеффро

43

Используя

//TODO: some thing here

работает, если все, что вам нужно, - это посмотреть список задач в раскрывающемся списке

Если вы хотите быть навязчивым, вы можете #warningвместо этого использовать метки:

#warning this will create a compiler warning.

И когда вы создадите приложение, вы получите предупреждение компилятора (желтый треугольник, а не ошибка компилятора), которое немного больше «в лицо» напоминает вам о том, что вам нужно сделать.


Я думаю, что #warningэто лучшее решение, потому что оно предупредит вас во время компиляции. Спасибо
Duck

36

С помощью сценария ниже вы можете увидеть все необходимые теги, например предупреждения.

  1. Выберите свой проект в Project Navigator
  2. Откройте цель на боковой панели и перейдите на вкладку «Build Phases».
  3. Нажмите на знак "+"
  4. Выберите «Фаза сборки нового сценария выполнения». Добавление скрипта
  5. Добавьте ниже скрипт в «Выполнить скрипт» Готовый скрипт Скрипт:

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

введите описание изображения здесь

Исходный ответ был взят отсюда

Другой альтернативой является плагин XToDo для Xcode.


отличное решение, есть ли способ исключить все файлы pod? в моих используемых расширениях есть пара Todos или Mixmes?
Марко Вебер

нашел решение самостоятельно в этом сообщении stackoverflow.com/q/37157027/6003494 сценарий:KEYWORDS="TODO:|FIXME:|\?\?\?:|\!\!\!:" find "." \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "./Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/"
Марко Вебер

6

Вы можете использовать плагин XToDo

https://github.com/trawor/XToDo

используйте ctrl + t для включения / выключения окна списка

используйте ctrl + t для включения / выключения окна списка

Пример панели инструментов

Простая установка с помощью alcatraz, используйте ctrl + t для включения / выключения окна списка


1
Прокручивал вниз, чтобы предложить это, полностью рекомендую.
MANIAK_dobrii

6

Я начал с

// TODO: Implement bubble sort.

Затем я присоединился к большому проекту, и иногда мне требовалось, чтобы задача просуществовала дольше, чем фиксация WIP, и поэтому, чтобы отличить мои задачи от моих сверстников, я назвал ее через интервалы своими инициалами:

// TODO: SM: Implement bubble sort

Иногда мне хотелось большей наглядности, поэтому я начал в некоторых местах использовать предупреждения прагмы.

#warning Implement bubble sort

Однажды я решил включить жесткий режим, добавив -Werrorв свои cflags. К сожалению, это делает предупреждения прагмы бесполезными, поскольку они препятствуют компиляции. И я вернулся к использованию, // TODO:пока Джефф Надо не сказал мне, что я могу поставить

-Wno-error=#warnings

в моих cflags, чтобы не рассматривать предупреждения прагмы как ошибки. Так теперь #warningи -Werrorмогут жить бок о бок друг с другом.


3

Я стараюсь писать точно // TODO: Бла-бла-бла

Затем я просто нажимаю COMMAND-SHIFT-F и ищу «// TODO».

Использование раскрывающегося списка структуры файла покажет вам только TODO для текущего файла, но я, как правило, хочу видеть статус TODO моего проекта.

Грубое решение, но оно делает свое дело.


2

Я разделил распознанные токены на предупреждения и ошибки для собственного использования и подумал, что поделюсь ими здесь:

KEYWORDS="STUB:|WARNING:|TODO:|FIXME:|DevTeam:|\?\?\?:" 
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: warning: \$1/"

KEYWORDS="ERROR:|XXX:|\!\!\!:" 
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: error: \$1/"
ERROR_OUTPUT=`find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -not -path "${SRCROOT}/Pods/*" -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/1: error: \$1/"`

exit ${#ERROR_OUTPUT}

0

Другой простой способ, немного нестандартный, если вы не хотите загромождать панель списка методов, - это использовать соглашение в комментариях, например, //Todo:и когда вы хотите адресовать их в целом, просто выберите Найти навигатор, сопоставить регистр и искать//Todo:

Я предпочитаю это, так как мне не нравится, что раскрывающиеся методы выглядят как спагетти-код. И да, у меня часто бывает много Todo: s;)


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.