Обнаруживает ли Clang vs Clang одинаковые предупреждения и ошибки? - PullRequest
0 голосов
/ 29 августа 2018

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

1 Ответ

0 голосов
/ 30 августа 2018

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

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

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

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

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

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

...