Как бы вы предотвратили случайное проникновение блоков кода отладки в производственную среду при использовании Progress 4GL?Предотвращение ввода кода отладки в производство с использованием Progress 4GL?
ответ
Решение основывается на предположении, что окружающая среда разработки имеет уникальный вход PROPATH, который не доступен в других окружающих средах и код компилируется при перемещении через:
&IF DEFINED(DEBUGGING) = 0 &THEN
&IF PROPATH MATCHES '*development*' &THEN
&GLOBAL-DEFINE DEBUGGING TRUE
&ELSE
&GLOBAL-DEFINE DEBUGGING FALSE
&MESSAGE Remove debugging: search for DEBUG within the code.
&ENDIF
&ENDIF
&IF DEFINED(DEBUGGING_STARTED) = 0 &THEN
&GLOBAL-DEFINE DEBUGGING_STARTED TRUE
IF {&DEBUGGING} THEN
DO:
&ELSE
END.
&UNDEFINE DEBUGGING_STARTED
&ENDIF
Использование
Сохранить файл как «отладки» (без расширения) в каталог, на который указывает PROPATH, то:
{debug}
/* some debugging code here */
{debug/}
Как и мой другой ответ об утверждении, вы можете настроить включение, которое будет пустым на производственных сайтах, содержащих флаг отладки. На сайтах разработки вам просто нужно определить значение, чтобы ваш код отладки был включен в вашу программу.
Посредством обертывания кода в препроцессоре компилятор полностью исключает код отладки при компиляции его на производственный сайт.
& если определено (debugalert) <> 0 & затем
& ENDIF
Вы бы затем использовать «& глобального определения отладки» в версиях кода, который вы хотите содержать код отладки. Не указывая «debug», вы должны заставить компилятор опустить код.
/* debug.i опустить следующее на производство */
& ГЛОБАЛЬНОЙ-ОПРЕДЕЛИТЬ DEBUGALERT
/* test.p */ {debug.i}
DEF VAR h_ct AS INT NO-UNDO
DO h_ct = 1 до 10:
& IF DEFINED (DEBUGALERT) <> 0 & ТОГДА
MESSAGE "debug message" h_ct.
<debug code goes here>
& ENDIF
END.
Если базы данных базы данных и производственных испытаний имеют разные имена, вы можете использовать этот код:
IF DBNNAME = "TESTDB" THEN
DO:
<DEBUG CODE>
END.
Я обычно просто опубликовать специальное событие - отладочный-сообщение. В моей среде Dev есть пункт меню в приложении, в котором будет запускаться окно, которое в любом случае должно быть отправлено на отладочное сообщение и отображает все созданные сообщения. Поэтому я могу вставлять debug-сообщения в свой код, а затем открывать окно, если хочу видеть сообщения.Если я забуду убрать код отладки, тогда живые пользователи не видят никаких сообщений, хотя я все еще могу открыть окно отладки, чтобы узнать, что происходит.
(версия WebSpeed это будет просто записать вывод в файл ОС)
Гордон, звучит как очень аккуратная идея для регистрации по требованию, спасибо! –
Мне это нравится, потому что у вас может быть несколько слушателей, одна из которых может быть функцией регистрации – nwahmaet
DuStorm, спасибо, большое решение, однако это требует дополнительного включения файла. –