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 уже знає, які це.