summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2015-07-20 01:06:44 +0000
committerDaniel Jasper <djasper@google.com>2015-07-20 01:06:44 +0000
commit9c6df889c4a6f9cbcfab41deebc8db798986562d (patch)
tree07f4e0113850a20e703ba3e8fc882e735f3adeb7 /clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
parent4440d6eae079c335ad372445b68b3d8b2cad6810 (diff)
downloadbcm5719-llvm-9c6df889c4a6f9cbcfab41deebc8db798986562d.tar.gz
bcm5719-llvm-9c6df889c4a6f9cbcfab41deebc8db798986562d.zip
Initial version of clang-tidy check to find and fix unused parameters.
Also see: llvm.org/PR24180. llvm-svn: 242654
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
new file mode 100644
index 00000000000..170a274d70f
--- /dev/null
+++ b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
@@ -0,0 +1,43 @@
+//===--- UnusedParametersCheck.cpp - clang-tidy----------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "UnusedParametersCheck.h"
+#include "clang/AST/ASTContext.h"
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+
+using namespace clang::ast_matchers;
+
+namespace clang {
+namespace tidy {
+
+void UnusedParametersCheck::registerMatchers(MatchFinder *Finder) {
+ Finder->addMatcher(
+ parmVarDecl(hasAncestor(functionDecl().bind("function"))).bind("x"),
+ this);
+}
+
+void UnusedParametersCheck::check(const MatchFinder::MatchResult &Result) {
+ const auto *Function = Result.Nodes.getNodeAs<FunctionDecl>("function");
+ if (!Function->doesThisDeclarationHaveABody())
+ return;
+ const auto *Param = Result.Nodes.getNodeAs<ParmVarDecl>("x");
+ if (Param->isUsed())
+ return;
+
+ auto MyDiag = diag(Param->getLocation(), "parameter '%0' is unused")
+ << Param->getName();
+
+ SourceRange RemovalRange(Param->getLocation(), Param->getLocEnd());
+ MyDiag << FixItHint::CreateReplacement(
+ RemovalRange, (Twine(" /*") + Param->getName() + "*/").str());
+}
+
+} // namespace tidy
+} // namespace clang
+
OpenPOWER on IntegriCloud