Автоформатирование кода

Администрирование - Сервисные утилиты

50
Как часто приходится работать в режиме аврала, когда на оформление кода не хватает времени?
И как лениво порой бывает, возвращаться к уже рабочему коду, что бы отформатировать его и привести в порядок.
Данная обработка позволяет автоматически форматировать текст кода, в соответствии с настройками пользователя.
Это позволит привести ваш код, как уже написанный так и будущий к единому оформлению.

Что это?

Это внешняя обработка, написанная на управляемых формах (то есть работает только под 8.2).

Как с этим работать?

Работа предполагается в режиме тонкого или толстого клиента. Копируется блок кода (можно кусочком, можно модуль целиком) и помещается в левую часть экрана, нажимается волшебная кнопка и вправой части - появляется отформатированный код.

После чего его можно скопипастить в текст модуля.

А что она может:

  1. Все строчки а-ля Переменная=4; Переменна2=5; будут оформленны в две строки;
  2. Все двойные пробелы "  " будут заменены на один " ";
  3. Все двойные пустые строчки будут заменены на одинарные;
  4. Все что есть в списке "Регулярных выражений" будет приведено к одному регистру;
  5. Будут настроены отступы, в соотвествии с установленными правилами;
  6. Количество пробелов перед и после арифметических действий станет одинаковым, в соответствии с настройками пользователя (+,-,*,/,=);
  7. Можно будет выровнять знаки равенства при  последовательной установке значений (если между ними нет пустых строк);
  8. Можно настроить перед какими выражениями и после каких выражений обязательно нужна пустая строка;
  9. Можно настроить между какими выражениями не должно быть пустой строки;
  10. Система автоматически способна определить необходимость комментария к процедуре или функции и вставить шаблон комментария. Пропишет передаваемые параметры.

А как быть с комментариями и переменными?

Все что есть в комментариях и в переменных останется неизменным!

Что за пользовательские настройки и где их брать?

Система имеет настройку "По умолчанию" Хранит в макетах и можно будет начать работать с обработкой сразу.

Так же можно сохранять настройки как в стандартном хранилище настроек (возможности платформы), так и выгружать и загружать настройк в/из файла с расширением *.xml


Причины купить

Когда необходимо покупать?

1. Когда открываете свой код через полгода и долго разбираетесь что тут и как.

2. Когда одну конфигурацию разарабатывает несколько человек, и просто "бесят" привычки некоторых. Например ставить пробел после "=" или не выравнивать знаки равенства :)

3. Когда готовим решение к тиражированию и нужно однообразное оформление кода.

4. Когда есть тяга к прекрасному и красивому (оформлению), но так лениво эту тягу воплощать в жизнь.

Достоинства

Приводит к одному виду программный код разных авторов.

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

Сравнение версий

Версия 1.0

50

Скачать файлы

Наименование Файл Версия Размер
ФорматированиеТекста.epf
.epf 66,91Kb
10.01.13
169
.epf 66,91Kb 169 Скачать

См. также

Комментарии
Сортировка: Древо
1. serega3333 19.12.12 17:26 Сейчас в теме
так автоформатирование как таковое не вкручено? хочется закрывать конфигуратор - открывать предприятие - нажимать кнопку в обработке - она парсит и обрабатывает...а тут копипаст туда сюда получается?
3. Sibars 161 19.12.12 19:22 Сейчас в теме
(1) serega3333,
Пока поддерживается только копипаст. В следующей версии предполагается выгрузка текстов модулей из режима предприятия и/или выбор уже выгруженных в файлы и их форматирование с сохранением в текстовые файлы.
Также предполагается запустить орфографическую проверку на наименование метаданных и переменных в модулях. Естественно с учетом правил именования объектов состоящих из нескольких слов.
2. pumbaE 600 19.12.12 18:41 Сейчас в теме
Вверху страницы баннер, там можно даже не закрывать конфигуратор.
Конечно не все там есть из перечисленного но можно и добавить.

