Как автоматически проанализировать исходный файл C/C++ и выяснить, какие параметры отступа больше подходят (например, произвести минимум изменений при фильтрации через indent)?

1 ответ1

0

Для этого нет распространенного инструмента, поэтому вам придется написать свой собственный. Я написал бы сценарий Bash, который вызывает indent с различными параметрами для создания большого количества альтернативных версий исходного исходного файла, а затем находит "лучший" вывод diff для каждой альтернативной версии, где "лучшим" может быть просто наименьшее число изменились строки.

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

Вы должны ожидать , что даже в лучших случаях, дифференциалы , что indent ПРЕДСТАВЛЯЕТ будет оказывать СВН / мерзавец винить бесполезно. Это, вероятно, заставит вас либо принять одну конкретную политику indent для всего кода и запустить новый репозиторий с автоматически отформатированным кодом, либо просто отказаться от всей идеи. Хранилище с несколькими различными политиками indent , вероятно, вызовет больше путаницы и ухудшения, чем пользы.

Если вы работаете над новым кодом, а не просто вносите небольшие изменения в существующий код, то лучше всего будет требовать от всех участников использования определенной политики indent или astyle кода перед отправкой кода. Вы также можете сделать это автоматически, используя хуки для фиксации SVN / GIT, но это может вызвать ошибки компиляции или даже ошибки в редких случаях. Если вы работаете в организации и не запускаете онлайн-проект, в котором вы являетесь привратником, вам понадобится менеджер с достаточными полномочиями для реализации политики, поскольку большинство программистов уже знают из многолетнего опыта, что их собственное форматирование является единственным правильный путь и все остальные форматирования недопустимы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .