gifts2017

Анализатор кода 1с v7.7

Опубликовал Майкопчанин (Майкопчанин) в раздел Программирование - Инструментарий

Внешняя обработка для 7.7, позволяющая проанализировать код модуля. Это всего лишь инструмент, дающий возможность разобраться в порядке вызовов процедур и в том, как та или иная переменная получает свое значение. Используется внешняя компонента ActiveMD.

Так получилось, что в наследство мне досталась конфигурация написанная программистом не то что плохим, но со своеобразной логикой и уникальным стилем программирования. В результате родилась эта обработка. Дальнейшее развитие не планируется, и в таком виде программа меня устраивает. Изучив методы работы своего предшественника, я уже довольно быстро нахожу критичные места программы, хотя обработка по прежнему интенсивно используется.
Возможности.
1) Анализ процедур и функций: строятся таблицы вызовов, какая процедура откуда вызывается и в свою очередь, что вызывает. Можно построить дерево вызовов для определенной процедуры.
2) Анализируется диалог, связь реквизитов формы с реквизитами объекта метаданных, места программы, где используется реквизит.
3) Реквизиты объекта: аналогично реквизитам формы.
4) Переменные. Отслеживается объявление переменных и их использование. Позволяет легко получить всю цепочку, по которой происходит работа с переменной: присвоение, передача значения, использование к качестве параметра процедуры и т.д.
Недостатки:
1) ActiveMD не позволяет открывать файлы ert, но это ограничение можно обойти загрузив модуль обработки из текстового файла.
2) Не оптимальный алгоритм парсинга программного кода
3) Неверная работа с переменными, если имена глобальной переменной совпадает с именем локальной переменной.
4) При построении дерева вызовов учитывается рекурсия только в том случае, если процедура вызывает саму себя. Если рекурсия имеет более сложный характер (две процедуры вызывающие взаимно друг друга), то программа зацикливается.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
-
.1216411025 15,72Kb
25.09.09
363
.1216411025 15,72Kb 363 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Vlad (VladimirKuzn) 23.07.08 06:32
Доступ к модулю закрыт паролем, видимо разработчик является таким же программистом, о котором пишет. Т.к. при общем доступе, как то не корректно закрывать модуль
2. Майкопчанин (Майкопчанин) 23.07.08 09:31
Не вижу состава преступления, разве в правилах это как-то определено? Моя разработка, что хочу, то и делаю. А потом пароль на модуль в 1с - это такая формальность...
3. Sergey (AmigoKZ) 23.07.08 09:50
рез=МД.Открыть(СокрЛП(Конфа),Пароль);
{D:\DATA_1C\TS\KOMPLEKSNAYAFREE\EXTFORMS\АНАЛИЗАТОРКОДА.ERT(1440)}: Поле агрегатного объекта не обнаружено (Открыть)

Что за хрень? :-) (ActiveMD ver04 beta)
4. Sergey (AmigoKZ) 23.07.08 10:38
Вопрос снимаю, с v2 все нормально
5. V. L. (Vladal) 23.07.08 11:30
(1) А у меня пароль не спрашивает...
6. V. L. (Vladal) 23.07.08 11:35
Автор - молодец! Полезная штука
7. soll79 (soll79) 24.07.08 09:25
А вот где бы найти ActiveMD v2?
Поможет кто?
8. Майкопчанин (Майкопчанин) 24.07.08 10:45
Яндексом пользоваться не умеем?
http://mdeditor.narod.ru/
9. soll79 (soll79) 24.07.08 10:56
Благодарю.
Хотя можно было бы и не так грубо.
10. Майкопчанин (Майкопчанин) 24.07.08 11:17
Сорри, это была не грубость, а неподдельное удивление :)
и спасибо за плюсик...
11. soll79 (soll79) 24.07.08 11:40
12. Олег Пономаренко (O-Planet) 24.07.08 15:39
Кстати, у Абадонны есть пример, как ActiveMD с ert работает...
13. Майкопчанин (Майкопчанин) 24.07.08 23:17
2(12) что-то я ничего не нашел. Возможно плохо искал... Если и буду переделывать прогу, то впредь буду использовать Compound.dll и писать буду скорей всего не на 1с - уж больно медленно текст обрабатывается.

Если кому то уж очень хочется анализировать код внешних обработок, то можно рекомендовать следующий рецепт: в конфе добавить "лишнюю" обработку или отчет и туда загружать еэртэшку.
14. aspirator 23 (aspirator23) 16.08.08 09:13
Разворачиваю обработку на полный экран, затем сворачиваю "взад". Все поля, элементы диалога и таблицы обработки "поплыли", кроме закладок Диалог и Модуль. На закладке Переменные и Реквизиты это заметно, если пощелкать по Переменным, Ревизитам. На Закладке Подключение кнопку Читать нажать уже не удается - попадешь на флаг.

Открываю ТиС 952 Справочник Контрагенты, формаЭлемента. Нажимаю Читать. Читает, одновременно выдает сообщение
Формула = СписокПараметров.ПолучитьЗначение(12);
{F:\UTILITS\АНАЛИЗАТОРКОДА\АНАЛИЗАТОРКОДА.ERT(1023)}: Индекс не входит в границы списка значений.
15. aspirator 23 (aspirator23) 16.08.08 09:22
Вдогонку. На закладке Модуль неясен смысл символов в первых двух колонках. Краткое описания не помешало бы, хотя бы для неочевидных вещей. Можно конечно по коду обработки разобраться, но как уже написано выше стоит пароль.
16. Терминатор (константин) 05.12.08 21:48
Однозначно, ставлю плюс
17. Сергей (Che) Коцюра (CheBurator) 03.03.10 11:49
А положить в архив АктивМД - религия не позволяет?
18. Сергей (Che) Коцюра (CheBurator) 03.03.10 11:50
19. Майкопчанин (Майкопчанин) 03.03.10 12:58
(18) Спасибо, а то предыдущая ссылка в посте № 8 уж совсем затерялась.
;)
20. Ирина Ситникова (ir.sitnikowa) 21.04.10 15:00
21. Глеб Терещенко (baikot) 08.11.13 20:41
А как ее запустить, подскажите! Пароль какой?
22. Глеб Терещенко (baikot) 11.11.13 11:35
(2) Майкопчанин, Толкаете на преступление!
Но, всё равно, спасибо за обработку!
23. Алекс Маслюков (Alex_1066) 22.04.14 17:19
И как с этой обработкой работать.. При открытии выдаёт "Неудачная попытка подключения внешней компоненнты ActiveMD". Открыть в конфигураторе обработку и подкорректировать нет возможности - запоролено.... Можно конечно сказать автору спасибо... ну и ладно.. скажем.. не жалко.. :(
24. Алекс Маслюков (Alex_1066) 23.04.14 12:05
Подключил...как и у (14)Тоже выскакивает...
Формула = СписокПараметров.ПолучитьЗначение(12);
{Z:\WORK\АНАЛИЗАТОРКОДА.ERT(1023)}: Индекс не входит в границы списка значений.
РеквизитМета = СписокПараметров.ПолучитьЗначение(13);
{Z:\WORK\АНАЛИЗАТОРКОДА.ERT(1024)}: Индекс не входит в границы списка значений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа