Обнаруживают ли Clang vs Clang tidy одни и те же предупреждения и ошибки?

Насколько мне известно, Clan-tidy может выполнять эти проверки https://clang.llvm.org/extra/clang-tidy/checks/list.html в дополнение к набору проверок по умолчанию (clang-analyser), и Clang также может обнаруживать ошибки и предупреждения https://clang.llvm.org/docs/DiagnosticsReference.html Могут ли они обнаруживать другой список ошибок или предупреждений?
Использует ли Clang-Tidy Clang в фоновом режиме? Есть ли какая-то связь между обоими?


person Rigó Zoltán    schedule 29.08.2018    source источник


Ответы (1)


Да, в них есть разница и общая черта. Позвольте мне начать с общего: оба они являются частью проекта LLVM, который, как известно, предоставляет библиотеки и исполняемые файлы, созданные поверх него.

В этом случае компилятор clang использует внешний интерфейс для создания AST и в это время создает предупреждения компилятора. Он расширен за счет оптимизаций и codegen.

Clang-tidy использует тот же интерфейс, а затем запускает на нем сопоставители AST для обнаружения проблем.

В общем, предупреждения компилятора дешевы для проверки и (почти) не содержат ложных срабатываний. У Clang-tidy есть дорогие чеки или те, которые имеют больший риск ложных срабатываний. Последний также содержит менее распространенные или стилистические проверки.

Некоторые проверки действительно похожи, например отсутствие переопределения, однако tidy отлавливает все случаи, когда предупреждение подавляется, когда переопределение не используется в файле.

В общем, мне нравится включать все предупреждения и отключать те, которые нужно исправить позже. Это будет проверено как побочный эффект при компиляции. Clang-tidy обычно запускается позже (precommit или CI).

person JVApen    schedule 29.08.2018