Развитие ISBLScan.ViewCode

Опубликовано:
24 мая 2017 в 21:34
  • 25

ISBLScan ViewCode - утилита, которая делает жизнь разработчика удобнее и экономит уйму времени.

Форкнул на Github и сделал некоторые доработки:
1) Исправлен баг: при поиске не учитывался первый символ в тексте.
2) Теперь при показе текста элемента дерева редактор автоматически прокручивается к первой строке, удовлетворяющей условию поиска. 
3) Сделана загрузка схем типовых маршрутов. Из схемы берутся все события и строковые параметры (инструкции, темы и т.д.).
4) Доработан парсинг схемы прикладного блока (аналогично схеме ТМ).
5) По результатам поиска в дереве остаются только те элементы, которые удовлетворяют условиям поиска.
6) Добавлена кнопка "Expand Tree", разворачивающая все узлы в дереве.
7) Добавлена возможность включить обязательное выполнение всех критериев поиска. То есть тип объединения условий поиска можно переключить с ИЛИ на И. Для этого надо поставить галочку "satisfies all criteria".
8) Добавлена возможность загрузки текстов из произвольных справочников (пользовательские расчеты, расчет показателей модуля УПЭ и т.д.). Настраивается в файле CustomCalculationConfig.json, который должен лежать в одной папке с exe'шником. Работает это для реквизитов карточки и детальных разделов. Структура файла настройки

{
  "Calculations": [
    {
      "CalculationName": "Показатели эффективности",
      "ReferenceName": "KeyPerfomanceIndicators",
      "RequisiteName": "Tekst",
      "TableName": "MBAnalit",
      "IsTextRequisite": true
    }, 
    {
      "CalculationName": "Пользовательские расчеты",
      "ReferenceName": "РСЧ",
      "RequisiteName": "Tekst",
      "TableName": "MBAnalit",
      "IsTextRequisite": true
    }
  ]
}

CalculationName - Как будет называться главный узел дерева. По сути заголовок справочника.
ReferenceName - Имя типа справочника.
RequisiteName - SQLFieldName реквизита, содержание которого будет загружаться.
TableName - MBAnalit, MBAnValR* (не MBText)
IsTextRequisite - True для текстовых реквизитов, false для строковых.

Пример сборки (с настроенным конфигом для стандартных справочников Directum).
В решение добавлен Newtonsoft.Json, лицензия у него MIT.

Update 20170530
1) Независимые поиски для каждой вкладки
2) Параметры подключения из командной строки
Update 20170610
1) Поддержка диалогов
2) Переход на ICSharpCode.AvalonEdit (лицензия MIT)
3) Shortcuts Ctrl+Enter, F2, F3 (см. в комментах)
Update 20170625
1) Все события Мастеров
2) Фильтр по дате
3) Ctrl+T для новой вкладки, F3 по всем совпадениям в дереве
Update 20170626
1) События справочников и ТКД разделены на отдельные элементы
2) Ctrl+O чтобы открыть текущий элемент в Directum
Update 20171031
1) Добавлена поддержка методов для 5.5+
2) Выпилил загрузку параметров функции, остались только вычисления. Так загружается гораздо быстрее и удобнее навигация. 
Update 20180104
1) Ускорена загрузка функций (заметно на каналах с высоким пингом), загружаются только функции с кодом, убрано разделение на пользовательские и системные.
2) Фиксированный размер верхней панели при разворачивании на весь экран

20
Подписаться

Комментарии

Работа проделана большая. Однако, первое, что бросается в глаза это не точное соответствие загрузчиков объектной модели IS-Builder.

Речь идет о: количестве табличных разделов в справочниках и типах документов, обработчики событий типовых маршрутов и мастеров действий, нет поддержки прикладных диалогов,... (Вячеслав Смирнов теперь в Performance Lab). 

Михаил, дорабатываю утилиту в первую очередь для себя, а у меня 5.0, всё соответствует=)
По количеству детальных разделов - там разве что они называться могут неправильно, а так привязки к количеству нет, все подгружаются. Список соответствия ИД раздела нормальному названию я расширю.
По прикладным диалогам я могу сделать по описанию в справке, занес в список. 
А вот по ТМ и мастерам мне даже посмотреть негде. Если Вы знаете что там в схемах где хранится в последней версии, напишите, пожалуйста.
Спасибо за feedback.

