Clang-формат перерывы аннотации Lint

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

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

/*lint -[annotation] */

или же

//lint -[annotation]

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

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

10

Решение

В Clang-формате есть опция CommentPragmas, которая

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

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

CommentPragmas:  '^lint'

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

12

Другие решения

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

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

Увидеть Отключение форматирования на куске кода раздел.

14