[clang-tools-extra] [clang-tidy] introduce a unused local non trival variable check (PR #76101)

Piotr Zegar via cfe-commits cfe-commits at lists.llvm.org
Sun Dec 24 00:52:55 PST 2023


================
@@ -0,0 +1,89 @@
+//===--- UnusedLocalNonTrivialVariableCheck.cpp - clang-tidy --------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#include "UnusedLocalNonTrivialVariableCheck.h"
+#include "../utils/Matchers.h"
+#include "../utils/OptionsUtils.h"
+#include "clang/AST/ASTContext.h"
+#include "clang/AST/ASTTypeTraits.h"
+#include "clang/AST/Type.h"
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/ASTMatchers/ASTMatchers.h"
+#include "clang/ASTMatchers/ASTMatchersMacros.h"
+
+using namespace clang::ast_matchers;
+using namespace clang::tidy::matchers;
+
+namespace clang::tidy::bugprone {
+
+namespace {
+static constexpr StringRef DefaultIncludeTypeRegex = "std::.*mutex;std::future";
----------------
PiotrZSL wrote:

I think that this std::string wont be detected because this is just typedef, and oryginal type is actually a std::base_string.

Consider adding those as default:
```
std::basic_istringstream
std::basic_stringstream
std::basic_string_view
std::basic_string
std::bitset
std::basic_regex
std::path
```

Those do not cary object ownership, when things like std::vector could.
I assume that anyway almost eveyrone will use configuration that catch all and use excludes. You could put into documentation that default check configuration is limited and recommended is to set allowed to .* to catch as much as possible.

https://github.com/llvm/llvm-project/pull/76101


More information about the cfe-commits mailing list