А еще такую фичу рассмотрите по возможности:
Все найденные совпадения - показать в отдельном списке (выведенном в отдельном немодальном окне) с возможностью перемещения курсора по списку.
И если я курсором хожу по этому списку - то в основном окне содержимого с текстами  - оперативно подгружается текст, который соответствует текущей позиции списка и в нем сразу же позиционирование с подсветкой на найденной строке совпадения..

 

 

Выложил новый билд
1) Поддержка диалогов. По ТМ и Мастерам новых версий никто ничего не написал...
2) Дата последнего изменения загружается для всех элементов. В следующей версии будет фильтрация по дате.
3) ICSharpCode.TextEditor заменен на ICSharpCode.AvalonEdit (лицензия MIT)
4) Файл с описанием ISBL для подсветки синтаксиса вынесен из внутренних ресурсов в директорию приложения (ISBL.xshd). Этот файл используется AvalonEdit.
5) При выполнении поиска сразу выбирается первый подходящий элемент дерева. Для перехода в следующему подходящему элементу дерева можно нажать F2.
6) Для перемещения к следующему найденному слову в редакторе можно использовать F3 (Игорь, вместе с предыдущим пунктом это должно закрывать Ваши потребности, не вижу смысла в отдельном окне).
7) Для поиска можно использовать Ctrl+Enter вместо нажатия кнопки "Find". При открытии окна/создании новой вкладки фокус автоматически устанавливается на контроле ввода критериев поиска. Я хочу уйти от использования мыши. В следующей версии добавлю Ctrl+T для добавления вкладки.

Выложил новый билд
1) Ctrl+T для новой вкладки
2) F3 теперь работает по всему дереву, то есть при завершении поиска элементе дерева происходит переход на следующий элемент. Нажимая только F3 можно просмотреть все найденные совпадения.
3) Фильтр по дате последнего изменения.
4) Теперь загружаются все события мастеров действий. Этот пункт сделан по замечанию Михаила Куприянова (я ими не особо-то пользуюсь и не искал там никогда). В оригинальной версии программы загружались только 2 события самого мастера, по блокам ничего не загружалось. Нормального готово DFM-parser'a на .Net на просторах инета не нашлось. Найденный пример пришлось значительно доработать чтобы он вообще заработал и заработал быстро. Теперь есть как-то работающий DFM-парсер, можно будет и из форм что-то вытаскивать...

Что еще хотелось бы сделать (все пункты, что я озвучил выше, либо сделаны, либо я счел их ненужными, либо закрываются следующими пунктами):
1) Разбивку событий справочников/ТКД на отдельные элементы дерева.
2) Открытие элемента разработки в Directum. Пока не понятно, через COM или командную строку...

Выложил новый билд
1) События справочников, ТКД и диалогов разделены на отдельные элементы дерева
2) Ctrl+O чтобы открыть элемент в Directum. Открытие работает через sbrte.exe. Для разных версий можно указать свой путь к sbrte.exe. Соответствие версии (то, что возвращает процедура MBGetVersion) и пути к sbrte.exe задается в конфиге VersionNumToSbrtePathConfig.json. Объединять конфиги не стал - лень.

Теперь утилита соответствует моим потребностям в части поиска и просмотра кода =)

Валентин, почитайте начало ветки. Оно там давно живет)) Можете поставить себе бесплатную visual studio community и собрать из исходников) 

Там в исходниках последняя версия чуток оптимизирована после разработки Compare, делает на 20% меньше запросов. Совсем переписывать не стал изначальный код, мы с коллегой новую утилиту пилим, уже загрузку с sql и выгрузку в isx сделали, меньше 5 секунд выгрузка полного пакета занимает))

Александр Чугунов: обновлено 18.07.2017 в 10:03

Update 20171031 (только exe'шник ViewCode)
1) Добавлена поддержка методов для 5.5+
2) Выпилил загрузку параметров функции, остались только вычисления. Так загружается гораздо быстрее и удобнее навигация. 

Update 20180104 (только exe'шник ViewCode)
1) Ускорена загрузка функций (заметно на каналах с высоким пингом), загружаются только функции с вычислениями, убрано разделение на пользовательские и системные.
2) Фиксированный размер верхней панели при разворачивании на весь экран

Александр Чугунов: обновлено 04.01.2018 в 14:54
Авторизуйтесь, чтобы написать комментарий