clang-tools 20.0.0git
|
Checks for various ways that the const CharT*
constructor of std::basic_string_view
can be passed a null argument and replaces them with the default constructor in most cases.
More...
#include <StringviewNullptrCheck.h>
Public Member Functions | |
StringviewNullptrCheck (StringRef Name, ClangTidyContext *Context) | |
bool | isLanguageVersionSupported (const LangOptions &LangOpts) const override |
Override this to disable registering matchers and PP callbacks if an invalid language version is being used. | |
Public Member Functions inherited from clang::tidy::utils::TransformerClangTidyCheck | |
TransformerClangTidyCheck (StringRef Name, ClangTidyContext *Context) | |
TransformerClangTidyCheck (std::function< std::optional< transformer::RewriteRuleWith< std::string > >(const LangOptions &, const OptionsView &)> MakeRule, StringRef Name, ClangTidyContext *Context) | |
DEPRECATED: prefer the two argument constructor in conjunction with setRule . | |
TransformerClangTidyCheck (transformer::RewriteRuleWith< std::string > R, StringRef Name, ClangTidyContext *Context) | |
Convenience overload of the constructor when the rule doesn't have any dependencies. | |
void | registerPPCallbacks (const SourceManager &SM, Preprocessor *PP, Preprocessor *ModuleExpanderPP) override |
Override this to register PPCallbacks in the preprocessor. | |
void | registerMatchers (ast_matchers::MatchFinder *Finder) final |
Override this to register AST matchers with Finder . | |
void | check (const ast_matchers::MatchFinder::MatchResult &Result) final |
ClangTidyChecks that register ASTMatchers should do the actual work in here. | |
void | storeOptions (ClangTidyOptions::OptionMap &Opts) override |
Derived classes that override this function should call this method from the overridden method. | |
void | setRule (transformer::RewriteRuleWith< std::string > R) |
Set the rule that this check implements. | |
Public Member Functions inherited from clang::tidy::ClangTidyCheck | |
ClangTidyCheck (StringRef CheckName, ClangTidyContext *Context) | |
Initializes the check with CheckName and Context . | |
virtual bool | isLanguageVersionSupported (const LangOptions &LangOpts) const |
Override this to disable registering matchers and PP callbacks if an invalid language version is being used. | |
virtual void | registerPPCallbacks (const SourceManager &SM, Preprocessor *PP, Preprocessor *ModuleExpanderPP) |
Override this to register PPCallbacks in the preprocessor. | |
virtual void | registerMatchers (ast_matchers::MatchFinder *Finder) |
Override this to register AST matchers with Finder . | |
virtual void | check (const ast_matchers::MatchFinder::MatchResult &Result) |
ClangTidyChecks that register ASTMatchers should do the actual work in here. | |
DiagnosticBuilder | diag (SourceLocation Loc, StringRef Description, DiagnosticIDs::Level Level=DiagnosticIDs::Warning) |
Add a diagnostic with the check's name. | |
DiagnosticBuilder | diag (StringRef Description, DiagnosticIDs::Level Level=DiagnosticIDs::Warning) |
Add a diagnostic with the check's name. | |
DiagnosticBuilder | configurationDiag (StringRef Description, DiagnosticIDs::Level Level=DiagnosticIDs::Warning) const |
Adds a diagnostic to report errors in the check's configuration. | |
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. | |
Additional Inherited Members | |
Protected Member Functions inherited from clang::tidy::ClangTidyCheck | |
StringRef | getCurrentMainFile () const |
Returns the main file name of the current translation unit. | |
const LangOptions & | getLangOpts () const |
Returns the language options from the context. | |
bool | areDiagsSelfContained () const |
Returns true when the check is run in a use case when only 1 fix will be applied at a time. | |
StringRef | getID () const override |
Protected Attributes inherited from clang::tidy::ClangTidyCheck | |
OptionsView | Options |
Checks for various ways that the const CharT*
constructor of std::basic_string_view
can be passed a null argument and replaces them with the default constructor in most cases.
For the comparison operators, braced initializer list does not compile so instead a call to .empty()
or the empty string literal are used, where appropriate.
This prevents code from invoking behavior which is unconditionally undefined. The single-argument const CharT*
constructor does not check for the null case before dereferencing its input. The standard is slated to add an explicitly-deleted overload to catch some of these cases: wg21.link/p2166
To catch the additional cases of NULL
(which expands to __null
) and 0
, first run the modernize-use-nullptr
check to convert the callers to nullptr
.
For the user-facing documentation see: http://clang.llvm.org/extra/clang-tidy/checks/bugprone/stringview-nullptr.html
Definition at line 34 of file StringviewNullptrCheck.h.
clang::tidy::bugprone::StringviewNullptrCheck::StringviewNullptrCheck | ( | StringRef | Name, |
ClangTidyContext * | Context | ||
) |
Definition at line 298 of file StringviewNullptrCheck.cpp.
|
inlineoverridevirtual |
Override this to disable registering matchers and PP callbacks if an invalid language version is being used.
For example if a check is examining overloaded functions then this should be overridden to return false when the CPlusPlus flag is not set in LangOpts
.
Reimplemented from clang::tidy::ClangTidyCheck.
Definition at line 38 of file StringviewNullptrCheck.h.