p.s: в принципе, эту обработку думаю можно портировать для работы прямо из снегопата.
boggonzikov; +1 Ответить
5. Sibars 161 19.12.12 19:33 Сейчас в теме
(2) pumbaE,
Сам пользуюсь СНЕГОПАТОМ. Вещь с правильной пометкой "must have"!
Можно попробовать реализовать функционал и на скриптах, но стоит ли игра свеч, если учесть, что для всех фломастеры на вкус разные и надо учесть возможность настройки форматирования.
...
Если есть желание, могу предложить такой вариант:
Пишется скрипт для СНЕГОПАТА (сам пока не разбирался с написанием), который по хоткею, копирует выделенный фрагмент текста или весь модуль целиком и помещает его в текстовый файл.
Параллельно запущена моя обработка, которая определяет наличие этого файла, обрабатывает его и кладет новый файл с форматированным кодом рядом. Скрипту СНЕГОПАТА останется только получить текст из нового файла и заменить его на старый.
...
Автору такого скрипта с такой логикой или более удачной - в подарок эта обработка.
...
В будущем предполагается развитие данной обработки и наращивание функционала.
В целом это должно вылиться в небольшую конфигурацию, которая будет контролировать корректность написания кода по оформлению, орфографии, повторяемости процедур и функций, наличие циклов в циклах, запросов в циклах и тому подобное.
8. pumbaE 600 19.12.12 19:49 Сейчас в теме
(5) зачем же так сложно. Если есть обычная форма, то можно отделаться 5 строчками кода. Например для портирования обработки анализа цикломатической сложности кода, я добавил в модуль такие строки:
Процедура МакросАнализЦикломатическойСложностиТекущегоМодуля() Экспорт
	ТекстовоеОкно = Конфигуратор.snegopat.activeTextWindow();
	
	Если ТекстовоеОкно = Неопределено Тогда
		глВывестиСообщение("Не найдено текстовое окно!");
		Возврат;
	КонецЕсли;
	
	ИсходныйКод = ТекстовоеОкно.text;
	ТекстМодуля = ИсходныйКод;
	
	Форма = ПолучитьФорму("Форма");
	ВычислитьСложностьТекстаМодуля();
	Форма.ЭлементыФормы.Панель1.ТекущаяСтраница = Форма.ЭлементыФормы.Панель1.Страницы.СтраницаРезультаты;
	Форма.ОткрытьМодально();
	
КонецПроцедуры
Показать
и у меня теперь прям из конфигуратора работает данная обработка Пример

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

