Code completion (дополнение кода) - одна из основных функций любой IDE, позволяющая экономить программисту много времени. Как правило, эта функция реализована в виде появляющегося окошка с множеством вариантом. Поскольку вариантов может быть много, необходимо сортировать этот список, показывая наверху наиболее релевантные варианты. За последние годы мы научились ранжировать варианты при помощи машинного обучения, повышая точность ранжирования и сокращая время на выбор элемента. Однако, остаются случаи, когда ранжирование все еще можно улучшить. Один из таких случаев - вывозы библиотечных методов.
С одной стороны, использование библиотечных методов происходит достаточно часто, поскольку многие проекты используют 3-rd party библиотеки. С другой стороны, есть множество open-source проектов, использующих эти библиотеки. Таким образом, мы можем улучшить ранжирование code completion, выучив шаблоны использования различных классов из самых популярных библиотек. Возможность строить и доставлять в IDE такие модели у нас уже реализована. Цель этого проекта - улучшить механизмы поиска шаблонов использования API 3-rd party библиотек. В процессе работы предстоит научиться строить и проверять качество моделей для ранжирования, после этого выдвинуть и проверить несколько гипотез о том, как можно повысить качество предсказаний у построенных моделей.
Вопросы можно задать вот сюда: vitaliy.bibaev@jetbrains.com