Clang-format breaks lint аннотации
Мы используем lint в нашей кодовой базе для работы в C/С++, я также пытаюсь начать интегрировать clang-format в свой рабочий процесс.
К сожалению, lint иногда требует аннотации, чтобы игнорировать определенную проверку, либо в формате:
/*lint -[annotation] */
или
//lint -[annotation]
В частности, если между открывающим токеном для комментария и "lint" есть пробел, он не распознает его как директиву аннотации. К сожалению, настройки по умолчанию, которые я использую для clang-format, видят это как ошибку и помогают вставить пробел.
Есть ли способ получить clang-format для распознавания комментариев, соответствующих этому шаблону, и оставить их в покое? Сейчас я использую 3,4, но при необходимости могу обновить.
Ответы
Ответ 1
Clang-format имеет параметр "CommentPragmas", который
Регулярное выражение, которое описывает комментарии со специальным значением, которые не должны быть разделены на строки или иным образом изменены.
Когда я помещаю следующую строку в файл .clang-формата, мои комментарии Lint остаются нетронутыми.
CommentPragmas: '^lint'
Другие комментарии, которые по-прежнему имеют "lint" в них, но не комментарии Lint, все равно отформатированы.
Ответ 2
Вы можете отключить clang-format для этого раздела вашего файла, используя:
int formatted_code;
// clang-format off
void unformatted_code ;
// clang-format on
void formatted_code_again;
См. раздел Отключение форматирования на фрагменте кода.