|
clang-tools 22.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 |
| Public Member Functions inherited from clang::tidy::utils::TransformerClangTidyCheck | |
| TransformerClangTidyCheck (StringRef Name, ClangTidyContext *Context) | |
| TransformerClangTidyCheck (llvm::function_ref< 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 |
| void | registerMatchers (ast_matchers::MatchFinder *Finder) final |
| void | check (const ast_matchers::MatchFinder::MatchResult &Result) final |
| 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. | |
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: https://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 295 of file StringviewNullptrCheck.cpp.
References clang::tidy::bugprone::stringviewNullptrCheckImpl(), and clang::tidy::utils::TransformerClangTidyCheck::TransformerClangTidyCheck().
|
inlineoverride |
Definition at line 38 of file StringviewNullptrCheck.h.