Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.
Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?
Здравствуйте, 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.
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Artistic Style
Я когда-то его смотрел, некоторых (интересных мне) вариантов форматирования не хватало. Вообще, тогда было ощущение, что все такого рода инструменты умеют форматировать только в стиле "Linux kernel", с небольшими вариациями.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t. CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?
В CodeBlocks штук 15 стилевых форматтеров С++ кода.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, c-smile, Вы писали:
CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t. CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?
Решарпер умеет достаточно неплохо. Единственное — ловил косяки с удалением неиспользуемых заголовочных файлов.
c-smile:
CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t.
В студии Replace in Files позволяет заменить табы на пробелы
Здравствуйте, Дрободан Фрилич, Вы писали:
ДФ>В студии Replace in Files позволяет заменить табы на пробелы
Это если предпродажная подготовка, когда уже договорились на цену за байт сорсов. А по-человечески если — нужно наоборот. Причём не все пробелы, а только в началах строк, да и то иногда не всех. Я cindent использовал, но он пробелы на табы только в начале строки не умеет, им всё в пробелы переводил, а в табы потом — своей простенькой программкой. Теперь та программка уже не нужна, в стандартных дистрибутивах expand/unexpand появились, хоть и с корявыми ключами.
Не сработает, если программа писалась упоротыми товарищами, внутри строк тоже табами егозившими для красивости. Ну и вообще если внутри строк неземные красоты наведены, при переформатировании всё накроется. Но оно и правильно, мудрые люди говорят, что так делать нельзя.
Ещё cindent не умел по-людски строки переносить, поэтому им все в одну строку делал (ширина 256, кажется), а потом сам руками. В общем, нормальное оформление программы — тоже труд, и чисто автоматически вряд ли выйдет хорошо.
Здравствуйте, c-smile, Вы писали:
ДФ>>В студии Replace in Files позволяет заменить табы на пробелы
CS>Я конечно профан в некоторых вопросах, но уж не настолько.
Ты просто заблуждаешься насчет цели этого поста
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, c-smile, Вы писали:
CS>Решил навести красоту в исходниках и привести их к единому формату. Оные редактировались на разных платформах, разных редакторах и соответственно разными верованиями в значение \t. CS>Кто что порекомендует? Или я таки еще рано беспокоюсь и такого нет в природе?
Такого полно и многие известные решения уже перечислены в данной темке. Однако после появления clang format смысл во всяких сторонних дополнительных решениях полностью пропал. Ну это если мы конечно про C/C++ говорим... )
Здравствуйте, c-smile, Вы писали:
CS>Оно и хрен бы с ним, но вот зачем "time-" "local" разделились не ясно. CS>Хотя, нет, ясно ибо BreakStringLiterals: true было
Для clang-format'а есть какие-то специальные комменты в коде, типа "отсюда не форматировать" и "досюда не форматировать".
Здравствуйте, c-smile, Вы писали:
U>>use std::map, Luke!
CS>Сам-то понял что сказал?
я предложил каскад if (по факту линейный поиск) можно заменить на поиск по мапе (тут всякие мапы можно заюзать)
вот так, например: https://ideone.com/oa9hv0
по факту это switch по строкам, который в плюсах не поддерживается =\
Здравствуйте, 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 и с) памяти не просит.
Здравствуйте, 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 и с) памяти не просит.
Хы, ну это уже для совсем тяжёлых случаев игрушка. )))