summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-tidy')
-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