При разработке программного обеспечения может возникать потребность написания простого и несодержательного кода или создания большого количества однотипных данных; автоматизация этого процесса может значительно увеличить производительность труда программиста. Один из способов автоматизировать это — написать программу, которая генерирует код или данные для проекта.
Поэтому существуют инструменты, упрощающие написание программ для кодогенерации. Один из таких инструментов — Т4 [7]. Т4 — язык программирования, созданный компанией Microsoft. Он содержит фрагменты кода на C#, которые исполняются для того, чтобы сгенерировать текст или код. Благодаря своему удобству этот инструмент широко используется: на платформе хостинга кода GitHub по запросу
‘‘template OR parameter OR output OR assembly OR import OR include extension:tt extension:t4 extension:ttinclude’’
на момент написания данной работы находится более 570’000 файлов .
У этого инструмента был важный недостаток: ни одна среда разработки не предоставляла полноценную поддержку этого языка «из коробки». Единственный инструмент, предоставлявший полноценную возможность исполнять такие файлы — Visual Studio, среда разработки от компании Microsoft. Но и она не предоставляла никакой интеллектуальной поддержки при редактировании этих файлов.
Более того, Visual Studio была единственной средой разработки, предоставлявшей полноценную поддержку исполнения файлов на этом языке. Из-за этого данная технология была привязана к Visual Studio, и все, кто работал с проектами с Т4, оказывались привязаны к ней и к операционной системе Windows.
В частности, они не могли использовать Rider [3] — кроссплатформенную среду разработки от компании JetBrains.
Поэтому возникла идея поддержать язык Т4 в Rider. Для того, чтобы проблему можно было считать решённой, в среде разработки Rider должна появиться возможность исполнять файлы на языке Т4 и интеллектуальная поддержка при их редактировании, которая включает в себя, но не ограничивается такими функциями, как подсветка синтаксиса, автодополнение, анализ кода на потенциальные проблемы, рефакторинги, показ документации.
Для того, чтобы у языка Т4 был полноценный кроссплатформенный способ исполнения и кроссплатформенный инструмент, предоставляющий полноценную поддержку сразу после установки, было принято решение создать плагин к Rider, который добавляет необходимую функциональность. Для упрощения задачи было принято решение не писать новый плагин, а адаптировать существующий плагин к ReSharper к запуску в Rider, переиспользовать код из него и расширить его функциональность до необходимого уровня.
1. Постановка задачи
Целью данной работы является создание плагина к среде разработки Rider, добавляющего поддержку языка Т4. Для её выполнения были поставлены следующие задачи:
1. Адаптировать существующий плагин к ReSharper к запуску в Rider.
2. Добавить в плагин возможность исполнять файлы и отлаживать их исполнение.
3. Улучшить интеллектуальную поддержку редактирования файлов, предоставляемую плагином.
4. Протестировать на типичных примерах файлов, автоматизировать это тестирование.
5. Получить обратную связь от пользователей и исправить возможные недочёты.
В ходе данной работы был создан плагин к среде разработки Rider, добавляющий поддержку языка Т4. Для этого было сделано следующее:
1. Существующий плагин к ReSharper был адаптирован к запуску в Rider. Исходный код нового плагина был выложен на сервис GitHub по адресу https://github.com/JetBrains/ForTea.
2. В плагин была добавлена возможность исполнять файлы и отлаживать их исполнение.
3. Интеллектуальная поддержка редактирования файлов, предоставляемая плагином, была расширена.
4. Плагин был протестирован на типичных примерах файлов; это тестирование было автоматизировано.
5. Была получена обратная связь от пользователей. Наиболее критичные недочёты были исправлены.