Форум программистов, компьютерный форум, киберфорум
Бета-тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,845
Записей в блоге: 14

DuplicateFinder Preview 1.0

19.10.2020, 22:03. Показов 6602. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как известно, самая главная проблема "грязного" кода - необходимость обновлять множество дубликатов одного и того же фрагмента. И бОльшая часть улучшений в хороших языках посвящены борьбе с дублированием. Но чтобы этими улучшениями воспользоваться, нужно сначала это дублирование найти. А при запросе в Google "поиск дублирования в коде программа" я не нашел ничего внятного. Большинство таких "программ" либо являются плагинами для конкретной IDE, либо их нельзя нормально установить, либо они содержат кучу ненужного функционала и стоят десятки, а то и сотни долларов. Поэтому я решил создать свою программу для поиска дублирования в коде, изолированную от IDE, запускаемую двойным кликом по исполняемому файлу в WinRAR и производящую только поиск дублирования и ничего другого.
Важно: я не собираюсь зарабатывать на этой программе. Она бесплатна, и создана для облегчения жизни программистам.
Преимущества:
1. Работает
2. Основана на самом известном алгоритме поиска повторов - Лемпеле-Зиве.
3. Обнаруживает только повторы длиной не меньше 6 лексем.
4. Длина словаря составляет 5000 лексем.
5. Обнаруживает даже частично повторяющиеся фрагменты!
6. Игнорирует тривиальные фрагменты, такие как одно свойство из нескольких лексем или вызов метода плюс-минус число.
7. Показывает, на каких строках и в каких позициях находятся дубликаты.
8. Показывает начало повторяющегося фрагмента кода и конкретные отличия.
9. Показывает текущую позицию в окне кода.
10. Остутствие привязки к ключевым словам конкретного языка. Работает для всех Си-подобных языков, а возможно, и для каких-то других.
11. Можно изменять размер окна.
12. Вычисления выполняются в отдельном потоке.
13. Минимум пересоздания строк вследствие конкатенации, что приводит к приемлемому времени работы даже на длинных кодах.
14. На случай длинного кода припасены полосы загрузки. Но, как правило, дубликаты находятся моментально.
15. Программа не содержит ненужного функционала, весит немного и не требует сложной настройки.
Недостатки:
1. Иногда сообщает о дублировании, которое нельзя устранить.
2. Вследствие приемущества 10, может посчитать последовательность ключевых слов как дубликат.
3. Обнаруживает только первую тривиальную длину. Если она маленькая, а есть больше, может ошибочно посчитать дубликат нетривиальным и выдать сообщение, что это проблема.
4. В выводимых фрагментах кода не сохраняет его пробельную структуру.
5. Не обнаруживает повторяющиеся комментарии.
6. Может включить в дубликат точку с запятой и перевод строки.
7. Не разбирается в том, класс это, функция, или что-либо другое.
8. Не показывает длину выделения в окне кода, только его начало.
9. Вероятно, потребляет больше памяти, чем можно было бы.
Ну как, нормально?
Вложения
Тип файла: rar DuplicateFinder Preview 1.0.rar (72.6 Кб, 25 просмотров)
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2020, 22:03
Ответы с готовыми решениями:

preview - next
привет всем! Пытаюсь сделать ссылки предыдущ. и следущ. - никак не получается :wall: Беру из БД статьи и на странице отдельного...

Настройка preview
Гуру qt! Одно время очень хотел настроить комп для писания приложений на андроиде, даже скачал и установил нужные компоненты, но протом...

Taskbar Preview
Подскажите, пожалуйста, название компонента для работы с таскбаром?

60
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,845
Записей в блоге: 14
20.10.2020, 16:32  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
А кстати, Вы прогоняли исходники самой же программы через нее же?
Мой код очень грязный.
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
Просто я не могу понять - Ваша программа пытается действительно улучшить код и упростить рефакторинг, или это просто поиск разных текстовых фрагментов без контекста?
Программа не видит, в каком классе и в какой функции дубликаты. Если видите, что какое-то сообщение явно избыточное, просто игнорируйте его. Одно сообщение о дубликате на 50 строк - это очень хороший показатель.
1
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
20.10.2020, 17:30
Запустил прогу. Способ вывода результата, конечно, ужасен. Сделайте чтобы все визуально выделялось. Две панельки рядом, на которых отображаются и выделяются цветом похожие фрагменты - как сделано в различных графических инструментах для резолва конфликтов в системе контроля версий.
Ну и смысла в поиске дубликатов в одном файле немного. Надо, как вам уже сказали, чтобы можно было папку с проектом указать.
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Билд шестой. Увеличен минимальный процент общих лексем до 67%.
Этот параметр нужно в настройки вынести.
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Одно сообщение о дубликате на 50 строк - это очень хороший показатель.
Так себе показатель Т.е. если есть большой проект на десятки-сотни тысяч строк а то и больше, то придется продраться через дикое количество такого мусора, чтобы найти реальные дубликаты?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,845
Записей в блоге: 14
20.10.2020, 17:44  [ТС]
Мне вот интересно, почему хоть кто-то скачивает автономный архив, а обычный - никто? Неужели ни у кого нет .NET Core? И это при том, что размер автономного в сотни раз больше...
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
20.10.2020, 17:47
Etyuhibosecyu, во-первых, скорость интернета позволяет не думать о сотнях мегабайт. Во-вторых, .NET Core не .NET Framework, нужно не просто иметь у себя установленный рантайм, но нужно иметь конкретную версию. Приложение собранное для .NET Core 3.0 не особо хорошо заработает на .NET Core 3.1.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,845
Записей в блоге: 14
20.10.2020, 18:01  [ТС]
Билд седьмой. Дубликат может начинаться только со слова. Вызов с двумя параметрами теперь считается тривиальным. Не меньше 33% дубликата должны быть нетривиальными, чтобы вывести его.
Вложения
Тип файла: rar DuplicateFinder Preview 1.0.rar (73.3 Кб, 5 просмотров)
Тип файла: rar DuplicateFinder Preview 1.0 Autonomous.rar (23.24 Мб, 16 просмотров)
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
20.10.2020, 18:30
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Мне вот интересно, почему хоть кто-то скачивает автономный архив, а обычный - никто? Неужели ни у кого нет .NET Core? И это при том, что размер автономного в сотни раз больше...
Лично мне вот совершенно лень искать, где скачать .NET Core и как его установить. А интернет быстрый и безлимитный. Потому скачал сначала обычный архив, увидел сообщение об ошибке и забил.
0
Эксперт .NET
 Аватар для Rius
