summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2017-02-02 00:37:08 +0000
committerAlexander Kornienko <alexfh@google.com>2017-02-02 00:37:08 +0000
commit73c69a37140d88002ffd04e4eb1d149acf2f974d (patch)
tree054a172eda19f6df5278b8e5b1f0783d5f86c9ab /clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp
parentdc5e583687d01325c2a74c1a8da73ef892d7bfbe (diff)
downloadbcm5719-llvm-73c69a37140d88002ffd04e4eb1d149acf2f974d.tar.gz
bcm5719-llvm-73c69a37140d88002ffd04e4eb1d149acf2f974d.zip
[clang-tidy] misc-argument-comment support for gmock
llvm-svn: 293845
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp b/clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp
index 4c4e4a9ad32..1861afcc6c7 100644
--- a/clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp
@@ -179,6 +179,21 @@ void ArgumentCommentCheck::checkCallArgs(ASTContext *Ctx,
}
}
+static const FunctionDecl *resolveMocks(const MatchFinder::MatchResult &Result,
+ const FunctionDecl *Func) {
+ if (auto *Method = dyn_cast<CXXMethodDecl>(Func)) {
+ if (Method->getLocation().isMacroID() &&
+ Lexer::getImmediateMacroName(Method->getLocation(),
+ *Result.SourceManager,
+ Result.Context->getLangOpts())
+ .contains("MOCK_METHOD") &&
+ Method->size_overridden_methods() != 0) {
+ Func = *Method->begin_overridden_methods();
+ }
+ }
+ return Func;
+}
+
void ArgumentCommentCheck::check(const MatchFinder::MatchResult &Result) {
const auto *E = Result.Nodes.getNodeAs<Expr>("expr");
if (const auto *Call = dyn_cast<CallExpr>(E)) {
@@ -186,6 +201,8 @@ void ArgumentCommentCheck::check(const MatchFinder::MatchResult &Result) {
if (!Callee)
return;
+ Callee = resolveMocks(Result, Callee);
+
checkCallArgs(Result.Context, Callee, Call->getCallee()->getLocEnd(),
llvm::makeArrayRef(Call->getArgs(), Call->getNumArgs()));
} else {
OpenPOWER on IntegriCloud