Есть ли автоматический форматировщик исходного кода, который красиво оборачивает строки C / C ++? - PullRequest
7 голосов
/ 26 июня 2009

Я использую astyle для форматирования своего кода большую часть времени, и мне это нравится, но одно раздражение в том, что он не может указать хотя бы «подсказку» для максимальной длины строки. Если у вас есть строка кода вроде:

this->mButtonCancel->setLeftClickProc(boost::bind(&FileListDialog::cancelLeftClick, this));

Я бы хотел, чтобы средство форматирования исходного кода могло обернуть его даже разумно:

this->mButtonCancel->setLeftClickProc(
  boost::bind(&FileListDialog::cancelLeftClick, this));

... вероятно, я бы отформатировал эту строку кода. Для длинных списков аргументов я бы предпочел выровнять по открытым скобкам, но ясно, что в этой ситуации это не сработает. В любом случае, astyle не поддерживает работу с длинными строками, которые не содержат несколько операторов. Кто-нибудь знает инструмент, который делает?

Ответы [ 4 ]

10 голосов
/ 26 июня 2009

В GNU Indent поддерживается разрыв длинных строк.

http://www.gnu.org/software/indent/manual/indent.html#SEC12

5 голосов
/ 05 сентября 2013

Astyle 2.03 теперь поддерживает разделение линий на основе максимальной длины кода

http://astyle.sourceforge.net/astyle.html#_max-code-length

Я проверил это, и оно разбивает строку с max-code-length = 80, но на основе минимального возможного изменения. Я максимизирую количество кода в строке, и поэтому разрывы не всегда легко читаются (но это разрывает их)

5 голосов
/ 16 сентября 2011

Я нашел uncrustify инструмент командной строки для очень удобного использования. У него огромное количество вариантов, и поэтому он немного сложен, но после некоторой практики он неоценим. Домашняя страница здесь: http://uncrustify.sourceforge.net/

2 голосов
/ 26 июня 2009

Если вы воспользуетесь Google "Beautify C Code", вы найдете несколько полезных утилит. Я знаю, что в * nix есть двоичный файл с именем bc, который выполняет базовое форматирование. Это не очень настраиваемый, хотя.

...