Preview

Вестник НГУ. Серия: Информационные технологии

Расширенный поиск

Автоматический рефакторинг Java-кода с использованием Stream API

https://doi.org/10.25205/1818-7900-2019-17-2-49-60

Аннотация

Долгое время функциональное программирование на Java было невозможно. Однако в 8-й версии Java появились лямбда-выражения. Благодаря поддержке стандартных библиотечных классов (Stream, Optional и т. д.) на Java стало возможно описывать преобразования над данными в функциональном стиле. Java - достаточно старый язык, на нем написано большое количество императивного кода. Для того чтобы воспользоваться преимуществами нового подхода, требуется выполнить нетривиальный рефакторинг, что в случае осуществления человеком может быть весьма утомительным, легко совершить ошибку. К счастью, для достаточно большого количества ситуаций данный рефакторинг можно безопасно осуществить автоматически. На основе IntelliJ Idea был разработан программный инструмент, который позволяет обнаружить места, где возможно автоматическое преобразование императивного кода в эквивалентный с использованием Stream API, а также автоматическое исправление, которое позволяет произвести замену. Рефакторинг пользуется средствами IntelliJ Idea для анализа Java-кода, а также интегрируется в саму IDE. Одним из основных критериев корректности работы алгоритма является безопасность данного преобразования. Пользователь не может доверять инструменту, если преобразование может изменять семантику кода. В данной статье рассматриваются различные ограничения, которые накладываются на шаблоны кода для того, чтобы преобразование без искажения семантики было возможно. Данный рефакторинг был протестирован на различных библиотеках для проверки сохранения семантики путем проверки результатов тестирования до и после применения рефакторинга. В статье не будет обсуждаться влияние использования Stream API на производительность приложения.

Об авторах

Р. А. Иванов
Новосибирский государственный университет
Россия


Т. Ф. Валеев
Институт систем информатики им. А. П. Ершова СО РАН
Россия


Рецензия

Для цитирования:


Иванов Р.А., Валеев Т.Ф. Автоматический рефакторинг Java-кода с использованием Stream API. Вестник НГУ. Серия: Информационные технологии. 2019;17(2):49-60. https://doi.org/10.25205/1818-7900-2019-17-2-49-60

For citation:


Ivanov R.A., Valeev T.F. Automatic Refactoring of Java Code Using the Stream API. Vestnik NSU. Series: Information Technologies. 2019;17(2):49-60. (In Russ.) https://doi.org/10.25205/1818-7900-2019-17-2-49-60

Просмотров: 87


Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 1818-7900 (Print)
ISSN 2410-0420 (Online)