SnakeCharm Code Analysis Improvement 2021 Archived

Description

SnakeCharm - наш opensource плагин для PyCharm (и других IntelliJ Platform Based IDEs), добавляющий поддержку фреймворка Snakemake. Фреймворк Snakemake был создан немецким ученым Johannes Köster специально для того, чтобы облегчить задачу написания сложных сценариев обработки экспериментальных данных и распределенного запуска этих сценариев на вычислительных кластерах. Сейчас фреймворк набирает популярность у биоинформатиков и физиков, каждую неделю выходит в среднем по 3 новых научных статьи, использующих Snakemake.

Для описания сценариев используется свой собственный язык программирования, позволяющий использовать вставки кода на языке Python, поэтому стандартная поддержка языка Python понимает такие файлы достаточно условно. Мы сделали языковой плагин SnakeCharm, понимающий особенности языка Snakemake, с умным автодополнением кода, инспекциями и рефакторингами.

Цель данной стажировки - продолжить развивать статический анализ языка Snakemake в плагине и добавить новые классные функции. В рамках стажировки добавим поддержку нового синтаксиса Snakemake 6.0, а также completion/resolve/find usages/rename для наследуемых rules, rules из внешних модулей и для конфиг файла проекта (config.yaml). Другое направление - это поддержка wildcards в случае сложных зависимых Snakemake правил, улучшение работы с snakemake wrappers, а также интересна интеграцию с Python Debugger.

В ходе практики, вы будете программировать на Kotlin, познакомитесь с процессом разработки языковых плагинов для продуктов на базе платформы IntelliJ Platform IDE, получите опыт промышленного программирования с code reviews, тестами и использованием continuous integration, будете тесно взаимодействовать с API PyCharm IDE и конечно же выложите свой код в opensource и оставите след в истории =)

Данный проект рассчитан на 1-2 участников.

Перед собеседованием нужно выполнить тестовое задание, можно сделать его частично, но чем полнее, тем выше шансы на получение стажировки в этом проекте.

Вопросы можно задавать по почте: roman.chernyatchik@jetbrains.com

Requirements

  • Знание базовых алгоритмов и структур данных
  • Умение писать многопоточный код
  • Знание Java или Kotlin
  • Желательно иметь опыт программирования на Python
  • Приветствуется опыт написания языков плагинов для IntelliJ Platform, интерес к биоинформатике, а также опыт использования Snakemake

Mentor

Roman Chernyatchik

Contact details

internship@jetbrains.com

Location

Remote

Product/Team

JetBrains Research

Technologies

Continuous Integration Kotlin Python