Снегопат

Обсуждение Снегопата
Текущее время: 24 апр 2024, 03:48

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Говнокод, часть вторая
СообщениеДобавлено: 11 окт 2014, 23:04 
Не в сети

Зарегистрирован: 14 май 2014, 12:17
Сообщения: 64
Всем привет. Продолжаем нашу борьбу с говнокодом.
В прошлый раз мы закончили на том, что отформатировали наш модуль, и говнокод стал более-менее симпатичным, но запашок все равно остался.
Сегодня мы поговорим о рефакторинге кода. Т.е. превращаем "говно"-код в "прекрасно/прэлестно/офигенно"-код.
В этом нам будет помогать новый скрипт "Анализ кода". Работа над ним началась только сегодня, поэтому возможностей в нем пока чуть менее, чем ничего.
Но работа ведется, идей море (лишь бы мозгов хватило реализовать), а значит все будет путем. Параллельно с этим скриптом буду дорабатывать и скрипт самого рефакторинга, для устранения тех проблем, которые будут выявляться Анализатором.

Прошу, пробуйте, пишите ваши отзывы и идеи.

На данный момент реализованы следующие проверки:
1. Размер метода (в строках, комментарии пока тоже считаются, потом сделаю настройку для их отключения)
2. Количество параметров в методе
3. Проверка строк кода длиннее определенного значения (по рекомендации 1С это 80 - 120 символов)
4. Проверка сложности условия (т.е. слишком много условных операторов И и ИЛИ)
5. Проверка "мертвых методов"
6. Проверка "мертвых меременных".
7. Проверка переменных на синтаксические ошибки (предложение от EvilBeaver)
8. Дублирование кода

Анализ дублирования запускается отдельной кнопкой т.к. процесс долгий и выполняется внешней обработкой, при этом конфигуратор блокируется.

На данный момент модуль из 5500 строк у меня проверяется 1 минуту. при минимальном блоке 4 строки и максимальном 20. Это можно регулировать в настройках.
Если кликнуть по колонке с количеством повторов в дереве, появится список с номерами строк, в которых встречается этот код.

Если выдается несколько одинаковых блоков со сдвигом в одну строку, увеличьте размер максимального блока в настройках.

Планируется:
1. Старый код (тот, который закомментировали, но так и не удалили)
2. ну и наверняка еще что-нибудь, совершенству кода нет предела.

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


Вложения:
CodeAnalysis.zip [46.92 КБ]
Скачиваний: 448
Image 1.png
Image 1.png [ 16.69 КБ | Просмотров: 14526 ]


Последний раз редактировалось alonehobo 20 окт 2014, 18:20, всего редактировалось 8 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 12 окт 2014, 17:51 
Не в сети

Зарегистрирован: 26 май 2014, 13:53
Сообщения: 83
Переменной присваивается значение, но потом оно не используется. Часто указывает на опечатки:
Код:
Переменная = 3;
Если ЧтоТоТам Тогда
   Перемнная = 2;
КонецЕсли;

Возврат Переменная; // Всегда будет возвращать 3.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 12 окт 2014, 17:55 
Не в сети

Зарегистрирован: 14 май 2014, 12:17
Сообщения: 64
Да, это один из следующий пунктов. Наверное напишу попозже, что я хочу сделать, а вы уже накидывайте сверху идеи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 13 окт 2014, 11:18 
Не в сети
Аватара пользователя

Зарегистрирован: 31 мар 2013, 17:30
Сообщения: 77
Откуда: Москва
Например, переменные, совпадающие с ключевыми словами/функциями. Такие как Сумма, Максимум, Значение и т.д. Впоследствии это может вызвать конфликт имен, а то и привести к непредсказуемым логическим ошибкам.

_________________
С уважением, Артур.
PS. http://blog.livegig.ru/ - мой уютный бложик. Добро пожаловать, коллеги!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 13 окт 2014, 19:36 
Не в сети

Зарегистрирован: 14 май 2014, 12:17
Сообщения: 64
update


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 14 окт 2014, 10:00 
Не в сети
Аватара пользователя

Зарегистрирован: 31 мар 2013, 17:30
Сообщения: 77
Откуда: Москва
Видимо, у меня настолько плохой код, что на некоторых модулях скрипт не выдерживает такого позора и падает в ужасе :D

Изображение

Изображение

Изображение

_________________
С уважением, Артур.
PS. http://blog.livegig.ru/ - мой уютный бложик. Добро пожаловать, коллеги!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 14 окт 2014, 11:40 
Не в сети

Зарегистрирован: 28 авг 2014, 19:55
Сообщения: 1
Если нет активного окна в конфигураторе


Вложения:
Image 1.png
Image 1.png [ 9.67 КБ | Просмотров: 14592 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 14 окт 2014, 13:00 
Не в сети
Аватара пользователя

Зарегистрирован: 31 мар 2013, 17:30
Сообщения: 77
Откуда: Москва
Несколько примеров ложных срабатываний:
1. Некоторые экзотические обработчики (такие как ПриВыводеПериода у Поля календаря) - уверяет, что метод не используется.
2. Реквизиты формы по-видимому не отлавливаются. Практически все, насколько я понял. Говорит, что переменная не используется.
Понятно, что лучше ложные срабатывания, чем упущенные ошибки... Но если есть возможность - ох можно попробовать пофиксить. Впрочем, не горит.
Полезная штуковина, нашел неиспользуемый метод у себя :)

_________________
С уважением, Артур.
PS. http://blog.livegig.ru/ - мой уютный бложик. Добро пожаловать, коллеги!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 14 окт 2014, 15:02 
Не в сети

Зарегистрирован: 14 май 2014, 12:17
Сообщения: 64
Реквизиты и соответственно их обработчики не проверяются на управляемых формах. Сегодня буду пробовать новый способ их получения. На обычных должно проверяться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говнокод, часть вторая
СообщениеДобавлено: 14 окт 2014, 15:53 
Не в сети
Аватара пользователя

Зарегистрирован: 31 мар 2013, 17:30
Сообщения: 77
Откуда: Москва
Хм... Хорошо. Однако, событие формы ПриОткрытии (и ещё несколько) обработано правильно - не было внесено в список. Тем лучше, спорить не буду.
Кстати, если информация поможет: насколько я помню, скрипт "Список функций" умеет получать обработчики - можно посмотреть, как там сделано.

_________________
С уважением, Артур.
PS. http://blog.livegig.ru/ - мой уютный бложик. Добро пожаловать, коллеги!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB