[clang-tools-extra] [clang-tidy] Add `llvm-formatv-string` (PR #195974)
Yanzuo Liu via cfe-commits
cfe-commits at lists.llvm.org
Mon May 11 00:51:18 PDT 2026
================
@@ -0,0 +1,42 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_FORMATVSTRINGCHECK_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_FORMATVSTRINGCHECK_H
+
+#include "../ClangTidyCheck.h"
+#include "llvm/ADT/StringMap.h"
+
+namespace clang::tidy::llvm_check {
+
+/// Validates llvm::formatv format strings against the provided arguments.
+///
+/// Checks that:
+/// - The number of format indices matches the number of arguments.
+/// - Every argument is used by the format string.
+/// - Automatic and explicit indices are not mixed.
+class FormatvStringCheck : public ClangTidyCheck {
+public:
----------------
zwuis wrote:
Sorry that I just realized this prevent matching nodes in template instantiations:
```cpp
template <typename... Ts>
void f(Ts... Args) {
formatv("{}", Args...);
}
void g() {
f(1, 2); // no warning
}
```
, but I don't know how rare it is. It's up to you to revert it.
https://github.com/llvm/llvm-project/pull/195974
More information about the cfe-commits
mailing list