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

Практика будет проходить в Экспериментальной лаборатории ФИТ в течении июля (даты начала и конца уточняются). Рассчитывайте на загрузку 5 дней в неделю 8 часов в день. Удаленное участие не предполагается.

Отбор на практику будет проводиться в форме собеседования. Для студентов 2 курса ФИТ собеседование будет проводиться с 19 по 23 марта 2018.

Заявки подавать по адресу https://www.surveygizmo.com/s3/4260087/EDU-IS-2018-NSU-Student-LAB.

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.