Автоматический расчет параметров отступа

272
Vi.

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

0

1 ответ на вопрос

0
Jonathan Ben-Avraham

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

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

Вы должны ожидать, что даже в лучших случаях indentвводимые различия сделают svn / git blame бесполезным. Это, вероятно, заставит вас либо принять одну конкретную indentполитику для всего кода и запустить новый репозиторий с автоматически отформатированным кодом, либо просто отказаться от всей идеи. Хранилище с несколькими различными indentполитиками, вероятно, вызовет больше путаницы и ухудшения, чем пользы.

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

Предполагаемая последовательность: 1. Узнайте текущую политику стиля кода с помощью этого инструмента; 2. Внесите немного изменений в дрянной текстовый редактор, который (например) удаляет пробелы, отступы, окончания строк и удаляет завершающие \ n из файлов; 3. Отступ с предварительно обнаруженными параметрами, которые возвращают его в хороший совместимый исходный код. Т.е. передайте все заботы о низкоуровневом кодовом стиле (отступы, пробелы и т. Д.) От мозга к компьютеру. Vi. 11 лет назад 0
«Следует ожидать, что даже в самых лучших случаях вводимые отступы сделают svn / git обвинение бесполезным». -> Я ожидаю, что после использования `indent` с правильными параметрами изменения должны быть внесены от нуля до нескольких, если код уже имеет какой-то строгий стиль. Вопрос в том, как автоматически открыть этот стиль. Vi. 11 лет назад 0
@Vi .: Если код последовательно использует стиль, лучший способ обнаружить его - это ручная проверка. Попробуйте выполнить `` od -c some_file.c``, чтобы увидеть, используется ли табуляция и пробелы в последовательном порядке, или просто найдите табуляции или пробелы в vi, чтобы увидеть, есть ли что-то непротиворечивое. Я бы не стал пытаться автоматизировать это. Если оригинальный кодер следовал какому-либо известному стилю, такому как descibed в http://en.wikipedia.org/wiki/Indent_style, то это должно быть легко обнаружить с помощью глазного яблока и проверить с помощью astyle. Jonathan Ben-Avraham 11 лет назад 0

Похожие вопросы