Knip :: полезен для AI-dev
Вы же пользуетесь статическим анализом? Для TypeScript есть весьма стандартный инструмент, который подсвечивает неиспользуемый в проекте код - knip.
https://knip.dev/
https://github.com/webpro-nl/knip
Такого рода инструменты очень полезны именно при ai разработке, когда агенты могут не убирать какой то код для "сохранения совместимости" или ещё по каким то своим туманным соображениям гуманизма, и постепенно в проекте могут копиться некоторые артефакты. Артефакты вредны, засоряют контекст, путают тех же агентов. В крайних случаях вы можете обнаружить себя в многочасовой отладке кода, который устарел и не используется вообще (поэтому и падают тесты с ним - он не актуален).
Штуками такого рода надо пользоваться аккуратно: ложные срабатывания у неё вполне вероятны и ожидаемы: инструмент без ai, анализирует проект механистически, зато полностью.
🟢 Что хорошо работает - это ИИ агент в связке с knip. Инструмент удобно запускать "из-под агента": тогда вы можете просить агента проанализировать вывод knip и дать заключение об адекватности отчёта. Агент с умной моделью типа кодекса вполне в состоянии понять, что публичное api сервисов - это не "лишний экспорт" и может добавить полезные исключения. И в целом проверить выдачу knip на адекватность. Например, подтвердить что часть файлов действительно устарела и не используется. Заодно по итогам он вам эти файлы и уберёт!
‼️ Ещё раз: commit перед сеансом работы с knip обязателен. Пропишите это правило для ИИ агента тоже: чистый git. Эта штука советует УДАЛЕНИЕ кода - операция по определению деструктивная, пользоваться надо аккуратно и желательно понимать что ты делаешь. Лучший рецепт: сохраняйте копии ДО процедуры. Обязательно все проверяйте ПОСЛЕ.
👉 Из полезного: позволяет вычистить накопленные артефакты после многих итераций разработки. Не знаю насколько для человеческой разработки актуально (от команды, наверное, зависит) - но как без подобных инструментов в ai swe я даже не знаю!
В общем, полезная штука, кмк.
А вы чем ещё пользуетесь?
#post
@deksden_notes
Post #140
534