Skip to content

stopa85milk/bslpretty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 

Repository files navigation

bslpretty

Инструмент для оформления кода 1С.

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

Ожидаемый эффект от внедрения:

  • Единообразный код вне зависимости от среды разработки: Текстовый редактор, Конфигуратор, EDT
  • Минимум "мусорных коммитов"
  • Киллер-фишка - интеграция с GIT. Оформляем только измененные строки кода, можно до помещения в репозиторий.

Инструмент представляет собой набор плагинов для парсера встроенного языка 1С и скрипт для запуска bslpretty.os.

Плагины:

  • Замена неканоничных ключевых слов - заменяет в коде неканоничное написание ключевых слов.
  • Оформитель отступов - расставляет отступы в начале строки. Удаляет незначащие символы в конце строки (так не задумано, но пусть пока будет так)
  • Оформитель пробелов - расставляет пробелы внутри строки, два и более пробела подряд заменяет на один.
  • Выравнивание аргументов - Не знаю как сказать в двух словах. Посмотрите на код до/после в описании плагина, все поймете.

Плагинами можно воспользоваться самостоятельно с помощью osparser или с помощью скрипта bslpretty.os.

Известные проблемы:

  • bslpretty.os комбайн и требует рефакторинга:
    • Настройки плагинов и настройки скрипта зашиты в функции Настройки(). Нужно вынести в конфигурационный файл или в аргументы командной строки.
    • Код "Ищет файлы для изменения", "Оформляет код", "Взаимодействует с пользователем" следует разделить. Как минимум можно будет реализовать моногопоточность.
  • Вероятно, в плагинах есть пробема вызванная разными форматами переноса строк. Символ переноса строки+символ возврата каретки или просто символ переноса строки.
  • Требуется собрать какой-нибудь пакет.
  • Проект osparser не развивается и не поддерживает некоторые конструкции вновых платформ. Например, ключевое слово Асинх.

Тем не менее он работает.

bslpretty.os

Оформляет исходные коды в каталоге или изменения в репозитории GIT. Скрипт не изменяет количество строк в исходнике. Это свойство позволяет применять оформление к только вашим изменениям.

Использование

  1. Склонируйте репозиторий bslpretty
  2. Откройте в текстовом редакторе файл src\bslpretty.os и посмотрите на функцию Настройки(). Убедитесь, что там правильные пути до утилиты Diff / WinMerge или отключите интерактивный режим.
  3. Перейдите в каталог с корнем репозитория. Например выполнив команду cd c:\git\bslpretty\
  4. Выполните команду oscript src\bslpretty.os
bslpretty.os git путь_к_репозиторию [commit]
  Оформляет измененные стройки по результату сравнения git diff [commit]
  Оформление применяется только к измененным строкам в файлах

bslpretty.os file путь_к_каталогу_с_файлами
  Оформляет все файлы *.bsl и *.os в каталоге

Плагины

Замена неканоничных ключевых слов

Плагин позаимствован из репозитория osparser.

Плагин приводит написание ключевых слов к каноническому виду. Код

ДЛЯ ц=1 по 100500 ЦиКл 
	Сообщить("!");
Конеццикла;

приводит к виду:

Для ц=1 По 100500 Цикл 
	Сообщить("!");
КонецЦикла;

Оформитель отступов

Плагин для оформления отступов в исходном коде. Также удаляет не значащие символы в конце строки.

Имеет три параметра

  • Отступ - строка - строка из которой состоит отступ. Тапример символ табуляции или 4 пробела
  • ПустыеСтрокиСОтступами - Булево - Если истина, то к пустым строкам будет добавлно необходимое количество отступов. В противном случае незначащие символы будут удалены
  • РекурсивныеДополнительныеОтступы - Булево - Если длинное выражение содержит в себе вложенные скобки или вызовы функции, занимает больше одной строки, то может быть удобным делать дополнительный отступ для каждого вложения

Следующий код (Отступ = , ПустыеСтроки = Ложь, РекурсивныеДополнительныеОтступы = Ложь; Но в примере это не важно)

Функция  Функция1(Парам1, 
Парам2)
	
	Результат = Парам1+Парам2*Парам3;
    Для ц=1 по 100500 Цикл 
	Если Результат>Парам3
		ИЛИ Результат < Парам2 Тогда
		
		Попытка 
		Возврат Парам1/Парам2;
		Исключение
			Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			"Число %1 нельзя делить на %2", Парам1, Парам2);
		КонецПопытки;
		
	КонецЕсли;
КонецЦикла;
	Возврат Результат;

КонецФункции

оформляет так

Функция Функция1(Парам1, Парам2)

Результат = Парам1+Парам2*Парам3;
Для ц=1 по 100500 Цикл
	Если Результат>Парам3
		ИЛИ Результат < Парам2 Тогда

		Попытка
			Возврат Парам1/Парам2;
		Исключение
			Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				"Число %1 нельзя делить на %2", Парам1, Парам2);
		КонецПопытки;

	КонецЕсли;
КонецЦикла;
Возврат Результат;

КонецФункции

Оформитель пробелов

Плагин расставляет пробелы между токенами языка и/или удаляет лишние пробелы. Параметров не имеет.

Код:

Функция  ДваПлюсДваУмножитьНаДва(Парам1,Парам2)Экспорт
	
	Возврат  Парам1+Парам2*Парам3;

КонецФункции

Оформляет так:

Функция ДваПлюсДваУмножитьНаДва(Парам1, Парам2) Экспорт
	
	Возврат Парам1 + Парам2*Парам3;

КонецФункции

Выравнивание аргументов

Просто посмотрите на пример кода до/после и вы поймете о чем речь.

Плагин имеет параметр

  • КоличествоСтрокПодряд - Число - Минимальное количество строк подряд попадающих под шаблон, после которого оформление будет применено.

Код

Стр = новый Структура();
Стр.Вставить("Результат1", п);
Стр.Вставить("Резу", п1);
Стр.Вставить("Рез", п2);

Заменяет на код

Стр = новый Структура();
Стр.Вставить("Результат1", п);
Стр.Вставить("Резу",       п1);
Стр.Вставить("Рез",        п2);

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published