10#include "clang/AST/ASTContext.h"
11#include "clang/ASTMatchers/ASTMatchFinder.h"
18 auto CharPointerType = hasType(pointerType(pointee(isAnyCharacter())));
20 functionDecl(isExternC(), returns(isInteger()),
21 hasAnyName(
"open",
"open64"),
22 hasParameter(0, CharPointerType),
23 hasParameter(1, hasType(isInteger()))));
25 functionDecl(isExternC(), returns(isInteger()),
27 hasParameter(0, hasType(isInteger())),
28 hasParameter(1, CharPointerType),
29 hasParameter(2, hasType(isInteger()))));
34 assert(FD->param_size() > 1);
35 int ArgPos = (FD->param_size() > 2) ? 2 : 1;
void registerMatchersImpl(ast_matchers::MatchFinder *Finder, ast_matchers::internal::Matcher< FunctionDecl > Function)
void insertMacroFlag(const ast_matchers::MatchFinder::MatchResult &Result, StringRef MacroFlag, int ArgPos)
Currently, we have three types of fixes.
static const char * FuncDeclBindingStr
Binding name of the FuncDecl of a function call.
void check(const ast_matchers::MatchFinder::MatchResult &Result) override
ClangTidyChecks that register ASTMatchers should do the actual work in here.
void registerMatchers(ast_matchers::MatchFinder *Finder) override
Override this to register AST matchers with Finder.