#c #clang #llvm #libc #clang-tidy
#c #лязг #llvm #libc #clang-tidy
Вопрос:
Я не понимаю llvmlibc-restrict-system-libc-headers
проверку в Clang Tidy (ссылка).
Я включаю библиотеки C в код C следующим образом:
#include <cstddef>
Что я должен изменить, чтобы исправить эту проверку Clang Tidy? Нужно ли это вообще исправлять?
Ответ №1:
Проверка подтверждает, что программист использует заголовки, предоставленные компилятором (libc).
Он используется в основном командой, которая разрабатывает libc llvm, чтобы избежать использования системных заголовков.
Из веб-интерфейса Phabricator проекта clang-tidy:
Это добавляет новый модуль для обеспечения соблюдения стандартов, специфичных для проекта llvm-libc. Это изменение также добавляет первую проверку, которая запрещает пользователю случайно включать системные заголовки libc, что может привести к незначительным ошибкам, которые было бы сложно обнаружить.
И далее
[…] Я думаю, что имя проверки должно быть обобщенным, поскольку его не нужно связывать с llvm-libc. У других проектов могут быть похожие потребности. Например, они не хотят случайно включать системный zlib.h -> они могут отправлять связанный zlib (скажем, в third_party/zlib/ ).
Спасибо за предложения, общая проверка звучит как отличная идея. Я вижу вариант использования для этого, поскольку он может быть использован кем угодно. Я потратил время на перенос проверки fuchsia и уточнил документацию, доступную пользователю.
Вы можете исправить это, указав заголовки intereset (здесь заголовки libc) явно во включаемом каталоге вашего проекта и соответствующим образом настроив пути связывания.
Чтобы отключить ее, вы можете указать нежелательную проверку в аргументах clang-tidy.
Пример CMake:
set(CMAKE_C_CLANG_TIDY
clang-tidy;
-header-filter=.*;
-checks=*,-llvmlibc-restrict-system-libc-headers;
-warnings-as-errors=*;)
Комментарии:
1. Я знаю, как отключить произвольные проверки в Clang Tidy. Я хочу знать, что означает конкретная проверка, о которой мой вопрос, и когда я мог бы ее использовать / при каких обстоятельствах имело бы смысл это исправить.
2. Извините за неправильное понимание вашего вопроса, я обновил свой ответ.