Поскольку цель периода объединения сообщества состоит в том, чтобы обсудить ваш проект с вашим наставником, получить отзывы и ознакомиться с кодовой базой, чтобы вы могли начать работу над своим проектом как можно скорее с первого дня,

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

Фаза 1

Я начну свою работу в репозитории угольных медведей. Это будет инструмент командной строки, в котором пользователю потребуется указать имя медведя, язык, который он будет анализировать, и т. д. Минимум вещей, необходимых для запуска медведя, будет настроен для пользователя в виде стандартного кода. , чтобы пользователь мог работать с тестовыми файлами, а затем пользователь мог изменять их в соответствии с исполняемым файлом linter.

coala-bears — create будет CLI, который будет задавать пользователю определенные вопросы о медведе, которого он собирается создать. Образец файла для медведя будет создан на основе значений, введенных пользователем. вопросы будут как

это автокоррекция медведя или регулярное выражение?

носить имя

язык, который будет использоваться для проверки

Он будет упакован в модуль Python и загружен в PyPi.

Фаза 2

Будет работать над Lint, Output и Results.

  • Навигация результатов: это изменение будет сделано в классе взаимодействия с консолью, где в настоящее время пользователь может двигаться дальше только в ошибках, о которых сообщает медведь. Было бы неплохо иметь опцию «вернуться к предыдущему».
  • Встроенная проверка исходного кода: код можно разделить на разные разделы, а затем соответствующий медведь может запустить этот раздел. Цель состоит в том, что если файл имеет множественный синтаксис, например, PHP имеет html-код, линтер для PHP должен запускаться только в разделе, который является PHP.
  • Многострочное регулярное выражение: некоторые линтеры имеют многострочные сообщения об ошибках, но если регулярное выражение анализирует только одну строку, то оставшаяся часть теряется. Я добавлю переменную, чтобы сделать многострочную, и ее можно использовать в таких случаях.
  • Multiple Lint Bear: Идея состоит в том, что если у меня есть проект с несколькими файлами на разных языках программирования, то Bear, указанный пользователем в списке, разделенном запятыми, должен анализировать только те файлы, для которых он предназначен, а не другие файлы.

Фаза 3

Будет изменен пользовательский интерфейс угольных медведей. На этом этапе я планирую внедрить в интерфейс командной строки некоторые функции, такие как автозаполнение, подсветка синтаксиса и строка состояния. Я собираюсь использовать превосходную библиотеку Python Prompt Toolkit для выполнения этой задачи.

  • Для автодополнения я собираюсь указать способ добавления всех имён медведей. Также может быть реализовано нечеткое сопоставление строк.
  • Для строки состояния я планирую показать детали имени файла, нижняя панель инструментов может иметь определенные сообщения от линтера. Я все еще работаю над тем, что еще можно добавить в эти разделы.
  • Я собираюсь использовать лексеры Pygments для подсветки синтаксиса. Переменная Languages ​​будет сопоставлена ​​с разными лексерами pygments, и для определенного расширения файла будет запущен соответствующий лексер.

Фаза 4

Этот этап является необязательным и зависит от того, смогу ли я завершить оставшиеся этапы в соответствии с графиком и есть ли у меня на это время в период GSoC. На этом этапе я буду работать над созданием веб-сайта для угольных медведей, где пользователь сможет увидеть всех медведей, перечисленных в одном месте, с разбивкой по языкам. Информация о каждом медведе будет извлечена из строк документации. Для каждого медведя также будет представлена ​​аккуратная таблица, в которой мы можем иметь всю статистику, дополнительную информацию о линтере, авторе медведя, URL asciinema.

Я надеюсь обсудить эти моменты с моим наставником и, исходя из этого, я начну писать код 23 мая или ранее.

Следите за обновлениями с моей стороны :)