Clang-Tidy `NOLINT` для нескольких строк? - PullRequest
1 голос
/ 14 марта 2019

Я работаю над проектом C ++, в котором есть несколько больших фрагментов кода, которые генерируются автоматически, и я не хочу, чтобы меня задерживали.Есть ли что-то похожее на комментарий //NOLINT, который можно применить к нескольким строкам?Например:

// BEGINNOLINT
bad-code;
// ENDNOLINT

Все, что я мог найти в Интернете, было предложение о том, что это должно быть реализовано .Есть ли способ избежать написания // NOLINT в конце каждой строки?

1 Ответ

1 голос
/ 20 марта 2019

К сожалению, прямого способа сделать это нет, clang-tidy поддерживает только //NOLINT и //NOLINTNEXTLINE.

Я не знаю, насколько у вас есть контроль над генерацией кода ... выможет сгенерировать его в одну строку, что может вам сильно помочь, так как c ++ не заботится о пробелах.

Грубое, но эффективное решение - использовать инструмент для работы с текстом, такой как sed:

$ sed -i -re '/^\/\/BEGIN_NOLINT/,/^\/\/END_NOLINT/{s/$/\/\/NOLINT/}' *.cpp

Это добавит //NOLINT в конце каждой строки между //BEGIN_NOLINT и //END_NOLINT комментариями (которые могут быть сгенерированы).

Вы также можете запустить clang-tidy с параметром

-line-filter='[{"name":"test.cpp","lines":[[1,10],[12,100]]}]'

В этом примере строка 11 будет пропущена.Однако это трудно поддерживать, так как вам нужно обновлять фильтр каждый раз, когда вы добавляете / удаляете строки в файле.Возможно, было бы неплохо сгенерировать код в отдельные файлы, если это возможно.

...