Посмотрите на скрипт spellchecker.js , там тоже есть проверка как word так и libreoffice.
10. Sibars 161 19.12.12 19:55 Сейчас в теме
(8) pumbaE,
Интересно. Спасибо.
Все форматирование происходит в модуле объекта. на формах реализованы только выбор настроек и вывод результата.
Еще бы придумать как настройки легко менять и будет вообще все в ажуре.
В принципе если заодно передать настройки в строке в формате XML можно для основного форматирования вообще обойтись без интерфейса.
А обработку использовать для создания настроек :)
Готовы взяться за сопряжение со СНЕГОПАТОМ?
12. pumbaE 600 19.12.12 20:07 Сейчас в теме
(10) готов. Пишите на мыло. Мой профиль Сосна Евгений e-mail в скриптах думаю найдете :)
13. Sibars 161 19.12.12 20:10 Сейчас в теме
(12) pumbaE,
Отлично! Завтра Вам напишу.
14. Модератор раздела artbear 20.12.12 11:10 Сейчас в теме
Обработка полезна, но денежек жалко.
Сопряжение со Снегопатом платной разработки?
(12) Жень, неужели будешь работать с платной? или сделаешь интеграцию со Снегопатом, а автор снимет платность? :)
15. Sibars 161 20.12.12 11:30 Сейчас в теме
(14) artbear,
Если обработка не полезна, то ей нет места ни в платном разделе, ни в бесплатном.
...
Посмотрим как это получится объединить со СНЕГОПАТОМ.
...
Возможно эта обработка через некоторое время станет продуктом лайт (то есть демкой, то бишь бесплатной).
А платной станет конфигурация, с большим функционалом.
Вопрос только сколько будет стоить эта конфигурация :)
Поэтому есть смысл купить обработку сейчас, что бы потом не платить больше.
Равно как и есть смысл подождать, когда обработка станет бесплатной.
Решение за вами!
4. pumbaE 600 19.12.12 19:27 Сейчас в теме
Какой движок будете использовать для проверки орфографии?
совет: не забудьте добавить правила для исключений префиксов и суффиксов при проверке.
6. Sibars 161 19.12.12 19:35 Сейчас в теме
(4) pumbaE,
Для орфографии будем использовать старый добрый Word.
C предложениями по вариантам замены, словарем исключений.
За совет спасибо. Префиксы и суффиксы постараемся учесть.
7. Sibars 161 19.12.12 19:38 Сейчас в теме
Вообще идея такого автоформатирования родилась тогда, когда в отделе разработчики стали высказывать друг другу свои соображения по поводу как правильно надо оформлять код и что чужой код читать невыносимо.
Идея этой обработки заключается в том, что не надо переучиваться под единый стандарт, если привести к общему знаменателю можно набором достаточно нехитрых алгоритмов.
9. w-divin 19.12.12 19:53 Сейчас в теме
прикольненько, но жаба давит...
а по поводу снегопата (юзверем которого также являюсь) там есть подобный механизм: format.js Функционал конечно послабее, но для халявного варианта хватает...
11. Sibars 161 19.12.12 20:00 Сейчас в теме
(9) w-divin,
Жаба она такая :)
А функционал будем наращивать! Планов - громадье)
И, надеюсь, задавим Вашу жабу объемом возможностей!
16. tormozit 4767 20.12.12 11:55 Сейчас в теме
17. _also 370 20.12.12 23:42 Сейчас в теме
мне кажется актуально только со снегопатом, а pumbaE пора Снегопат store открывать ))). Скрипты по 99 центов будут разлетаться только в путь))
Dimon93dimon; w-divin; Sibars; +3 Ответить
18. Sibars 161 09.01.13 18:20 Сейчас в теме
Решил выложить в общий доступ.
Работа по интегрированию в снегопат ведется.
Надеюсь у Евгения хватит терпения общаться с таким невеждой в JS как я и допилить функционал до рабочей версии.)
20. Модератор раздела artbear 10.01.13 12:12 Сейчас в теме
(18) Молодец, спасибо.
Ждем скрипт для снегопата.
Готов помогать в его тестировании и добавлении хотелок
21. Sibars 161 10.01.13 12:16 Сейчас в теме
(20) artbear, Возражений никаких нет, только приветствую).
А то из меня тестировщик не очень получается - то уеду, то подключить библиотеку не могу.
Если Евгений aka pumbaE не возражает, то милости просим)
19. dyak84 09.01.13 18:51 Сейчас в теме
Судя по скрин шотам вещь довольно интересная и нужная (автоматические ошибки бывает проскакивают что есть то есть). Появятся деньги обязательно скачаю. Автору спасибо
22. Модератор раздела artbear 10.01.13 12:27 Сейчас в теме
(22) Вряд ли Женя будет возражать, он меня знает :)
Женя, пиши в Гугл+ или гмейл напрямую.
23. WKBAPKA 193 10.01.13 13:36 Сейчас в теме
а я немного покритикую... даже работая в режиме аврала я код оформляю как следует... единственное, чего я не делаю, так это не документирую, чего иногда не хватает...
а тем кто пишет как попало, вообще головы поотрывал бы... когда читаешь их код, думаешь, что они курили... я не в плане алгоритма, а в плане оформления, что бы удобно было читать... но за работу плюс
24. Sibars 161 10.01.13 13:43 Сейчас в теме
(23) WKBAPKA, Это не критика, а повсеместная действительность )))
Именно из-за этого данная работа и была проделана.
1. Когда видишь такой код - спокойно его форматируешь, и читаешь уже более привычном формате.
2. Когда одну конфу пишут несколько человек, что бы не заставлять и не переучивать людей к единообразному оформлению. перед сдачей прогоняешь через обработку и получаешь единообразный код.
25. WKBAPKA 193 10.01.13 13:47 Сейчас в теме
(24)
если с этой точки зрения, когда пишут несколько человек, согласен, нужная вещь... вот интересно, а форматирует код под один шаблон, или можно под себя настраивать? а то не очень хорошо получается, пишут несколько человек, а код форматируется под одного человека ;)
26. Sibars 161 10.01.13 13:50 Сейчас в теме
(25) WKBAPKA, Можно хранить неограниченное количество настроек.
Мы у себя в отделе за основу приняли стандарты оформления изложенные на диске ИТС + оптимизировали под себя.
Форматироваться код должен не под одного человека, а с точки зрения правил принятых между разработчиками -участниками.
27. pumbaE 600 10.01.13 14:24 Сейчас в теме
Добавлю от себя, к моему сожалению от говнокода данная обработка не спасет, даже если нормально отформатирует. Эх...
35. AlexO 125 21.01.13 11:32 Сейчас в теме
(27) pumbaE,
к моему сожалению от говнокода данная обработка не спасет, даже если нормально отформатирует.

