diff options
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/misc/ArgumentCommentCheck.cpp | 17 |
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 { |