(лайфхак) - полу-автоматическое обновление Номеров Строк В ЛОГАХ (для поиска багов в коде)

 

Итак, в процессе программирования я столкнулся с потребностью "писать номера строк" в Логах ! чтобы читая Журнал Логов - ориентироваться не только на показатели Логов, а и видеть: НОМЕР СТРОКИ особо-важных Логов !!!

Сперва это делал тупо-глупо ВРУЧНУЮ, например:

Print("DEBUG START (строка 2828): ExecuteInformFromPanel()");


...но потом перебирать 3500+ строк кода и заменять все устаревшие номера строк на новые - согласитесь - ДОЛГО и НЕУДОБНО !!!

Тогда , будучи пользователем ЧатаGPT я его начал телебонить - КАК по маркерам в текстовой строки - сделать АВТО-ЗАМЕНУ старого номера строки на новый ?!

ЧатаGPT честно ответил что АВТОМАТИЧЕСКИ этого сделать НЕЛЬЗЯ !
Но в Notepad++ есть возможность написать скрипт, который будет искать "шаблон" (например: "строка 1234") и менять <старое число > на <новое число > (т.е. обновлять номера строк) !

...порекомендовал поставить плагин "NppExec" , написал с десяток скриптов ... но увы - всё оказалось сложно и неработало ... потом сменили кирилицу (строка) на латиницу (stroka) но и это НЕ ПОМОГЛО !!!

Потом Искусственный Импровизатор предложил: можно попробовать сделать РУЧНОЙ ПОИСК/ЗАМЕНА ... и дал ВОЛШЕБНУЮ комбинацию для поиска "шаблона" и замены старого номера строки на новый !!!

... в сухом остатке после теста - пишу годный Лайфхак на случай если кому-то вдруг тоже надо (!?!)

Шаг 1 - подготовка:

1)      Сперва весь наш код из MetaEditor4-5 загоняем в Notedad++ и генерим номера строк В НАЧАЛЕ строки:
Ctrl+A – выделить всё !
ALT+C – Текст для вставки (задаём "пробел" - это даст пробел между номером строки и строкой) –> Ок


Ctrl+A – выделить всё !
ALT+C – Число для вставки : Исходное число: 1, Увеличение на: 1 –> Ок
(после каждой операции – ПЕРЕВЫДЕЛЯТЬ ВЕСЬ текст для корреткной генерации).

 Шаг 2 - работа по обновлению строк ВНУТРИ вашего текста:

2)      … после номерации строк: через Поиск/Замену выполняем п.4 (ниже),

3)      После перенумерации номеров строк В ЛОГАХ – перед возвращением кода в MetaEditor -->> обязательно удаляем номера строк В НАЧАЛЕ строк (чтобы компилятор кода не ругался на пустые числа в начале строк):

  •  ставим курсор В НАЧАЛО всего Блокнота в строку 1 !
  •  потом Alt+Shift+стрелками – делаем ВЕРТИКАЛЬНОЕ выделение всех чисел В НАЧАЛЕ строки и удаляем их (чтобы компилятор кода не ругался на пустые числа в начале строк) !

(!)  Основной процесс по обновлению номеров строк в Логах:

4) Один проход “обновить  любые  стр.N” 

Ctrl+H (Поиск / Замена):

Поиск (+поставить галочку "Регуляр.выражен."):

^(\s*)(\d+)([^\r\n]*?\bстр\.)\d+([^\r\n]*)(\R?)

 

Заменить на:

\1\2\3\2\4\5

 

Это:

·         сохраняет ведущие пробелы \1,
·         сохраняет номер слева \2,
·         меняет число после str. на \2,
·         сохраняет конец строки \5 (чтобы не было склеек).

 ​результат:


Было:
616 Print(StringFormat("PPB (стр.720): возврат отложен до ПОСЛЕ скриншота (oldScalePtPerBar=%s oldPointsPerBar=%.5f)",
стало:
616 Print(StringFormat("PPB (стр. 616): возврат отложен до ПОСЛЕ скриншота (oldScalePtPerBar=%s oldPointsPerBar=%.5f)",




Теперь номерация Логов стала проще и быстрее !

Пользуйтесь, если кому-то надо ! )
 
Vitaliy Kostrubko:



Теперь номерация Логов стала проще и быстрее !

Пользуйтесь, если кому-то надо ! )


 

 
Vitaliy Kostrubko:
Пользуйтесь, если кому-то надо ! )
А зачем?

Чем __LINE__ не устраивает?
 
Sergey Gridnev #:
А зачем?

Чем __LINE__ не устраивает?
... знал-бы раньше - не писал ! ))
Благодарю! тоже полезно!


Итого имеем уже 2 способа нумеровать логи:
* простой,
* и сложный ))))