Bizibah Павел Гуров

Заметки

Я программист и часто и много смотрю на всякий код. волей-неволей потихоньку моя интуиция подсказывает, что вот этот код вот так писать не нужно, там будет много багов и этот код скоро изменится. А какой-то код, напротив, выглядит очень надежным и я вполне уверен, что еще ближайшие годы его не будут менять. Лет 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