Наконец-то настроил дебагер. Оказалось, что анализ падает на процедурах без строк, типа
Код:
Процедура ОсновнаяПанельПриСменеСтраницы(а, б) Экспорт
КонецПроцедуры
Из-за того, что в определении размера метода стоит "+2" в строке
Lines = module.textWindow.GetLines(Method.StartLine + 2, Method.EndLine);, и на пустом методе первая строка оказывается после окончания метода
CodeAnalysis.prototype.getMethodSize Код:
CodeAnalysis.prototype.getMethodSize = function (Method, module){
//По умолчанию считаем все строки метода
var endline = Method.EndLine;
var startline = Method.StartLine;
//Удалим строки с текстом запроса
if(NoUseQuery || NoUseEmptyLines){
Lines = module.textWindow.GetLines(Method.StartLine + 2, Method.EndLine);
for(var i=Lines.length-1;i>=0;i--){
var line = Lines[i];
if(NoUseEmptyLines && line == ""){
Lines.splice(i,1);
continue
}
if(NoUseQuery && line.match(/^\s*[\|"]/)) // Строка начинается с | или "
Lines.splice(i,1);
}
startline = 0;
endline = Lines.length;
}
return endline - startline;
}
Знающие люди, подскажите:
1. "+2" это какой-то прикол с переводом начала нумерации, и он должен быть и для строки начала и для строки конца, или вообще не нужен?
2. Есть какой-нибудь способ пробрасывать сообщения на пользовательский уровень? а то
Код:
throw "_TextWindow: Индекс первой строки области не может быть больше индекса последней строки области!"
в служебные сообщения выводит только
Код:
Ошибка при вызове макроса
Ошибка при вызове макроса
Ошибка вызова макроса 'ВыбратьИВыполнитьМакрос' из аддина 'SnegopatMainScript'