Показать сообщение отдельно
Старый 04.03.2021, 14:07   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от mazzy Посмотреть сообщение
merge? с объектами, которые имеют суффикс _MRC?! Оптимист
Имелись в виду классы
SysSourceNameWash
SysSourceUpdate

там стандартный код правил. Возможно у кого-то есть свои правки или версия отличается.

Цитата:
Сообщение от mazzy Посмотреть сообщение
я так понимаю, что ты пытаешься улучшить стандартный класс Class_SysSourceNameWash, чтобы он чего-то умное делал.
Не только. У нас на проекте есть много Legacy кода, который написан без соблюдения требований по регистру символов. Компилятору все равно - он регистронезависимый. Но выглядит некрасиво. Я попробовал применить этот стандартный инструмент, чтобы выправить ситуацию в старом коде, чтобы не резало глаз.

Попутно выяснилось что инструмент содержит немного багов:

1. Некорректно обрабатывает методы, в которых есть строки длиннее 250 символов, как следствие такие методы остаются необработанными, да еще и ругается на них каждый раз при запуске.

2. Ошибочно преобразует ссылки в коде на имена полей таблиц у которых в начале более 2 заглавных символов (например someTable.ISOcode испохабил - привел к нижнему региструsomeTable.isOcode, хотя не надо было трогать, т.е. не везде корректно учитывал область применения - преобразовывал первые символы к нижнему регистру там где не надо)

3. Финальное сохранение было сделано через методы xUtilElements:: которые обращались к тормозной вьюхе UtilElements (по 1 секунде на запрос) что при массовой обработке думало по полдня.

4. Кажется (точно уже не помню) некорректно обрабатывались методы на формах (лукапы, методы датасорсов итп) - (вроде бы они то ли вообще не обрабатывались то ли ссылки на них не обрабатывались)

5. Правильно обрабатывались стандартные зарезервированные слова, для которых в ветке \System Documentation\Reserved Words
почему-то были заданы большие буквы в camel стиле (ttsBegin ttsCommit ttsAbort forUpdate итп) - преобразовывались в нижний регистр, но сам редактор при вводе подставлял их неверно - как в AOT. Редактор исправить невозможно, пришлось править класс, чтобы было безобразно, но единообразно.

6. Из-за баги некорректно шла обработка методов содержащих макросы, так что исходный код всего метода оставался неизменным.

7. Не умеет корректно обрабатывать макросы. - Не меняет их содержимое.

и фич:

8. Обрабатывает все подряд, вместо конкретного слоя. (я не хотел править стандартный код, только то что на usr мы сами наваяли)

9. Запускать его надо 2 раза подряд (при 1-м запуске изменяет имена методов и переменных, при втором ссылки на методы)

пп 1-6 исправил.
п. 7 непонятно как исправлять, но это некритично.

п.8 исправил.
п.9 - просто надо учитывать и запускать обработку дважды.

В целом код обработки писал параноик, перед внесением изменений делается сравнение без учета регистра - отличается ли исходный код до изменений и после и если отличается, то изменения не вносятся. Так что запускать можно безопасно - сломать ничего не должен.

Цитата:
Сообщение от mazzy Посмотреть сообщение
...Но при этом по-прежнему используешь опасный strdel и безумный strpoke...
Это не я. Это в инструменте так написано. Я там чего-то своего почти не добавлял. - Исправил баги и все.


Цитата:
Сообщение от mazzy Посмотреть сообщение
судя по названию проекта, меняешь регистр букв в объектах.
а зачем? и почему только в методах? есть ли замена и в свойствах?
а главное, зачем?

а может ты форматтер кода делаешь?
форматтер кода не делаю.
Просто в Legacy коде была свистопляска.
методы то с большой то с маленькой буквы написаны. Имена переменных то с большой то с маленькой. Имена типов / классов / таблиц / полей таблиц в таком же стиле, т.е. отсутствии стиля. Где в лес где по дрова.

Ну, а этот инструмент это все исправляет в соответствие со стандартом. Имена самих узлов в АОТ кроме имен методов он не трогает. Только исходный код правит.

Из полезного - читаемость код улучшилась.

Последний раз редактировалось Logger; 04.03.2021 в 14:11.