Я программист и часто и много смотрю на всякий код. волей-неволей потихоньку моя
интуиция подсказывает, что вот этот код вот так писать не нужно, там будет много
багов и этот код скоро изменится. А какой-то код, напротив, выглядит очень
надежным и я вполне уверен, что еще ближайшие годы его не будут менять. Лет 5
назад я начинал небольшой пет-проект, который позволяет детектировать и
подсвечивать хрупкие участки кода, я его делал, но понял, что работы там
непочатый край и забросил это дело.
В общем полгода назад я наткнулся на библиотеку, которая рисует то, как строки в
репозитории умирают с течением времени, прогнал на репозитории vscode и получил
красивый график: t.me/pgurov_channel/725
.
Я опубликовал этот красивый график так же в Линкедине, получил всякие
комментарии. Среди комментариев был один, где один чувак сказал, что было бы
неплохо рисовать прям в vscode - сколько времени проживёт тот или иной код. Тут
я понял, что если стряхнуть пыль со старого проекта, взять эту либу и ИИ, то
можно замутить расширение для vscode, которое будет предсказывать время жизни
для строк. Думал обучу какой-нить XGBoost и дело в шляпе.
Сказано-сделано. Начал ковырять и потихоньку доковырял до идеи, чтобы сделать
анализ выживаемости кода. Представлять словно строка - это пациент и когда
строку удалили - то пациент как бы умер. Распарсить миллионы строк кода с
гитхаба и натянуть на всё это дело статистический анализ выживаемости, который
применяют к реальным пациентам для разных целей (например, изучение лекарств и
тд).
В общем распарсил кучу очень больших репозиториев с длинной историей
(сфокисировался на typescript, так как его хорошо знаю), запихал всё в
clickhause и начал крутить так и сяк. Использовал анализ Кокса, оценку Каплана —
Мейера и другое. За несколько месяцев работы я получил большую портянку всяких
данных, даже прототип расширения написал, но не опубликовал. Потом подумал, что
в принципе тянет на научную работу. Хорошенько погуглил, и оказалось, что такой
подход к строкам применён впервые. Тогда я напряг ИИ и сделал статью для
публикации, так как получил всякие интересные и полезные числа, да и подход
свежий. Опубликовал на arXiv.org
и еще отправил в журнат
EMSE - там как раз всякие такие статьи. Пока ждал рецензии, один ученый нашел
мою статью и лично написал. Мы пообщались, он похвалил подход. Немного
попереписывались, но потом нашел статью, где тоже так строку представляли как
пациента, но у них там был слабый анализ. В общем 3 месяца ревьювели, но
отказали в публикации. Рецензенты сказали, что тема клёвая, интересно, однако
слишком много материала и оформлено плохо, что данные и выводы перемешаны и
отказали в публикации. Там у меня было где-то 15 признаков строки кода и 5
давали интересные результаты.
Тогда я решил убрать всё лишнее, переписать и подготовить материал к
конференции. Благо, пока там на ревью статья была, я там еще кое-что улучшил.
ОДНАКО, на днях я нашел одну ошибку в коде, которая нивелируют пару важных
интересных признаков (печалька), которые я нашел. То есть фактически, осталось 2
признака и не самые интересные. Получается - результаты уже не тянут на статью и
расширение для vscode на этом не состряпаешь, так как подсказки будут тухлые.
Грусть-печаль-тоска… сейчас есть еще пара идей, проверю их, но надежды нет.
Интересно, что рецензенты ошибку не нашли и сам тоже её не сразу увидел.
Вот ссылка на препринт, если кому интересно: arxiv.org/abs/2606.04993