по-моему, такие обработки еще больше всего напихают в код, чего там и не нужно вовсе было, и безмерно его утяжелят.
36. pumbaE 600 21.01.13 12:06 Сейчас в теме
(35) AlexO, при должной настройке наоборот помогают исправить некоторые недочеты, которые на первый взгляд и не видны.

alt+shift+f - это хорошо, но как показано на рисунке, после обработки значительно лучше выглядит текст.
Прикрепленные файлы:
37. AlexO 125 21.01.13 14:32 Сейчас в теме
(36) pumbaE,
ну вот сразу - вот это "фНеОтбиратьПодразделение" - это что такое? Фукнция без скобок? :)
38. pumbaE 600 21.01.13 14:56 Сейчас в теме
(37) AlexO, прочтите еще раз (27) - данная обработка от говнокода не спасет, но вот от "ИНаче" , "ЕСли" и т.д. очень даже помогает. Я очень надеялся, что может быть достаточно такой код отформатировать нормально и станет чуть легче, но (27) .

Еще раз хочу акцентировать внимание, лучше уж отформаированный говнокод, чем неотформатированный.
Brawler; Sibars; +2 Ответить
28. pumbaE 600 10.01.13 14:27 Сейчас в теме
В обработке ошибка, там остались вызовы процедур для снегопата, чтобы работала и в предприятии необходимо закомментировать процедуры "МакросФорматированиеВыделенногоТекста" , "ФорматированиеТекстаПоНастройке", "МакросФорматированиеВыделенногоТекстаФорма".
29. Sibars 161 10.01.13 14:34 Сейчас в теме
(28) pumbaE, Евгений, ошибки нет, так как я выложил обработку не адаптированную под СНЕГОПАТ.
30. pumbaE 600 10.01.13 14:41 Сейчас в теме
Прошу прощения, значит меня ввели в заблуждение.
31. Sibars 161 10.01.13 17:16 Сейчас в теме
(30) pumbaE, Это я сам себя ввел в заблуждение. Теперь исправил. Обработку обновил.
32. mzelensky 53 16.01.13 08:02 Сейчас в теме
довольно забавная штука
33. ZhokhovM 21.01.13 11:19 Сейчас в теме
Доброго времени суток! Добавьте ещё изменения:

1. 0 (пробел) 0 (кол-во пробелов до и после)
Пример:
Возврат (пробелы) СтруктураДействий; -> Возврат СтруктураДействий;

2.Расшифровка представления
Пример:
// ДанныеПараметры - ТИПДАННЫХ - ОПИСАНИЕ -> // ДанныеПараметры - ТИПДАННЫХ - Данные параметры
39. Sibars 161 21.01.13 16:42 Сейчас в теме
(33) Maxim2012,
От двойных пробелов убирает.
Возврат СтруктураДействий; -> Возврат СтруктураДействий;
..
Описание добавляет, если его нет, если описание есть - то оставляет его нетронутым

// ДанныеПараметры - ТИПДАННЫХ -> // ДанныеПараметры - ТИПДАННЫХ - ОПИСАНИЕ
, но если
// ДанныеПараметры - ТИПДАННЫХ - Параметр вывода ТЗ -> // ДанныеПараметры - ТИПДАННЫХ - Параметр вывода ТЗ
34. AlexO 125 21.01.13 11:30 Сейчас в теме
(0) есть такая функция в 1С - Alt+Shift+F
Все остальное - это придумывание себе работы.
Формуляты-оформляты....
Лучше б код писали грамотней.
И коментарии ставили....
roofless; VovkaPutin; +2 Ответить
40. Vladal 22.01.13 18:08 Сейчас в теме
(0) Никак не избавлюсь от двойной пустой строки:
настроено пропускать строку после КонецЕсли/КонецЦикла
и пропускать строку перед КонецПроцедуры/КонецФункции