13832 / 7874 / 1705
Регистрация: 25.05.2015
Сообщений: 23,915
Записей в блоге: 14
20.10.2020, 18:46
Вы бы хоть подумали, что место на хостинге стоит денег. А ТС сейчас гигабайты заливать будет...
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,845
Записей в блоге: 14
20.10.2020, 22:00  [ТС]
Просто оставлю это здесь. Сегодня я сам пользовался своей программой. Это было первый раз в моей жизни.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
20.10.2020, 22:03
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Сегодня я сам пользовался своей программой. Это было первый раз в моей жизни.
Это показательно
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,845
Записей в блоге: 14
20.10.2020, 22:09  [ТС]
Цитата Сообщение от Катафалк Посмотреть сообщение
Это показательно
"Тестировать" и "пользоваться" - это не одно и то же. Я имею в виду использование для дела.
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
21.10.2020, 08:50
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Я имею в виду использование для дела.
Я вот этого понять не могу в упор. Умышленно делать копипасту, понимая, что это всё равно нужно будет переделывать по-нормальному, да ещё с применением тулзы, которая поможет вспомнить место, куда копипастил. Я понимаю архитектуру не очень чётко заранее продумывать и уточнять по ходу реализации с последующим рефакторингом, когда уже вся картина в коде сложилась и видна. Т.е. я имею в виду, что о том, что код не совсем правильный с точки зрения фен-шуя, может стать ясно, когда он дописан целиком. Но то, что у вас копипаста (что в большинстве случаев неправильно) вы видите сразу, когда эту копипасту творите. Зачем откладывать исправление этого на потом, когда можно и нужно сразу реализовать нормально не тратя время на прогон кода через тулзу)
0
0 / 0 / 0
Регистрация: 18.11.2021
Сообщений: 2
03.12.2021, 16:23
Etyuhibosecyu, Здравствуйте! Я студент 4-того курса, и думаю Ваша вспомогательная программа очень схожа с темой моей дипломной работы. Если Вас не затруднит, можете мне помочь с его написанием?
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
03.12.2021, 18:30
axmet007550, я думаю, прибегать к помощи ТСа в написании диплома вам стоит, только если у вас есть тайное желание завалить диплом
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
04.12.2021, 08:10
axmet007550, вы сами справитесь лучше, чем с помощью ТСа. Если вы умеете в Vissual Studio нажать F5, то вы уже знаете и умеете на пару порядков больше, чем ТС.
0
0 / 0 / 0
Регистрация: 18.11.2021
Сообщений: 2
05.12.2021, 13:27
Etyuhibosecyu, извините, не могли бы вы поделится с исходным кодом вашей программы ?
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,845
Записей в блоге: 14
05.12.2021, 17:15  [ТС]
axmet007550, он открыт всем желающим, никакой обфускации там нет.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.12.2021, 17:46
Цитата Сообщение от Usaga Посмотреть сообщение
Я понимаю архитектуру не очень чётко заранее продумывать и уточнять по ходу реализации с последующим рефакторингом, когда уже вся картина в коде сложилась и видна.
Вы так говорите, как будто бывает по-другому. Я б даже сказал "как будто принципиально возможно по-другому".
0
Эксперт .NET
 Аватар для Rius
13832 / 7874 / 1705
Регистрация: 25.05.2015
Сообщений: 23,915
Записей в блоге: 14
05.12.2021, 23:46
avgoor, возможно, но сложно.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.12.2021, 23:51
Цитата Сообщение от Rius Посмотреть сообщение
возможно
Не верю©
Ну, по крайней мере, не сильно крупнее хелловорлда.
0
Эксперт .NET
 Аватар для Rius
13832 / 7874 / 1705
Регистрация: 25.05.2015
Сообщений: 23,915
Записей в блоге: 14
06.12.2021, 08:16
avgoor, в универе на 5 курсе одногрупнику программу на асме mcs-51 писал на заказ, в его присутствии.
Сначала теоретически архитектуру продумал , потом код написал. За один заход, на бумаге. И всё заработало сразу.
То был калькулятор, со светодиодным сегментным дисплеем, кнопками, операциями +-*/
Так что это возможно при желании.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2021, 08:16

Preview Panel
Всем привет. Сталкивался ли кто нибудь с задачей отображения странички как почта в толстом клиенте, с возможностью превью панели? Рылся...

Preview Pane
Коллеги! Подскажите имеется ли возможность узнать что документ просматривается в Preview Pane, нужно скрыть кнопки или выдать коварное...

Вывод preview
Здравствуйте. Имеется 2 странички. index.php и classes.php есть задание: Для всех типов статей добавить новый атрибут: $preview. В...

Ошибка FastReport Preview
Всем привет! Вобщем хочу я вывести отчет в FastReport но выдает ошибку. В чем дело не знаю работал с ним последний раз года 3 назад. А...

Получить preview картинок
Как получить preview картинки как в приложении? нашел только как получить иконку pictureBox1.Image =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru