C++ code formatter
От: c-smile Канада http://terrainformatica.com
Дата: 05.10.17 04:47
Оценка:
Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.

Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?
Re: C++ code formatter
От: MTD https://github.com/mtrempoltsev
Дата: 05.10.17 04:58
Оценка: 46 (1) :)
Здравствуйте, c-smile, Вы писали:

CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.


CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?


Vera++ is a programmable tool for verification, analysis and transformation of C++ source code.
The main usage scenarios that are foreseen for Vera++ are:
Ensure that the source code complies with the given coding standards and conventions.
Provide source code metrics and statistics.
Perform automated transformations of the source code, which can range from pretty-printing to diagnostics to fault injection and advanced testing.


https://bitbucket.org/verateam/vera/wiki/Introduction

Или ты про spaces vs tabs? Я за 4 пробела.
Отредактировано 05.10.2017 5:00 MTD . Предыдущая версия .
Re: C++ code formatter
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 05.10.17 05:18
Оценка: 46 (1) +2
Здравствуйте, c-smile, Вы писали:

c> Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?


Artistic Style
avalon/2.0.6
- Искренне ваш, Поросенок Пафнутий
Re[2]: C++ code formatter
От: Ops Россия  
Дата: 05.10.17 05:28
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Artistic Style


Я когда-то его смотрел, некоторых (интересных мне) вариантов форматирования не хватало. Вообще, тогда было ощущение, что все такого рода инструменты умеют форматировать только в стиле "Linux kernel", с небольшими вариациями.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: C++ code formatter
От: LaptevVV Россия  
Дата: 05.10.17 05:37
Оценка:
CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.
CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?
В CodeBlocks штук 15 стилевых форматтеров С++ кода.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: EditorConfig
От: Qbit86 Кипр
Дата: 05.10.17 06:17
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>...разными верованиями в значение \t.

CS>Кто что порекомендует?

http://editorconfig.org
Глаза у меня добрые, но рубашка — смирительная!
Re: C++ code formatter
От: SaZ  
Дата: 05.10.17 08:13
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.

CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?

Решарпер умеет достаточно неплохо. Единственное — ловил косяки с удалением неиспользуемых заголовочных файлов.
Re: C++ code formatter
От: Dair Россия  
Дата: 05.10.17 10:03
Оценка: 46 (1) +3
Здравствуйте, c-smile, Вы писали:

CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?


Re: C++ code formatter
От: Дрободан Фрилич СССР  
Дата: 05.10.17 15:22
Оценка:
c-smile:

CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.


В студии Replace in Files позволяет заменить табы на пробелы
Re[2]: C++ code formatter
От: cures Россия cures.narod.ru
Дата: 05.10.17 16:31
Оценка: -4
Здравствуйте, Дрободан Фрилич, Вы писали:

ДФ>В студии Replace in Files позволяет заменить табы на пробелы


Это если предпродажная подготовка, когда уже договорились на цену за байт сорсов. А по-человечески если — нужно наоборот. Причём не все пробелы, а только в началах строк, да и то иногда не всех. Я cindent использовал, но он пробелы на табы только в начале строки не умеет, им всё в пробелы переводил, а в табы потом — своей простенькой программкой. Теперь та программка уже не нужна, в стандартных дистрибутивах expand/unexpand появились, хоть и с корявыми ключами.
Не сработает, если программа писалась упоротыми товарищами, внутри строк тоже табами егозившими для красивости. Ну и вообще если внутри строк неземные красоты наведены, при переформатировании всё накроется. Но оно и правильно, мудрые люди говорят, что так делать нельзя.
Ещё cindent не умел по-людски строки переносить, поэтому им все в одну строку делал (ширина 256, кажется), а потом сам руками. В общем, нормальное оформление программы — тоже труд, и чисто автоматически вряд ли выйдет хорошо.
Re[2]: C++ code formatter
От: c-smile Канада http://terrainformatica.com
Дата: 05.10.17 23:04
Оценка: :))) :)
Здравствуйте, Дрободан Фрилич, Вы писали:

ДФ>В студии Replace in Files позволяет заменить табы на пробелы


Я конечно профан в некоторых вопросах, но уж не настолько.
Re[3]: C++ code formatter
От: Ops Россия  
Дата: 07.10.17 10:32
Оценка:
Здравствуйте, c-smile, Вы писали:

ДФ>>В студии Replace in Files позволяет заменить табы на пробелы


CS>Я конечно профан в некоторых вопросах, но уж не настолько.


Ты просто заблуждаешься насчет цели этого поста
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: C++ code formatter
От: alex_public  
Дата: 09.10.17 00:20
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.

CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?

Такого полно и многие известные решения уже перечислены в данной темке. Однако после появления clang format смысл во всяких сторонних дополнительных решениях полностью пропал. Ну это если мы конечно про C/C++ говорим... )
Re[2]: C++ code formatter
От: c-smile Канада http://terrainformatica.com
Дата: 12.10.17 03:17
Оценка:
Здравствуйте, alex_public, Вы писали:


_>Однако после появления clang format смысл во всяких сторонних дополнительных решениях полностью пропал.


Вот это:

fmt   =       type == WCHARS("")            ? simple_formatter 
            : type == WCHARS("text")        ? simple_formatter 
            : type == WCHARS("integer")     ? integer_formatter 
            : type == WCHARS("decimal")     ? decimal_formatter 
            : type == WCHARS("currency")    ? currency_formatter 
            : type == WCHARS("date")        ? date_formatter 
            : type == WCHARS("date-local")  ? date_local_formatter 
            : type == WCHARS("time")        ? time_formatter 
            : type == WCHARS("time-local")  ? time_local_formatter 
            : type == WCHARS("enum")        ? enum_formatter 
            : fmt = simple_formatter;


Превратилось в это вот

fmt =
            type == WCHARS("")
                ? simple_formatter
                : type == WCHARS("text")
                      ? simple_formatter
                      : type == WCHARS("integer")
                            ? integer_formatter
                            : type == WCHARS("decimal")
                                  ? decimal_formatter
                                  : type == WCHARS("currency")
                                        ? currency_formatter
                                        : type == WCHARS("date")
                                              ? date_formatter
                                              : type == WCHARS("date-local")
                                                    ? date_local_formatter
                                                    : type == WCHARS("time")
                                                          ? time_formatter
                                                          : type == WCHARS(
                                                                        "time-"
                                                                        "local")
                                                                ? time_local_formatter
                                                                : type == WCHARS(
                                                                              "enum")
                                                                      ? enum_formatter
                                                                      : fmt =
                                                                            simple_formatter;


Оно и хрен бы с ним, но вот зачем "time-" "local" разделились не ясно.

Хотя, нет, ясно ибо BreakStringLiterals: true было
Отредактировано 12.10.2017 3:24 c-smile . Предыдущая версия .
Re[3]: C++ code formatter
От: uzhas Ниоткуда  
Дата: 12.10.17 08:42
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Превратилось в это вот


use std::map, Luke!
Re[3]: C++ code formatter
От: Dair Россия  
Дата: 12.10.17 08:53
Оценка: 23 (1)
Здравствуйте, c-smile, Вы писали:

CS>Оно и хрен бы с ним, но вот зачем "time-" "local" разделились не ясно.

CS>Хотя, нет, ясно ибо BreakStringLiterals: true было

Для clang-format'а есть какие-то специальные комменты в коде, типа "отсюда не форматировать" и "досюда не форматировать".
Re[4]: C++ code formatter
От: c-smile Канада http://terrainformatica.com
Дата: 12.10.17 15:47
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, c-smile, Вы писали:


CS>>Превратилось в это вот


U>use std::map, Luke!


Сам-то понял что сказал?
Re[5]: C++ code formatter
От: uzhas Ниоткуда  
Дата: 12.10.17 16:11
Оценка: +1
Здравствуйте, c-smile, Вы писали:

U>>use std::map, Luke!


CS>Сам-то понял что сказал?


я предложил каскад if (по факту линейный поиск) можно заменить на поиск по мапе (тут всякие мапы можно заюзать)
вот так, например: https://ideone.com/oa9hv0
по факту это switch по строкам, который в плюсах не поддерживается =\
Re[6]: C++ code formatter
От: c-smile Канада http://terrainformatica.com
Дата: 13.10.17 00:25
Оценка: +1 -1
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, c-smile, Вы писали:


U>>>use std::map, Luke!


CS>>Сам-то понял что сказал?


U>я предложил каскад if (по факту линейный поиск) можно заменить на поиск по мапе (тут всякие мапы можно заюзать)

U>вот так, например: https://ideone.com/oa9hv0
U>по факту это switch по строкам, который в плюсах не поддерживается =\

Ты думаешь что условно 9 if:
if(s.length = A && strcmp(...) == 0) t = 1;
else if(s.length = B && strcmp(...) == 0) t = 2;
...

будет медленнее чем создание std::map и поиск по дереву?

Если "да" то ты ошибаешься я думаю.

А для больших списков строк есть gperf который a) статический, b) быстрее чем std::map и с) памяти не просит.
Отредактировано 13.10.2017 0:29 c-smile . Предыдущая версия . Еще …
Отредактировано 13.10.2017 0:25 c-smile . Предыдущая версия .
Re[7]: C++ code formatter
От: alex_public  
Дата: 13.10.17 01:24
Оценка: -2
Здравствуйте, c-smile, Вы писали:

U>>я предложил каскад if (по факту линейный поиск) можно заменить на поиск по мапе (тут всякие мапы можно заюзать)

U>>вот так, например: https://ideone.com/oa9hv0
U>>по факту это switch по строкам, который в плюсах не поддерживается =\
CS>Ты думаешь что условно 9 if:
CS>
CS>if(s.length = A && strcmp(...) == 0) t = 1;
CS>else if(s.length = B && strcmp(...) == 0) t = 2;
CS>...
CS>

CS>будет медленнее чем создание std::map и поиск по дереву?
CS>Если "да" то ты ошибаешься я думаю.

Так это зависит от того, как используется данный код. Если он вызывается не один раз, то очевидно что std::map будет эффективнее, т.к. инициализация дерева будет происходить только один раз. И это кстати не теория — я использую на практике именно такой подход (только со string_view, а не string в качестве ключа для map).

CS>А для больших списков строк есть gperf который a) статический, b) быстрее чем std::map и с) памяти не просит.


Хы, ну это уже для совсем тяжёлых случаев игрушка. )))
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.