diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2018-04-05 14:51:01 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2018-04-05 14:51:01 +0000 |
commit | be92ce14e13708c96eac3fe6da8c7019e24b3e2a (patch) | |
tree | 8b7a1375c939a4f1bddef3780a19c68eab421ed2 /clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp | |
parent | 92357a233679fb46957e8daeebfa44aaf9095686 (diff) | |
download | bcm5719-llvm-be92ce14e13708c96eac3fe6da8c7019e24b3e2a.tar.gz bcm5719-llvm-be92ce14e13708c96eac3fe6da8c7019e24b3e2a.zip |
[clang-tidy] Remove google-runtime-member-string-references
This is triggering on a pattern that's both too broad (const
std::string& members can be used safely) and too narrow (std::string is
not the only class with this problem). It has a very low true positive
rate, just remove it until we find a better solution for dangling string
references.
llvm-svn: 329292
Diffstat (limited to 'clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp b/clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp deleted file mode 100644 index f3a7bd99209..00000000000 --- a/clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//===--- StringReferenceMemberCheck.cpp - clang-tidy ------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "StringReferenceMemberCheck.h" -#include "clang/AST/ASTContext.h" -#include "clang/ASTMatchers/ASTMatchFinder.h" -#include "clang/ASTMatchers/ASTMatchers.h" - -using namespace clang::ast_matchers; - -namespace clang { -namespace tidy { -namespace google { -namespace runtime { - -void StringReferenceMemberCheck::registerMatchers( - ast_matchers::MatchFinder *Finder) { - // Only register the matchers for C++; the functionality currently does not - // provide any benefit to other languages, despite being benign. - if (!getLangOpts().CPlusPlus) - return; - - // Look for const references to std::string or ::string. - auto String = anyOf(namedDecl(hasName("::std::string")), - namedDecl(hasName("::string"))); - auto ConstString = qualType(isConstQualified(), hasDeclaration(String)); - - // Ignore members in template instantiations. - Finder->addMatcher( - fieldDecl(hasType(references(ConstString)), unless(isInstantiated())) - .bind("member"), - this); -} - -void StringReferenceMemberCheck::check(const MatchFinder::MatchResult &Result) { - const auto *Member = Result.Nodes.getNodeAs<FieldDecl>("member"); - diag(Member->getLocStart(), "const string& members are dangerous; it is much " - "better to use alternatives, such as pointers or " - "simple constants"); -} - -} // namespace runtime -} // namespace google -} // namespace tidy -} // namespace clang |