TODO в коде
TODO — это обещание, которое человек дал себе и потерял. Оно пишется там, где проблема, то есть ровно там, куда больше никто не заглядывает, а к моменту, когда оно важно, автор уже в другой команде. Grep их находит, но тысяча строк вывода grep равносильна тому, чтобы не найти ничего.
Вкладка TODO в доке анализатора читает их все и делает то, чего grep не
умеет: группирует. Откройте док из строки состояния или из палитры команд
(TODO в коде) и переключитесь на вторую вкладку.
Строка состояния считает метки рядом с ошибками и предупреждениями анализаторов; щелчок по этому счётчику открывает эту вкладку.

Что считается меткой
Тег, внутри комментария, в файле, который Git отслеживает или стал бы отслеживать:
| Написано | Прочитано как |
|---|---|
// TODO: выкатить |
метка TODO, без владельца |
//todo выкатить |
то же самое — двоеточие и пробел необязательны |
# todo выкатить |
то же самое — регистр и язык не важны |
/* TODO(cgm): выкатить */ |
метка TODO, владелец cgm |
-- TODO (CGM) выкатить |
тот же владелец: cgm, (CGM) и [cgm] — один человек |
<!-- TODO: @cgm выкатить --> |
и снова то же самое |
Теги: TODO, FIXME, BUG, HACK, XXX, NOTE, OPTIMIZE, REVIEW,
REFACTOR, DEPRECATED, QUESTION, IDEA, WIP и TEMP. Первые четыре
раскрашены, потому что «здесь сломано» и «здесь у меня была идея» не должны
выглядеть одинаково в одном списке.
Тег обязан стоять после начала комментария — //, #, --, ;, %, /*,
*, <!--, """. Больше ничего не считается: todo = [l for l in lines] —
это код, а панель, записывающая присваивание переменной в долг, — панель,
которой не поверят во второй раз. То же правило не пускает в список функцию с
именем reviewNotes.
Группировка и есть смысл
Четыре оси, по одному щелчку:
| Группировать по | Отвечает на вопрос |
|---|---|
| Метке | Какой долг тащит этот репозиторий? |
| Владельцу | Что оставил каждый — и что лежит в куче без владельца? |
| Папке | Какой угол дерева гниёт? |
| Файлу | Обычный список, когда вы и так знаете, куда идёте. |
Без владельца — настоящая группа, а не остаток: метки, под которыми никто не поставил имя, — это те, которые никто никогда не подбирает, и увидеть их посчитанными и есть смысл.
Чипы меток сверху фильтруют список; то же делает щелчок по значку владельца в
строке и поле поиска, которое ищет по тексту, файлу, метке и владельцу. Только
изменённые сужает список до файлов, которые вы правили и ещё не
зафиксировали, — последняя проверка перед пушем, когда // FIXME, оставленный
час назад, вот-вот станет постоянным.
Щелчок по строке открывает файл на нужной строке.
Чего он не делает
- Он читает и никогда не пишет. Никакой отметки «сделано»: закрыть TODO — значит удалить строку и зафиксировать это. Список, который Gitcito ведёт за вас, — это todos, совсем другая вещь: личные заметки, живущие в приложении, а не в коде.
- Игнорируемые файлы пропускаются, вместе с
node_modules, что бы ни говорили метки внутри. Неотслеживаемые файлы, наоборот, входят: метка, написанная пять минут назад, важнее всех. - Он не отличает комментарий от строки. Строка
const banner = "// TODO"для сканирования — метка. У него нет парсера сорока языков, и он его не изображает. - Сканирование — это снимок. Отредактируйте файл, и панель сохранит прежние числа до следующего сканирования; кнопка обновления — вся история целиком.
- Он останавливается на 5000 метках. У репозитория за этой чертой проблема с долгом, которую не решит никакая панель.
Где он выполняется
Один git grep по рабочему дереву — поэтому миллисекунды там, где вкладка
Проблемы тратит секунды: ничего не компилируется, никакой
тулчейн не участвует, а поиск пропускает бинарники и игнорируемые пути, потому
что Git уже знает, какие это.