- PVSM.RU - https://www.pvsm.ru -
Disclaimer: Данный топик не содержит реализации того, что указано в заголовке, и не содержит технических деталей. Тут всего лишь перечислены проблемы, которые я собираюсь решать и краткий план как это должно быть реализовано. Учитывая новизну темы и неплохой уровень сложности для меня, я не ручаюсь что эта статья не будет первой и последней. Но мне честно хотелось-бы довести это начинание до конца, паралельно освещая его здесь. Эта статья выступает, в том числе, и дополнительной мотивацией.
Так уж сложилось что несколько недель назад мне пришлось переучиваться с C# разработчика на Salesforce разработчика. И я бы не прочь сказать что это оказалось просто и увлекательно (хотя это во многом так и есть), но один факт регулярно продолжает мне портить настроение и заставляет вспоминать любимый .NET. Последние 5 лет я работал исключительно с VisualStudio — раработка WinForms приложений, SIlverlight, чисто C# бекенд, TypeScript в качестве хобби. И я воспринимал сей инструмент как то, что будет со мной всегда, как то, что делает разработку комфортной, и глупо считал что остальные IDE находятся примерно на том же уровне развития (я упорно старался забыть свой опыт работы с каким-то Flex IDE на базе Eclipse).
И тут бац… Force.com IDE [1] — IDE на базе Eclipse для работы с Salesforce либо Mavensmate [2] плагин к Sublime Text.
Разработка под Salesforce ведётся с использованием двух основных языков/технологий — Apex code [3] на базе Java, и VisualForce [4] — фреймворком для построения кастомной веб-части «приложений».
Особенность использования всей платформы Salesforce — облачность головного
Ну ок, классно, бери любой IDE для Java и работай в нём. Нельзя, ибо язык действительно отличается, а вышеуказанная ОГМ обязывает нас каждый чих сохранять в облако и компилировать его там.
Вполне резонный вопрос — а почему, собственно, не переучиться на новую IDE как нормальный человек? Тут, для меня, всё довольно просто:
Последний пункт стоит рассмотреть немного детальнее — так как я всего пару недель как начал этим интересоваться, список у меня накопился небольшой, но достаточный для меня:
В качестве темы для обсуждения было-бы интересно узнать — а как Вы относитесь к подобным особенностям IDE?
Из заголовка и предыстории потяне общий вектор — расширение для Visual Studio, которое позволит нам полноценно работать с Salesforce кодом. Если разобрать концепцию на принципиальные блоки — я бы выделил вот что (именно в таком порядке):
Одной из самых интересных проблем (спасибо Salesforce) является отсутствие где-либо грамматики как самого Apex так и VisualForce. Да, Apex построен на базе Java, но изменений там прилично и строить грамматику основываясь на оной из Java и текстовом reference Apex'a долгая и нудная задача… Но иных вариантов я не нашёл, поэтому процесс запущен.
Что важно при формализации грамматики — на чём в дальнейшем будет строиться лексер — ANTLR [6] либо Irony [7] (два самых интересных проекта). У ANTLR мне намного больше нравится формат задания грамматики (он намного более привычен для меня, ибо не смешивается с кодом), но подход самого проекта мне не нравится — Java приложение которое генерирует лексер автоматически (на Java либо C#). Irony намного более гибок и свободен в выборе как и что реализовывать, но задание грамматики мне не нравится — ужасный микс кода и BNF правил.
Буду благодарен за любую дополнительную информацию по подобным инструментам для .Net в комментариях
Вторая проблема с которой я столкнулся за неделю изучения материалов и неспешного ковыряния во внутреностях VS SDK — документация [8] и примеры. Я серьёзно всегда считал документацию на msdn одним из лучших примеров. Всё есть, отличные туториалы, примеры, детальная информация. В данном же случае — полная фигня. Примеры из статей msdn не компилируются (ну фиг с ними), после банального исправления тупых ошибок код просто не работает. Информация (которой кот наплакал) размазана по разным местам и важные нюансы можно собирать по десятку разных материалов. VS SDK 2013 (а именно под эту версию я собираюсь разрабатывать расширение) примерами не снабжается, а примеры из VS SDK 2010 неполные и устаревшие (используются старые подходы без Managed Package Framework [9] а сам лексер так вообще не включён в пример — приходится использовать .NET Reflector для выковыривания кода.
Как я уже писал — я не уверен в том, что смогу довести данный проект до адекватного вида, но, надеюсь, это случится. Сейчас я выковыриваю информацию по Syntax Highlighting и, паралельно, работаю над грамматикой Apex. При хорошем стечении обстоятельств примерно через месяц я бы хотел поделиться с вами прогрессом, если же через месяц ничего не произойдёт, знайте — я пал под давлением Apex либо Visual Studio :)
Буду благодарен за полезные ресурсы, статьи, советы, примеры реализации Language Service для Visual Studio 2010+ (IronPython не вариант) и вообще по теме.
Спасибо за внимание.
Автор: Bick
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/55766
Ссылки в тексте:
[1] Force.com IDE: http://wiki.developerforce.com/page/Force.com_IDE
[2] Mavensmate: http://mavensmate.com/
[3] Apex code: http://wiki.developerforce.com/page/Apex_Code:_The_World's_First_On-Demand_Programming_Language
[4] VisualForce: http://wiki.developerforce.com/page/User_Interface
[5] мозга: http://www.braintools.ru
[6] ANTLR: http://www.antlr.org/
[7] Irony: http://irony.codeplex.com/
[8] документация: http://msdn.microsoft.com/en-us/library/bb165099.aspx
[9] Managed Package Framework: http://msdn.microsoft.com/en-us/library/bb166533.aspx
[10] Источник: http://habrahabr.ru/post/213677/
Нажмите здесь для печати.