Использование NOLINT для подавления clang-tidy. Как я могу подавить подавление?

Michael Mullin спросил: 13 июня 2018 в 11:51 в: c++

У меня есть код, подобный следующему

int do_thing( int arg1, int arg2, int arg3 ) { // NOLINT : don't care that arg2 and arg3 aren't used
  return arg1;
}

комментарий NOLINT обычно подавляет предупреждение о блаженстве. Однако, как я могу "повторно использовать" clang-tidy для этой строки без изменения моего кода?

1 ответ

pablo285 ответил: 19 июня 2018 в 06:15

AFAIK нет простого способа сделать это так, как вы хотите. Всякий раз, когда clang-tidy находит комментарий NOLINT, он просто пропускает эту строку, для предотвращения такого поведения не существует опции командной строки.

Поскольку NOLINT помещается в комментарии, вы не можете использовать препроцессор, поскольку комментарии удаляются до макрос.

Что вы можете сделать, это найти и заменить // NOLINT другим другим (желательно уникальным) текстом, например // DISABLE_NOLINT, запустить проверку clang-tidy, а затем замените его.

Если вы ДЕЙСТВИТЕЛЬНО не хотите касаться этого кода, вы можете создать свой собственный clang-tidy из источника, где вы изменяете static bool LineIsMarkedWithNOLINT() в ClangTidyDiagnosticConsumer.cpp всегда возвращает false. Или даже создайте новую опцию командной строки для переключения поведения, если это стоит усилий для вас.

Дополнительное видео по вопросу: Использование NOLINT для подавления clang-tidy. Как я могу подавить подавление?

Keep your code sane with clang-tidy - Daniel Jasper - Meeting C++ 2015 Lightning Talks

code::dive 2016 conference – Piotr Padlewski, Jakub Staroń – clang-tidy: write your own linting tool

Week 9