Lotus Analyzer V1.6
Описание:
Эта утилита предназначена для проверки LS кода в выбранной базе посредством DXML экспортера а так же служит неким измерителем качества написанного кода.
Всё что необходимо это открыть эту базу в лотус клиенте начиная с версии 6.5, выбрать необходимую базу и смотреть полученный анализ.
Утилита ничего не меняет в выбранной базе, а лишь считывает всю информацию из всех её элементов дизайна.
Используется чистый Lotus Script без использования каких либо dll
Очень рекомендую использовать данную утилиту как новичкам лотуса так и профи.
Так же она поможет сделать выбор среди систем написанных на лотусе, если важным аргументом является качество и оптимизация написанного кода.
Минимальные требования:
- Lotus Notes 6.5 и выше
- доступ в необходимую базу
Краткая предыстория:
Занимаясь более 10 лет лотусом я сталкивался с разными продуктами. Часто встречался с откровенным БРедом и очень сильно хотелось иметь какое-то средство позволяющее сразу показать и по возможности вычистить всё ненужное и лишнее, а так же понять насколько качественный код я пишу и предоставляю заказчикам.
В моей работе чаще всего пользовался Teamstudio Analyzer (утилита позволяющая найти код, который где-то используется) и scanEZ (утилита позволяющая просмотреть всё изнутри).
Но как-то ни разу не наталкивался на утилиту, которая бы могла проверить синтаксис кода LS на предмет варнингов (не используемая переменная/функция, не задекларировано и т.д.), так как это сделано в C++ и других языках высокого уровня.
Подойдя к моменту, когда очередная моя система ]]>
Ссылка скрыта от гостей
]]> обросла большим количеством "фич" решил проверить её на мусор, качество и оптимизацию, для этого и пришлось начать писать эту утилиту, которая достаточно шустро пробегается по всему коду и показывает на что следует обратить внимание.Ко всему прочему данная утилита предоставляется всем нашим заказчикам, чтобы они лично могли убедиться, что предоставляемая им система очень качественная и сравнить это со своими наработками в лотусе и при необходимости подправить и выйти на "планку качества".
Так как данная версия бесплатна, то я оставляю за собой право высылать полученный результат себе на почту - не бойтесь исходники ваши никуда не пересылаются, пересылается лишь результат оценки работы утилиты, дабы я знал правильно ли она работает и вел по ней статистику.
Если вдруг вам захочется сказать мне "спасибо" то лучше сделайте это в денежном эквиваленте, контакты мои у вас есть.
Сравнительный анализ по версиям на шаблоне "StdR6Mail" mail6.ntf (6.5.6 от 06.12.2006):
Версия Line codes Errors Correlation Time work
1.0 34285 532 1.5517% 99 sec
1.1 34331 793 2.3099% 102 sec
1.2 37258 891 2.3914% 117 sec
1.3 37258 943 2.5310% 119 sec
1.4 37258 1088 2.9202% 121 sec
1.5 59121 2502 4.2320% 113 sec
1.6 59094 2823 4.7771% 209 sec
Версия 1.6 - 05.01.2011
- исправлено ложное срабатывание на неиспользованную переменную
- исправлена некоректная обработка переменных содержащих в конце % $
- добавлены действия: DELETE LSOBJECT позволяет удалить откомпилированный Lotus Script, после данного действия необходимо сделать рекомпиляцию всей базы Tools\Recompile All LotusScript, данное действие необходимо периодически делать, так как если вы переписываете LS на @ то откомпилированный код не пропадает а продолжает висеть мёртвым грузом в элементах дизайна
- добавлены действия: DELETE $Fields позволяет удалять поле в форме/подформе в котором содержится список всех полей что есть и были в данной форме/подформе
- добавлен новый цвет для РТтекста: действия выделяются синим цветом
- добавлен итог сколько Kb освобождено при удалении LSOBJECT
- добавлен итог сколько Kb освобождено при удалении $Fields
- доработана проверка неиспользованных функций/процедур в библиотеках по всей базе данных
- добавлен алгоритм обработки констант по аналогии с переменными
- добавлена проверка на зря использованную библиотеку, когда её процедуры и переменные не использованы
Версия 1.5 - 06.08.2010
- исправлен подсчёт статистики когда анализ обрабатывается сервером
- исправлено ложное срабатывание на неиспользованную переменную Source в кнопках, хотспотах и т.д.
- исправлен алгоритм поиска переменных (byval)
- начат анализ @-Formula:
1) view select - если встречается два и более пробела/таба в view select и длинна view select больше 256 символов
2) hide when - если встречается два и более пробела/таба, если в формуле скрытия встречаелся @dblookup или @dbcolumn или длинна формулы скрытия больше 512 символов
Версия 1.4 - 25.12.2009
- исправлен подсчёт статистики когда анализ обрабатывается сервером
- добавлена проверка на правильное использование Doc items для UIDoc
- добавлена проверка переменных указанных как аргументы процедур/функций
- добавлена быстрая возможность отправить отработанный серверный анализ на повторное анализирование
- в описание добавлен сравнительный анализ по версиям
Версия 1.3 - 15.12.2009
- исправлен поиск неиспользованных переменных
- исправлен алгоритм поиска неиспользованные функций
- добавлена возможность анализировать сервером
- добавлена возможность сохранять результаты анализа сервера
- анализ сервера сохраняется в базе и отсылается указанным лицам
- серверный анализ сделан через РТтекст и более красив
- добавлена проверка на команду Stop в LS, в которой нет необходимости в нормальном коде
- добавлена проверка на правильное использование Doc items - например: (Doc.Var1 = "1") не правильно, правильно только (Doc.ReplaceItemValue("Var1", "1")) - аналогично с (a1 = Doc.Var1(0)) или ошибочное использование свойств например: (if Doc.IsResponCe then)
- добавлена возможность выбирать анализируемые элементы: All, library, agent, form, view
Версия 1.2 - 12.08.2009
- доработан поиск неиспользованных переменных
- теперь можно сканировать целую папку с базами, достаточно в пути указать название папки а не полный путь к базе
- теперь запись вида i=evaluate(), i=shell() не считается неиспользуемой переменной
- если елемент дизайна содержит весь код во внешнем файле (%include "*.lss") то этот елемент не анализируется
- исправлено когда хотспот наложнный четко на поле считался невидимым
- исправлен алгоритм поиска числовых переменных (var%)
- исправлено когда не искалось "option declare" в секции view при незаполненой секции global
- при ошибке "option declare" теперь указывается в каком элементе был найден lotus script (помогает когда возможно элемент был очищен не до конца)
- дополнена статистика
- defaulthotspot наложенный на картинку теперь воспринимается как отдельный объект
- исправлено когда игнорировался код если в элементе ничего не было заполнено в секции Global
- теперь анализируется Database Script
- добавлена проверка на отсутствие кода в обьекте
- добавлена проверка на наличие подряд двух и более пустых строк
- добавлена статистика по комментариям в коде
- изменен интерфейс на английский
Версия 1.1 - 24.07.2009
- исправлено когда файловый указатель считался не использованной переменной
- исправлено когда переменная не виделась в условии: цикла loop var, execute (dim var...)
- анализ используется ли библиотека где либо в базе
- добавлена обработка ошибки если елемент дизайна не удается обработать DXML экспортером
- теперь обьекты типа кнопок/полей/хотспот в формах/подформах/видах воспринимаются как отдельные обьекты и анализируются более корректно
- анализируются поля/кнопки/хотспоты содержащие в себе LS
- анализируются "невидимые" хотспоты - те у которых текст позднее был стерт и они не видны в дизайне, но присутствуют
- анализ используется ли локальная процедура/функция в данном элементе дизайна
- добавлена возможность не протоколировать выбранные ошибки
- добавлена возможность очистить протокол
- в утилиту добавлены скрытые "тестовые" ошибки, чтобы можно было протестировать всё на ней - Demo режим
- по умолчанию сервер/база указывают на утилиту
Версия 1.0 - 21.07.2009
- сканирование всех элементов дизайна прямо в памяти, создание соответствующих классов и процедур
- вырезание из анализа ремарков/комментариев (' %REM - %ENDREM)
- сбор в единое когда используется перенос строки (_)
- анализ элементов дизайна на наличие в них скрипта LS и если скрипт присутствует то проверка на обязательное наличие Option Declare, так как отсутствие этого часто ведет что переменная названа с ошибкой и функционал из-за этого начинает работать неверно или же используется неправильно задекларированный тип переменной
- анализ на поиск неиспользованных переменных/массивов внутри функций/процедур/классов
- анализ чтобы глобальная переменная не объявлялась в локальной процедуре с тем же именем
- анализ на поиск неиспользованных глобальных переменных/массивов внутри функций/процедур
Идеи и замечания высылайте на мои контакты
скачать можно тут - ]]>
Ссылка скрыта от гостей
]]> справа кнопка "[скачать]"тут же можем пообсуждать чего бы вам в этой утилите еще хотелось бы видеть...