КопиПастаМер v.2 (универсальный)


Обработка для поиска повторов строк — находит одинаковые строки в разных текстовых файлах.

Легко настраивается — Мин.порог одинаковых строк, выбор по типу / маске файла, Поиск по вложенным под-каталогам, выбор кодировки UTF-8 / ANSI …Удобное отражение кода 1С в привычной «раскраске» и открытие файлов в одно нажатие в любом редакторе, таких как NotePad++, Visual Studio Code…или стандартных Блокноте, или Word-е
Текст обработки — открыт для доработок.

Обработка для поиска повторов строк.

Обработка находит одинаковые строки в разных текстовых файлах.
Настраивается — Количество одинаковых строк,
любой тип/маска файла: txt, xml, bsl, os, md, js… все файлы любых типов *.*
Поиск по вложенным под-каталогам,  выбор кодировки, 
удобное открытие файлов в одно нажатие… в Вами выбранном редакторе WordPad, NotePad++, Visual Studio Code…

Но копировать текст целыми блоками в коде программы — нужно в разумных пределах. Иногда это нужно, для структуры или запроса, но надо знать и контролировать такие моменты.

Данная обработка призвана помочь оценить масштабы "одинаковости" кода и помочь в улучшении (рефакторинге) кода и его структурном изменении.


Обработка находит набор одинаковых строк (с порогом срабатывания по количеству одинаковых строк — не менее 10-50 для кода 1С).

Чтобы исключить "правильные" "лесенки" строк окончания условий вида:
            КонецЕсли;
       КонецЕсли;
    КонецЕсли;
КонецЕсли;

НО, если повторяются более 100 строк… такой "лесенки" быть не может?! Надо уже как то от такого избавляться! Выносить общие блоки в отдельные функции например. Менять как-то структуру объектов, заняться рефакторингом. В моём примере 2 документа имеют более 500 одинаковых строк

Поэтому порог срабатывания — надо подбирать под себя…

Возможности отбора:

  • по одной или всем вложенным папкам (дереву) выбранной папки
  • фильтр по типу(расширению)-txt, xml, bsl, os, md, js…
  • использование кодировки текста: Windows / UTF-8 / OEM… 

Файлы *.os  и *.bsl — откуда они и зачем?
Воодушевленный статьями про синхронизацию 1С-хранилища и GIT, такими как:

получаются файлы с типами  *.bsl  или вообще без расширения… которые "автоматически" получаются после разложение хранилища конфигурации в "нормальную структуру папок" с помощью gitsync, за что отдельное спасибо Артуру Аюханову (artbear),  (обязательно всем смотреть его статью //infostart.ru/public/811452/) 

Файлы с типом *.os — написаны на 1С… точнее на языке OneScript (описание от автора: Андрей Овсянкина (Evil Beaver)  — см. //infostart.ru/public/548028/)  и для них тоже захотелось использовать копипастамер.

Данная обработка является "наследницей" обработки 2014г //infostart.ru/public/294285 (автор в курсе) с существенными улучшениями, доработкой и переводом на управляемые формы для 8.3 Пришлось переделывать передачу таблиц значений клиент-сервер (статья про это //infostart.ru/public/240022/)

Код открыт, дорабатывайте кому как нравится.

 

обработка открываются просто через Файл — Открыть…

1) (ОФ) под Обычные формы — тестировал на версии 1С 8.2.19 + доступен отбор по маске файлов
2) (УФ) под Управляемые формы — тестировал на 1С 8.3.10 (тонкий клиент,  такси)

+++ изменения от 15.11.2024 +++
улучшен файл для Обычных форм (совместима с 1С 8.2):

* отбор по любой маске файла… а не только типу файла,
* для анализа — в таблице сразу отражаются файл1, файл2, и номера строк повтора в файлах.
* Улучшен результат показывает число повторов, среднюю длину повторов, % повторяющихся строк.

13 Comments

  1. ifal

    Вот на инфостарте бы внедрить систему ревизии кода, а то копируют обработки, добавляют одну строку и перевыкладывают.

    Reply
  2. Serg O.

    (1) если вы камень в мой огород… то не по адресу…

    Переделка старой 14го года обработка под УФ на 8.3 — не просто копирование… а переделка…

    например, 8.3 не умеет Таблицу значений с сервера на клиент передавать?! и много так сервер-клиент обмен…

    по 2 функции надо

    + новые функции, которых не было в оригинале… поиск во всем дереве подпапок, сразу выбрать тип и кодировку, сразу открыть… мне так удобнее, переделывал для себя — выложил, кому может надо под 8.3 или по любым файлам (текстовым)

    ссылка на оригинал (и уведомление автора оригинала) — как раз для «справедливости»…

    Reply
  3. ifal

    (2) Я вам плюс поставил к статье. У вас же все описано, откуда взяли, кто, что делал, все ссылки приведены. Все сделано правильно. Я имел ввиду в комментарии свой опыт на инфостарте.

    Reply
  4. nixel

    (2) вместо передачи тз с клиента на сервер разве нельзя было использовать реквизит формы/обработки?

    З.ы. Код не смотрел, извиняюсь.

    Reply
  5. Scorpion4eg

    Теперь на оскрипт бы тоже самое…

    Reply
  6. Serg O.

    (5) в принципе… время будет… может сделаю, oscript позволяет с ТаблицамиЗначений работать… тут на выходе 2 таких… которые можно и в 1 слить, но не вполне понятно что с этой инфой дальше делать?

    + средняя оценка повторяемости сильно зависит от мин.числа строк… на моих мини-текстах oscript это 10 строк, на реальной базе 1С УТ — файлы bsl — куски кода более 200 строк повторяются… движения документов повторы от 10 до 100 строк…

    для меня не очень понятно как в скрипте это потом анализировать… это «видеть» человек должен… а просто цифра — 10 повторений со средней длиной 123,23 строки… не понятно плохо это или не очень

    Reply
  7. Scorpion4eg

    (6) подключить в cicd для расчета дублей кода. А отчетов для вывода полно

    Reply
  8. azhilichev

    (1)Нужна не ревизия кода, а связка авторов Infostart с Github.

    Reply
  9. ifal

    (8) Но тогда как качать за sm?

    Reply
  10. artbear

    (6) наш плагин SonarQube 1C (BSL) Plugin в составе сервера SonarQube красиво показывает дубликаты кода

    И есть возможности настройки

    https://silverbulleters.org/sonarqube

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

    Reply
  11. artbear

    (0) Спасибо за специальное упоминание меня и моей статьи по выступлению на ИС 🙂

    Reply
  12. WizaXxX

    (10) Ваш плагин и правда отлично справляется со своей задачей, но к сожалению стоит сильно больше одного стартмани 🙂

    Reply
  13. azhilichev

    (9) Хороший вопрос. Но, думаю, это тоже решаемо.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *