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

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

Перейти к публикации

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

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

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

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

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

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

Еще раз хочу акцентировать внимание, лучше уж отформаированный говнокод, чем неотформатированный.
Brawler; Sibars; +2 Ответить
28. pumbaE 636 10.01.13 14:27 Сейчас в теме
В обработке ошибка, там остались вызовы процедур для снегопата, чтобы работала и в предприятии необходимо закомментировать процедуры "МакросФорматированиеВыделенногоТекста" , "ФорматированиеТекстаПоНастройке", "МакросФорматированиеВыделенногоТекстаФорма".
29. Sibars 311 10.01.13 14:34 Сейчас в теме
(28) pumbaE, Евгений, ошибки нет, так как я выложил обработку не адаптированную под СНЕГОПАТ.
30. pumbaE 636 10.01.13 14:41 Сейчас в теме
Прошу прощения, значит меня ввели в заблуждение.
31. Sibars 311 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 311 21.01.13 16:42 Сейчас в теме
(33) Maxim2012,
От двойных пробелов убирает.
Возврат СтруктураДействий; -> Возврат СтруктураДействий;
..
Описание добавляет, если его нет, если описание есть - то оставляет его нетронутым

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

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

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

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