Снегопат https://snegopat.ru/forum/ |
|
Говнокод, часть вторая https://snegopat.ru/forum/viewtopic.php?f=3&t=661 |
Страница 1 из 5 |
Автор: | alonehobo [ 11 окт 2014, 23:04 ] | |||
Заголовок сообщения: | Говнокод, часть вторая | |||
Всем привет. Продолжаем нашу борьбу с говнокодом. В прошлый раз мы закончили на том, что отформатировали наш модуль, и говнокод стал более-менее симпатичным, но запашок все равно остался. Сегодня мы поговорим о рефакторинге кода. Т.е. превращаем "говно"-код в "прекрасно/прэлестно/офигенно"-код. В этом нам будет помогать новый скрипт "Анализ кода". Работа над ним началась только сегодня, поэтому возможностей в нем пока чуть менее, чем ничего. Но работа ведется, идей море (лишь бы мозгов хватило реализовать), а значит все будет путем. Параллельно с этим скриптом буду дорабатывать и скрипт самого рефакторинга, для устранения тех проблем, которые будут выявляться Анализатором. Прошу, пробуйте, пишите ваши отзывы и идеи. На данный момент реализованы следующие проверки: 1. Размер метода (в строках, комментарии пока тоже считаются, потом сделаю настройку для их отключения) 2. Количество параметров в методе 3. Проверка строк кода длиннее определенного значения (по рекомендации 1С это 80 - 120 символов) 4. Проверка сложности условия (т.е. слишком много условных операторов И и ИЛИ) 5. Проверка "мертвых методов" 6. Проверка "мертвых меременных". 7. Проверка переменных на синтаксические ошибки (предложение от EvilBeaver) 8. Дублирование кода Анализ дублирования запускается отдельной кнопкой т.к. процесс долгий и выполняется внешней обработкой, при этом конфигуратор блокируется. На данный момент модуль из 5500 строк у меня проверяется 1 минуту. при минимальном блоке 4 строки и максимальном 20. Это можно регулировать в настройках. Если кликнуть по колонке с количеством повторов в дереве, появится список с номерами строк, в которых встречается этот код. Если выдается несколько одинаковых блоков со сдвигом в одну строку, увеличьте размер максимального блока в настройках. Планируется: 1. Старый код (тот, который закомментировали, но так и не удалили) 2. ну и наверняка еще что-нибудь, совершенству кода нет предела. P.S. Потестил на одной базе, оказывается столько там хлама было, жуть! Надеюсь и вам пригодится.
|
Автор: | EvilBeaver [ 12 окт 2014, 17:51 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
Переменной присваивается значение, но потом оно не используется. Часто указывает на опечатки: Код: Переменная = 3;
Если ЧтоТоТам Тогда Перемнная = 2; КонецЕсли; Возврат Переменная; // Всегда будет возвращать 3. |
Автор: | alonehobo [ 12 окт 2014, 17:55 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
Да, это один из следующий пунктов. Наверное напишу попозже, что я хочу сделать, а вы уже накидывайте сверху идеи. |
Автор: | gigabyte-artur [ 13 окт 2014, 11:18 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
Например, переменные, совпадающие с ключевыми словами/функциями. Такие как Сумма, Максимум, Значение и т.д. Впоследствии это может вызвать конфликт имен, а то и привести к непредсказуемым логическим ошибкам. |
Автор: | alonehobo [ 13 окт 2014, 19:36 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
update |
Автор: | gigabyte-artur [ 14 окт 2014, 10:00 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
Видимо, у меня настолько плохой код, что на некоторых модулях скрипт не выдерживает такого позора и падает в ужасе ![]() |
Автор: | FinalPatch [ 14 окт 2014, 11:40 ] | ||
Заголовок сообщения: | Re: Говнокод, часть вторая | ||
Если нет активного окна в конфигураторе
|
Автор: | gigabyte-artur [ 14 окт 2014, 13:00 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
Несколько примеров ложных срабатываний: 1. Некоторые экзотические обработчики (такие как ПриВыводеПериода у Поля календаря) - уверяет, что метод не используется. 2. Реквизиты формы по-видимому не отлавливаются. Практически все, насколько я понял. Говорит, что переменная не используется. Понятно, что лучше ложные срабатывания, чем упущенные ошибки... Но если есть возможность - ох можно попробовать пофиксить. Впрочем, не горит. Полезная штуковина, нашел неиспользуемый метод у себя ![]() |
Автор: | alonehobo [ 14 окт 2014, 15:02 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
Реквизиты и соответственно их обработчики не проверяются на управляемых формах. Сегодня буду пробовать новый способ их получения. На обычных должно проверяться. |
Автор: | gigabyte-artur [ 14 окт 2014, 15:53 ] |
Заголовок сообщения: | Re: Говнокод, часть вторая |
Хм... Хорошо. Однако, событие формы ПриОткрытии (и ещё несколько) обработано правильно - не было внесено в список. Тем лучше, спорить не буду. Кстати, если информация поможет: насколько я помню, скрипт "Список функций" умеет получать обработчики - можно посмотреть, как там сделано. |
Страница 1 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |