clang-tools
17.0.0git
|
The base class for all close-on-exec checks in Android module. More...
#include <CloexecCheck.h>
Public Member Functions | |
CloexecCheck (StringRef Name, ClangTidyContext *Context) | |
![]() | |
ClangTidyCheck (StringRef CheckName, ClangTidyContext *Context) | |
Initializes the check with CheckName and Context . More... | |
virtual bool | isLanguageVersionSupported (const LangOptions &LangOpts) const |
Override this to disable registering matchers and PP callbacks if an invalid language version is being used. More... | |
virtual void | registerPPCallbacks (const SourceManager &SM, Preprocessor *PP, Preprocessor *ModuleExpanderPP) |
Override this to register PPCallbacks in the preprocessor. More... | |
virtual void | registerMatchers (ast_matchers::MatchFinder *Finder) |
Override this to register AST matchers with Finder . More... | |
virtual void | check (const ast_matchers::MatchFinder::MatchResult &Result) |
ClangTidyChecks that register ASTMatchers should do the actual work in here. More... | |
DiagnosticBuilder | diag (SourceLocation Loc, StringRef Description, DiagnosticIDs::Level Level=DiagnosticIDs::Warning) |
Add a diagnostic with the check's name. More... | |
DiagnosticBuilder | diag (StringRef Description, DiagnosticIDs::Level Level=DiagnosticIDs::Warning) |
Add a diagnostic with the check's name. More... | |
DiagnosticBuilder | configurationDiag (StringRef Description, DiagnosticIDs::Level Level=DiagnosticIDs::Warning) const |
Adds a diagnostic to report errors in the check's configuration. More... | |
virtual void | storeOptions (ClangTidyOptions::OptionMap &Options) |
Should store all options supported by this check with their current values or default values for options that haven't been overridden. More... | |
Protected Member Functions | |
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. More... | |
void | replaceFunc (const ast_matchers::MatchFinder::MatchResult &Result, StringRef WarningMsg, StringRef FixMsg) |
Type2 is to replace the API to another function that has required the ability. More... | |
void | insertStringFlag (const ast_matchers::MatchFinder::MatchResult &Result, const char Mode, const int ArgPos) |
Type3 is also to add a flag to the corresponding argument, but this time, the flag is some string and each char represents a mode rather than a macro. More... | |
StringRef | getSpellingArg (const ast_matchers::MatchFinder::MatchResult &Result, int N) const |
Helper function to get the spelling of a particular argument. More... | |
![]() | |
StringRef | getCurrentMainFile () const |
Returns the main file name of the current translation unit. More... | |
const LangOptions & | getLangOpts () const |
Returns the language options from the context. More... | |
bool | areDiagsSelfContained () const |
Returns true when the check is run in a use case when only 1 fix will be applied at a time. More... | |
Static Protected Attributes | |
static const char * | FuncDeclBindingStr = "funcDecl" |
Binding name of the FuncDecl of a function call. More... | |
static const char * | FuncBindingStr ="func" |
Binding name of the function call expression. More... | |
Additional Inherited Members | |
![]() | |
OptionsView | Options |
The base class for all close-on-exec checks in Android module.
To be specific, there are some functions that need the close-on-exec flag to prevent the file descriptor leakage on fork+exec and this class provides utilities to identify and fix these C functions.
Definition at line 26 of file CloexecCheck.h.
|
inline |
Definition at line 28 of file CloexecCheck.h.
|
protected |
Helper function to get the spelling of a particular argument.
Definition at line 100 of file CloexecCheck.cpp.
|
protected |
Currently, we have three types of fixes.
Type1 is to insert the necessary macro flag in the flag argument. For example, 'O_CLOEXEC' is required in function 'open()', so
should be
[out] | Result | MatchResult from AST matcher. |
MacroFlag | The macro name of the flag. | |
ArgPos | The 0-based position of the flag argument. |
Definition at line 51 of file CloexecCheck.cpp.
|
protected |
Type3 is also to add a flag to the corresponding argument, but this time, the flag is some string and each char represents a mode rather than a macro.
For example, 'fopen' needs char 'e' in its mode argument string, so
should be
[out] | Result | MatchResult from AST matcher. |
Mode | The required mode char. | |
ArgPos | The 0-based position of the flag argument. |
Definition at line 79 of file CloexecCheck.cpp.
|
protected |
Definition at line 41 of file CloexecCheck.cpp.
|
protected |
Type2 is to replace the API to another function that has required the ability.
For example:
should be
[out] | Result | MatchResult from AST matcher. |
WarningMsg | The warning message. | |
FixMsg | The fix message. |
Definition at line 72 of file CloexecCheck.cpp.
|
staticprotected |
Binding name of the function call expression.
Definition at line 95 of file CloexecCheck.h.
|
staticprotected |
Binding name of the FuncDecl of a function call.
Definition at line 92 of file CloexecCheck.h.