clang-format ломает аннотации lint

Мы используем lint в нашей кодовой базе на работе для C/C++, я также пытаюсь начать интегрировать clang-format в свой рабочий процесс.

К сожалению, lint иногда требует аннотаций для игнорирования определенной проверки в любом из форматов:

/*lint -[annotation] */

or

//lint -[annotation]

В частности, если между открывающим токеном для комментария и 'lint' есть пробел, он не распознает его как директиву аннотации. К сожалению, настройки по умолчанию для clang-format, которые у меня есть, видят это как ошибку и помогают вставить пробел.

Есть ли способ заставить clang-format распознавать комментарии, соответствующие этому шаблону, и оставлять их в покое? Сейчас я использую 3.4, но при необходимости могу обновить.


person Joe Sunday    schedule 17.09.2014    source источник


Ответы (2)


Clang-формат имеет параметр «CommentPragmas», который

Регулярное выражение, описывающее комментарии со специальным значением, которые не следует разбивать на строки или изменять каким-либо иным образом.

Когда я помещаю следующую строку в свой файл формата .clang, мои комментарии Lint остаются нетронутыми.

CommentPragmas:  '^lint'

Другие комментарии, в которых все еще есть "ворс", но которые не являются комментариями ворса, по-прежнему форматируются.

person John    schedule 03.12.2014

Вы можете отключить clang-format для этого раздела вашего файла, используя:

int formatted_code;
// clang-format off
    void    unformatted_code  ;
// clang-format on
void formatted_code_again;

См. раздел Отключение форматирования фрагмента кода. .

person MikecheckDev    schedule 23.11.2014
comment
Есть идеи, когда эта функция стала доступна? Мне не удалось успешно выполнить сборку на Mac, поэтому я использую предварительно собранную версию clang-format version 3.5 (tags/checker/checker-276), и это, похоже, не имеет никакого влияния. - person user1338952; 18.12.2014