Развитие ISBLScan.ViewCode

21 34

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) Фиксированный размер верхней панели при разворачивании на весь экран
Update 20191102
1) Добавлены действия ТМ. Добавлены события "Показ/Скрытие формы" задачи ТМ.
Update 20191120
1) Исправлена проблема с кодировками для вычислений в записях справочников.
Update 20200207
1) Исправлена проблема парсинга мастеров действий

Владислав Живонос

А можно полный пакет с exe-шником? Не везде есть доступ и возможность собрать пакет :(

Александр Чугунов

Владислав, по ссылке "Пример сборки..." лежит архив с exe шником и конфигом. Пробовали скачать?

Владислав Живонос

Толи у нас архивы режет толи еще чего, но exe нет внутри :(

Владислав Живонос: обновлено 25.05.2017 в 08:33
Александр Чугунов

Владислав, залил зашифрованный архив, пароль directum. Так не должно ничего резать...

Александр Чугунов: обновлено 25.05.2017 в 08:18
Владислав Живонос

Каперский ругается :(

25.05.2017 10:42:01 На карантине троянская программа HEUR:Trojan.Win32.Generic \AppData\Local\Temp\7zE82F42EC1\ISBLScan.ViewCode.exe Высокая 

Прям печаль-беда


 

Владислав Живонос: обновлено 25.05.2017 в 08:46
Александр Чугунов

Мда... Антивируса я не держу (Windows Defender не считается), но вряд ли это реально вирус/троян. Сейчас поищу где бы проверить...

Александр Чугунов

Странно, https://virusdesk.kaspersky.ru/ на ссылку на гитхаб говорит всё ок, а когда ему локальный файл подсовываю, говорит заражен HEUR:Trojan.Win32.Generic. То есть на основании эвристики он думает, что файл заражен, но не знает чем и скорее всего это ложное срабатывание... Сейчас попрошу коллегу пересобрать у себя и проверить.

.

Владислав Живонос

Скорее всего за счет механизма доступа к базе касперский и паникует

Александр Чугунов

Я проверил оригинальный isblscan - на него не ругается. Щас на запасном ноуте делаю загрузочный диск с каспером, лишний раз провериться не помешает)

Александр Чугунов

Коллега пересобрал у себя из исходников, получил такое же срабатывание антивируса. Так что ложная тревога (если только где-то в оригинальных исходниках не зашит вредоносный код). Прям как в анекдоте, первый раз что-то полностью самостоятельно сделал на .NET и сразу получил то, что считают вирусом=)

Александр Чугунов

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

Игорь Прищепов

Вуухуууу!

Мега крутейшая вещь тащемта совершенно тотальнейше необходимейшая. А куда делся Вячеслав Смирнов (респект ему и уважуха) - оригинальный разработчик этой чудо проги?

Feature request: Можно плиз еще по ctrl-f в открывшемся окне с текстом поиск простого совпадения (без изысков) организовать?
Подсветку найденного - вроде делает ? Проверить не могу, но в сборке слова светятся...

 

 

Игорь Прищепов: обновлено 30.05.2017 в 18:50
Игорь Прищепов: обновлено 30.05.2017 в 18:51
Александр Чугунов

Выложил новый билд
1) Теперь каждая вкладка - это независимый экземпляр поиска (в текущей базе) со своим деревом, чекбоксами, редактором. 
2) Появилась возможность указывать в параметрах запуска реквизиты базы. При указанных параметрах запуска подключение к базе и скачивание разработки выполняется автоматом при старте. Формат параметров как у Directum (пока что имена параметров регистрозависимы).

-S=server -D=directum -N=sa -W=12345 -IsOSAuth=true


Игорь, все найденные слова подсвечиваются, это было в оригинале. По Ctrl+F я посмотрю что можно сделать. Сейчас можно в критериях поиска менять текст и он сразу ищется в тексте открытого редактора, подсвечивает и прокручивается до найденного.
Что я планирую делать дальше:
1) Возможность в редакторе выделить слово, нажать сочетание клавиш и выполнится поиск в новой вкладке. Аналогично в дереве элементов, например, чтобы найти где используется какая-то функция.
2) В критериях поиска по Enter выполнять поиск, переход на новую строку Ctrl+Enter, например.
3) Доработать загрузку даты последнего изменения элементов. Сделать фильтрацию по дате.
4) Возможность скопировать имя элемента дерева. Скорее всего сделаю строку состояния, которая в самом низу, доступной для выделения и туда, к дате и имени элемента, добавлю код и ид.

Тестируем, пишем замечания и пожелания=)

Александр Чугунов

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

Михаил Куприянов

Работа проделана большая. Однако, первое, что бросается в глаза это не точное соответствие загрузчиков объектной модели 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
Александр Чугунов

Update 20191102 (только exe'шник ViewCode)

1) Добавлены действия ТМ. Добавлены события "Показ/Скрытие формы" задачи ТМ.

Никита Захаров

Александр, большое Вам спасибо за проделанную работу! Удобный инструмент.

Даниил Бабарин

Александр, а можно что-то сделать (или я могу что-то сделать..?) с поиском ру-слов в кастомных записях? Например, РКК использует пользовательские события, но кириллица отображается неверно.

Александр Чугунов

Даниил, я бы первым делом попробовал изменить "Language for non-Unicode programs". У меня всё хорошо с русским языком на последнем билде.

Даниил Бабарин

Александр, выбран "Русский" там.. Проблема только в пользовательских сценариях. В других местах нормально ищется и отображается кириллица.
.. ладно, спасибо, значит у меня что-то не так.

Александр Чугунов

Даниил, там действительно ошибка в коде была, я невнимательно проверял (для строковых реквизитов всё работало, проблема только для текстовых была).
Update 20191120 (только exe'шник ViewCode)
1) Исправлена проблема с кодировками для вычислений в записях справочников.

Александр Чугунов: обновлено 20.11.2019 в 20:50
Даниил Бабарин

Александр, :3, теперь отображается правильно. Спасибо за поддержку продукта!

Даниил Бабарин

Александр, моё приветствие!

Не сочтите за наглость - возможно ли поправить баг парсинга МД с альтернативными этапами? В данном случае, добавлен этап "Документ", ViewCode всегда ругается при сканировании, но продолжает поиск.

Текст ошибки

Александр Чугунов

Даниил, мне нужен пример мастера, на котором ломается. Не могу воспроизвести. Пришлите на почту chugunenok@gmail.com

Александр Чугунов

Update 20200207 (только exe'шник ViewCode)
1) Исправлена проблема парсинга мастеров действий (если у события нет Title - берем ActionName)

Авторизуйтесь, чтобы написать комментарий