Оба правила накладываются и получаются некрасивые две пустые строки.
41. Sibars 161 24.01.13 06:16 Сейчас в теме
(40) vladal, Не могу повторить такой же ситуации у себя. Если возможно, пришлите на d.d.kruglov@gmail.com файл настроек и текст для форматирования, в котором есть появляются две пустых строки.
42. Maxis 25.01.13 10:26 Сейчас в теме
Интересная обработка! Но сам стараюсь изначально код оформлять нормально: так его и для себя в процессе работы читать проще)
43. GerHard 4 08.02.13 00:09 Сейчас в теме
Вот что, снегопатофаны... Обработочка полезная, автору плюс.
У меня практически всегда когда что-то пишу рядом открыт и пользовательский режим. Не проблема CTRL-C CTRL-V пару раз жамкнуть. А учитывая возможность настройки под себя - да вообще вполне самостоятельная вещь.
44. Sibars 161 08.02.13 05:42 Сейчас в теме
(43) GerHard спасибо).
По снегопату: Евгений (pumbaE) написал интеграцию к снегопату.
И соответственно, кто хочет - может использовать обработку как самостоятельную, кто со снегопатом - может загрузить ее функционал в него)
45. internetname 08.02.13 13:04 Сейчас в теме
Как-то привык уже сразу все форматировать.
46. Геннадьевич 10 22.03.13 19:17 Сейчас в теме
На мой взгляд - полезно, но не удобно.

Что за СНЕГОПАД? Дайте ссылку посмотреть.
47. pumbaE 600 22.03.13 19:23 Сейчас в теме
48. Геннадьевич 10 22.03.13 19:54 Сейчас в теме
(47) pumbaE, Спасибо, но вроде писали что эта разработка бесплатна.
49. pumbaE 600 22.03.13 19:57 Сейчас в теме
(48) Геннадьевич, эта разработка да - бесплатна, а инструмент платный.
50. ponaroshku 16.04.13 10:04 Сейчас в теме
51. dour-dead 215 11.06.13 08:49 Сейчас в теме
52. Vladal 416 01.04.14 19:04 Сейчас в теме
(0) Вот что обнаружил: в форматной строке с разными локалями делается перенос после первой точки с запятой. В результате появляется разрыв строкового параметра и синтаксическая ошибка.
Пример:
НСтр("ru = 'Накладная на перемещение';uk = 'Накладна на переміщення'", КодЯзыкаПечать)
разбивается на несколько строк и производится выравнивание знака равенства по самой длинной строке в блоке, добавляя 139 пробелов:
НСтр("ru = 'Накладная на перемещение';
	uk                                                                                                                                          = 'Накладна на переміщення'", КодЯзыкаПечать)
Я думаю, что в блоке поиска перевода строки по точке с запятой надо смотреть на парность кавычек.
53. break 29 08.05.14 12:03 Сейчас в теме
не хватает выравнивания по запятой
55. Vladal 416 18.09.14 23:44 Сейчас в теме
(53) break, поддерживаю.
Пробовал нарисовать такое, да где-то прокол вышел - они потом все равно переформатируются.

(0) Что еще заметил: обработка режет большие комментарии - закомментированные блоки или текстовые описания и пояснения.
54. dour-dead 215 23.05.14 13:53 Сейчас в теме
Не большой троллинг.
А так автору спасибо.
Прикрепленные файлы:
56. Sibars 161 19.09.14 07:05 Сейчас в теме
Рад, что обработка оказалась полезной. Прошу прощения за долгое молчание - загруз на работе.
Ошибки и недочеты безусловно есть, но как часто бывает, нет времени их устранить, тем более, что после написания обработки стал писать код сразу правильно :))
Если у кого есть желание дописать обработку - welcome! Могу опубликовать обновленную версию у себя, можете выложить ее в своем блоге - ссылку на обновление здесь размещу.
Оставьте свое сообщение