clang-tools 20.0.0git
|
Finds function definitions where parameters of convertible types follow each other directly, making call sites prone to calling the function with swapped (or badly ordered) arguments. More...
#include <EasilySwappableParametersCheck.h>
Public Member Functions | |
EasilySwappableParametersCheck (StringRef Name, ClangTidyContext *Context) | |
void | registerMatchers (ast_matchers::MatchFinder *Finder) override |
Override this to register AST matchers with Finder . | |
void | check (const ast_matchers::MatchFinder::MatchResult &Result) override |
ClangTidyChecks that register ASTMatchers should do the actual work in here. | |
void | storeOptions (ClangTidyOptions::OptionMap &Opts) override |
Should store all options supported by this check with their current values or default values for options that haven't been overridden. | |
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. | |
Public Attributes | |
const std::size_t | MinimumLength |
The minimum length of an adjacent swappable parameter range required for a diagnostic. | |
const std::vector< StringRef > | IgnoredParameterNames |
The parameter names (as written in the source text) to be ignored. | |
const std::vector< StringRef > | IgnoredParameterTypeSuffixes |
The parameter typename suffixes (as written in the source code) to be ignored. | |
const bool | QualifiersMix |
Whether to consider differently qualified versions of the same type mixable. | |
const bool | ModelImplicitConversions |
Whether to model implicit conversions "in full" (conditions apply) during analysis and consider types that are implicitly convertible to one another mixable. | |
const bool | SuppressParametersUsedTogether |
If enabled, diagnostics for parameters that are used together in a similar way are not emitted. | |
const std::size_t | NamePrefixSuffixSilenceDissimilarityTreshold |
The number of characters two parameter names might be dissimilar at either end for the report about the parameters to be silenced. | |
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 |
Finds function definitions where parameters of convertible types follow each other directly, making call sites prone to calling the function with swapped (or badly ordered) arguments.
For the user-facing documentation see: http://clang.llvm.org/extra/clang-tidy/checks/bugprone/easily-swappable-parameters.html
Definition at line 22 of file EasilySwappableParametersCheck.h.
clang::tidy::bugprone::EasilySwappableParametersCheck::EasilySwappableParametersCheck | ( | StringRef | Name, |
ClangTidyContext * | Context | ||
) |
Definition at line 2083 of file EasilySwappableParametersCheck.cpp.
|
overridevirtual |
ClangTidyChecks
that register ASTMatchers should do the actual work in here.
Reimplemented from clang::tidy::ClangTidyCheck.
Definition at line 2136 of file EasilySwappableParametersCheck.cpp.
References CommonType, clang::tidy::ClangTidyCheck::diag(), clang::tidy::bugprone::getName(), clang::tidy::bugprone::getNameOrUnnamed(), clang::tidy::bugprone::model::ConversionSequence::getUserDefinedConversionFunction(), clang::tidy::bugprone::model::ConversionSequence::getUserDefinedConversionHighlight(), M, MinimumLength, clang::tidy::bugprone::needsToElaborateImplicitConversion(), clang::tidy::bugprone::needsToPrintTypeInDiagnostic(), clang::tidy::bugprone::PP, SuppressParametersUsedTogether, and clang::tidy::bugprone::model::ConversionSequence::UDConvKind.
|
overridevirtual |
Override this to register AST matchers with Finder
.
This should be used by clang-tidy checks that analyze code properties that dependent on AST knowledge.
You can register as many matchers as necessary with Finder
. Usually, "this" will be used as callback, but you can also specify other callback classes. Thereby, different matchers can trigger different callbacks.
This will only be executed if the function isLanguageVersionSupported returns true.
If you need to merge information between the different matchers, you can store these as members of the derived class. However, note that all matches occur in the order of the AST traversal.
Reimplemented from clang::tidy::ClangTidyCheck.
Definition at line 2118 of file EasilySwappableParametersCheck.cpp.
References MinimumLength.
|
overridevirtual |
Should store all options supported by this check with their current values or default values for options that haven't been overridden.
The check should use Options.store()
to store each option it supports whether it has the default value or it has been overridden.
Reimplemented from clang::tidy::ClangTidyCheck.
Definition at line 2103 of file EasilySwappableParametersCheck.cpp.
References IgnoredParameterNames, IgnoredParameterTypeSuffixes, MinimumLength, ModelImplicitConversions, NamePrefixSuffixSilenceDissimilarityTreshold, clang::tidy::ClangTidyCheck::Options, QualifiersMix, clang::tidy::utils::options::serializeStringList(), clang::tidy::ClangTidyCheck::OptionsView::store(), and SuppressParametersUsedTogether.
const std::vector<StringRef> clang::tidy::bugprone::EasilySwappableParametersCheck::IgnoredParameterNames |
The parameter names (as written in the source text) to be ignored.
Definition at line 34 of file EasilySwappableParametersCheck.h.
Referenced by storeOptions().
const std::vector<StringRef> clang::tidy::bugprone::EasilySwappableParametersCheck::IgnoredParameterTypeSuffixes |
The parameter typename suffixes (as written in the source code) to be ignored.
Definition at line 38 of file EasilySwappableParametersCheck.h.
Referenced by storeOptions().
const std::size_t clang::tidy::bugprone::EasilySwappableParametersCheck::MinimumLength |
The minimum length of an adjacent swappable parameter range required for a diagnostic.
Definition at line 31 of file EasilySwappableParametersCheck.h.
Referenced by check(), registerMatchers(), and storeOptions().
const bool clang::tidy::bugprone::EasilySwappableParametersCheck::ModelImplicitConversions |
Whether to model implicit conversions "in full" (conditions apply) during analysis and consider types that are implicitly convertible to one another mixable.
Definition at line 47 of file EasilySwappableParametersCheck.h.
Referenced by storeOptions().
const std::size_t clang::tidy::bugprone::EasilySwappableParametersCheck::NamePrefixSuffixSilenceDissimilarityTreshold |
The number of characters two parameter names might be dissimilar at either end for the report about the parameters to be silenced.
E.g. the names "LHS" and "RHS" are 1-dissimilar suffixes of each other, while "Text1" and "Text2" are 1-dissimilar prefixes of each other.
Definition at line 57 of file EasilySwappableParametersCheck.h.
Referenced by storeOptions().
const bool clang::tidy::bugprone::EasilySwappableParametersCheck::QualifiersMix |
Whether to consider differently qualified versions of the same type mixable.
Definition at line 42 of file EasilySwappableParametersCheck.h.
Referenced by storeOptions().
const bool clang::tidy::bugprone::EasilySwappableParametersCheck::SuppressParametersUsedTogether |
If enabled, diagnostics for parameters that are used together in a similar way are not emitted.
Definition at line 51 of file EasilySwappableParametersCheck.h.
Referenced by check(), and storeOptions().