bsl-language-server icon indicating copy to clipboard operation
bsl-language-server copied to clipboard

Вынести диагностику проверки опечаток в отдельную библиотеку-сервис

Open EightM opened this issue 3 years ago • 2 comments

На текущий момент в BSL LS есть проверка опечаток (Typo), которая ищет орфографические ошибки в коде. Для её работы требуется использование библиотеки LanguageTool, которая включает в себя как ядро, так и два словаря (английский и русский). Однако, на мой взгляд, такой подход слишком сильно вредит самому BSL LS:

  • Размер. Language Tool огромен. На текущий момент jar BSL LS "весит" 76 МБ, из них 48 МБ (63%) занято LanguageTool. Это достаточно сильно вредит как конечным пользователям (они должны платить за размер, даже если не используют данную диагностику), так и самому BSL LS. В случае выноса LS из плагина сонаркуба необходимо будет поставлять рантайм для трех основных ОС (Windows, *nix, macOS). С использованием jlink упаковка трех рантаймов + BSL LS займет 200+ МБ, что составляет довольно значительный объем.
  • Расширение. Сейчас в BSL LS вшиты словари наиболее популярных языков (английский и русский). Однако существуют так же потребность во вьетнамских, украинских, турецких и прочих словарях. Для их добавления необходимо дорабатывать BSL LS, плюс дополнительные словари увеличат и без того большой объем библиотеки.
  • Модульность. Language tool мешает полноценному внедрению JPMS, так как содержит одинаковые имена пакетов, что вызывает конфликт при сборке дистрибутива jlink.

Учитывая вышесказанное, предлагается сделать отдельный (не в рамках BSL LS) сервис, в который уедет вся логика проверки слов-токенов, все зависимости Language Tool и который будет предоставлять удобную для клиента кастомизацию настроек исключений и словарей. Данный сервис может подниматься BSL LS и общаться с ним по (не)бинарному протоколу, например JSON-RPC.

Сервис будет скачиваться либо самим БСЛ ЛС, либо вручную пользователем, если в настройках сервера включена проверка орфографии.

EightM avatar Jan 20 '22 12:01 EightM

я тебя породил я тебя и убью

Идея здравая

MinimaJack avatar Jan 24 '22 07:01 MinimaJack

Даешь легковесный LS!

otymko avatar Jan 25 '22 03:01 otymko