JetBrains Research — наука, меняющая мир

Летняя практика НГУ-JetBrains 2018

Приглашаем студентов 1-3 курсов НГУ и других вузов Новосибирска принять участие в летней практике!

Работа над проектами будет проходить в экспериментальной лаборатории ФИТ в течение июля (точные даты станут известны позже). Мы предлагаем поработать очно, удаленного формата нет. Рассчитывайте на нагрузку 5 дней в неделю по 8 часов в день.

Студенты 2 курса ФИТ смогут пройти отборочные собеседования с 19 по 23 марта. Для первокурсников ФИТ, а также других факультетов и вузов о начале отбора мы сообщим дополнительно.

Подать заявку


Проекты


Пожалуйста, при подаче заявки указывайте номера проектов согласно приведенному ниже списку.

1. Сравнение логов инспекции

Автор: Т.Валеев

Имеется инспекция (инструмент для статического анализа исходного кода, встроенный в IntelliJ Idea). Конкретная инспекция проводит проверку на какие-то определенные [потенциальные] ошибки, например, на присваивание значения переменной, которая потом не используется. Этот инструмент нуждается в тестировании. Тестирование проводится путем прогонки инструмента на каком-то большом реальном проекте. В результате получается большой отчет в формате XML, который содержит описания всех найденных в проекте ошибок заданного типа.

Необходимо написать инструмент, который сравнивает два отчета и находит различия между ними. Например, прогон вчерашней версии инструмента нашел 1512 ошибок, а сегодняшней - 1515. При этом три ошибки новая версия не находит, зато находит шесть новых. Необходимо (в идеальном случае) вывести отчет, который содержит только эти девять ошибок, чтобы облегчить разработчику анализ и понимание результатов теста.

Желательно оформить инструмент в виде плагина в IntelliJ Idea.

2. Бенчмарк для look-and-feel

Автор: В. Проводин

У Swing есть возможность устанавливать пакеты, изменяющие внешний вид графического интерфейса (форму кнопок, оформление меню, множество других параметров). Эти пакеты содержат как статические ресурсы, так и исполняемый код, и могут оказывать влияние на производительность приложения.

Необходимо написать инструмент, который прогоняет тестовое приложение с разными установленными пакетами look-and-feel, измеряет производительность отдельных операций (например, отрисовка элементов интерфейса, реакция на нажатие кнопки) и выводит отчет. При написании такого инструмента могут оказаться полезными существующие инструменты для тестирования GUI приложений, автоматически имитирующие действия пользователя (нажатие кнопок, выбор пунктов меню, прокрутка и до.)

3. Враппер для Kotlin-native

Автор: К. Боголепов.

Язык Kotlin-nativе, как и другие языки с управляемой памятью, имеет некоторые ограничения при работе с существующими библиотеками на C/C++/Fortran/Assembler. Для удобной работы с такими библиотеками обычно разрабатывают специальные промежуточные библиотеки (врапперы).

В качестве примера для разработки такого враппера предлагается разработать враппер для библиотеки rhash https://github.com/rhash/RHash . Библиотека выбрана из тех соображений, что она, с одной стороны, достаточно популярна и полезна, с другой - содержит ряд типичных проблем при взаимодействии с языками управляемой памятью, а с третьей - имеет богатый набор врапперов для других языков, которые можно изучить и взять за образец.

4. Обезьянка

Автор: В. Проводин

Для ряда языков, например для Java, существуют генераторы псевдослучайных, но синтаксически корректных и даже квазиосмысленных (т.е. выдающих предсказуемые результаты) программ. Такие генераторы полезны для тестирования компиляторов и других инструментов, работающих с текстами на этом языке (статических анализаторов, сред разработки).

Требуется написать аналогичный генератор текста для языка Kotlin, возможно путем доработки и настройки существующих инструментов для Java.