[clang-tidy] Use ; as separator for HeaderFileExtensions
... and deprecate use of ',' for the same. https://reviews.llvm.org/D75621
This commit is contained in:
parent
3486cc014b
commit
47caa69120
|
@ -32,7 +32,8 @@ DynamicStaticInitializersCheck::DynamicStaticInitializersCheck(StringRef Name,
|
|||
RawStringHeaderFileExtensions(Options.getLocalOrGlobal(
|
||||
"HeaderFileExtensions", utils::defaultHeaderFileExtensions())) {
|
||||
if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
|
||||
HeaderFileExtensions, ',')) {
|
||||
HeaderFileExtensions,
|
||||
utils::defaultFileExtensionDelimiters())) {
|
||||
llvm::errs() << "Invalid header file extension: "
|
||||
<< RawStringHeaderFileExtensions << "\n";
|
||||
}
|
||||
|
|
|
@ -19,11 +19,12 @@ namespace bugprone {
|
|||
/// Finds dynamically initialized static variables in header files.
|
||||
///
|
||||
/// The check supports these options:
|
||||
/// - `HeaderFileExtensions`: a comma-separated list of filename extensions of
|
||||
/// header files (The filename extensions should not contain "." prefix).
|
||||
/// "h,hh,hpp,hxx" by default.
|
||||
/// - `HeaderFileExtensions`: a semicolon-separated list of filename
|
||||
/// extensions of header files (The filename extensions should not contain
|
||||
/// "." prefix). ";h;hh;hpp;hxx" by default.
|
||||
//
|
||||
/// For extension-less header files, using an empty string or leaving an
|
||||
/// empty string between "," if there are other filename extensions.
|
||||
/// empty string between ";" if there are other filename extensions.
|
||||
class DynamicStaticInitializersCheck : public ClangTidyCheck {
|
||||
public:
|
||||
DynamicStaticInitializersCheck(StringRef Name, ClangTidyContext *Context);
|
||||
|
|
|
@ -25,7 +25,8 @@ GlobalNamesInHeadersCheck::GlobalNamesInHeadersCheck(StringRef Name,
|
|||
RawStringHeaderFileExtensions(Options.getLocalOrGlobal(
|
||||
"HeaderFileExtensions", utils::defaultHeaderFileExtensions())) {
|
||||
if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
|
||||
HeaderFileExtensions, ',')) {
|
||||
HeaderFileExtensions,
|
||||
utils::defaultFileExtensionDelimiters())) {
|
||||
llvm::errs() << "Invalid header file extension: "
|
||||
<< RawStringHeaderFileExtensions << "\n";
|
||||
}
|
||||
|
|
|
@ -21,11 +21,12 @@ namespace readability {
|
|||
/// Right now it only triggers on using declarations and directives.
|
||||
///
|
||||
/// The check supports these options:
|
||||
/// - `HeaderFileExtensions`: a comma-separated list of filename extensions
|
||||
/// of header files (the filename extensions should not contain "." prefix).
|
||||
/// "h" by default.
|
||||
/// - `HeaderFileExtensions`: a semicolon-separated list of filename
|
||||
/// extensions of header files (the filename extensions should not contain
|
||||
/// "." prefix). ";h;hh;hpp;hxx" by default.
|
||||
///
|
||||
/// For extension-less header files, using an empty string or leaving an
|
||||
/// empty string between "," if there are other filename extensions.
|
||||
/// empty string between ";" if there are other filename extensions.
|
||||
class GlobalNamesInHeadersCheck : public ClangTidyCheck {
|
||||
public:
|
||||
GlobalNamesInHeadersCheck(StringRef Name, ClangTidyContext *Context);
|
||||
|
|
|
@ -24,7 +24,8 @@ UnnamedNamespaceInHeaderCheck::UnnamedNamespaceInHeaderCheck(
|
|||
RawStringHeaderFileExtensions(Options.getLocalOrGlobal(
|
||||
"HeaderFileExtensions", utils::defaultHeaderFileExtensions())) {
|
||||
if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
|
||||
HeaderFileExtensions, ',')) {
|
||||
HeaderFileExtensions,
|
||||
utils::defaultFileExtensionDelimiters())) {
|
||||
llvm::errs() << "Invalid header file extension: "
|
||||
<< RawStringHeaderFileExtensions << "\n";
|
||||
}
|
||||
|
|
|
@ -20,11 +20,12 @@ namespace build {
|
|||
/// Finds anonymous namespaces in headers.
|
||||
///
|
||||
/// The check supports these options:
|
||||
/// - `HeaderFileExtensions`: a comma-separated list of filename extensions of
|
||||
/// header files (The filename extensions should not contain "." prefix).
|
||||
/// "h,hh,hpp,hxx" by default.
|
||||
/// - `HeaderFileExtensions`: a semicolon-separated list of filename
|
||||
/// extensions of header files (The filename extensions should not contain
|
||||
/// "." prefix). ";h;hh;hpp;hxx" by default.
|
||||
///
|
||||
/// For extension-less header files, using an empty string or leaving an
|
||||
/// empty string between "," if there are other filename extensions.
|
||||
/// empty string between ";" if there are other filename extensions.
|
||||
///
|
||||
/// https://google.github.io/styleguide/cppguide.html#Namespaces
|
||||
///
|
||||
|
|
|
@ -19,11 +19,12 @@ namespace llvm_check {
|
|||
/// For the user-facing documentation see:
|
||||
/// http://clang.llvm.org/extra/clang-tidy/checks/llvm-header-guard.html
|
||||
/// The check supports these options:
|
||||
/// - `HeaderFileExtensions`: a comma-separated list of filename extensions of
|
||||
/// header files (The filename extension should not contain "." prefix).
|
||||
/// ",h,hh,hpp,hxx" by default.
|
||||
/// - `HeaderFileExtensions`: a semicolon-separated list of filename
|
||||
/// extensions of header files (The filename extension should not contain
|
||||
/// "." prefix). ";h;hh;hpp;hxx" by default.
|
||||
///
|
||||
/// For extension-less header files, using an empty string or leaving an
|
||||
/// empty string between "," if there are other filename extensions.
|
||||
/// empty string between ";" if there are other filename extensions.
|
||||
class LLVMHeaderGuardCheck : public utils::HeaderGuardCheck {
|
||||
public:
|
||||
LLVMHeaderGuardCheck(StringRef Name, ClangTidyContext *Context);
|
||||
|
|
|
@ -34,7 +34,8 @@ DefinitionsInHeadersCheck::DefinitionsInHeadersCheck(StringRef Name,
|
|||
RawStringHeaderFileExtensions(Options.getLocalOrGlobal(
|
||||
"HeaderFileExtensions", utils::defaultHeaderFileExtensions())) {
|
||||
if (!utils::parseFileExtensions(RawStringHeaderFileExtensions,
|
||||
HeaderFileExtensions, ',')) {
|
||||
HeaderFileExtensions,
|
||||
utils::defaultFileExtensionDelimiters())) {
|
||||
// FIXME: Find a more suitable way to handle invalid configuration
|
||||
// options.
|
||||
llvm::errs() << "Invalid header file extension: "
|
||||
|
|
|
@ -22,11 +22,12 @@ namespace misc {
|
|||
/// The check supports these options:
|
||||
/// - `UseHeaderFileExtension`: Whether to use file extension to distinguish
|
||||
/// header files. True by default.
|
||||
/// - `HeaderFileExtensions`: a comma-separated list of filename extensions of
|
||||
/// header files (The filename extension should not contain "." prefix).
|
||||
/// ",h,hh,hpp,hxx" by default.
|
||||
/// - `HeaderFileExtensions`: a semicolon-separated list of filename
|
||||
/// extensions of header files (The filename extension should not contain
|
||||
/// "." prefix). ";h;hh;hpp;hxx" by default.
|
||||
///
|
||||
/// For extension-less header files, using an empty string or leaving an
|
||||
/// empty string between "," if there are other filename extensions.
|
||||
/// empty string between ";" if there are other filename extensions.
|
||||
///
|
||||
/// For the user-facing documentation see:
|
||||
/// http://clang.llvm.org/extra/clang-tidy/checks/misc-definitions-in-headers.html
|
||||
|
|
|
@ -33,9 +33,16 @@ bool isSpellingLocInHeaderFile(SourceLocation Loc, SourceManager &SM,
|
|||
}
|
||||
|
||||
bool parseFileExtensions(StringRef AllFileExtensions,
|
||||
FileExtensionsSet &FileExtensions, char Delimiter) {
|
||||
FileExtensionsSet &FileExtensions,
|
||||
StringRef Delimiters) {
|
||||
SmallVector<StringRef, 5> Suffixes;
|
||||
AllFileExtensions.split(Suffixes, Delimiter);
|
||||
for (char Delimiter : Delimiters) {
|
||||
if (AllFileExtensions.contains(Delimiter)) {
|
||||
AllFileExtensions.split(Suffixes, Delimiter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
FileExtensions.clear();
|
||||
for (StringRef Suffix : Suffixes) {
|
||||
StringRef Extension = Suffix.trim();
|
||||
|
|
|
@ -34,11 +34,16 @@ bool isSpellingLocInHeaderFile(SourceLocation Loc, SourceManager &SM,
|
|||
|
||||
/// Returns recommended default value for the list of header file
|
||||
/// extensions.
|
||||
inline StringRef defaultHeaderFileExtensions() { return ",h,hh,hpp,hxx"; }
|
||||
inline StringRef defaultHeaderFileExtensions() { return ";h;hh;hpp;hxx"; }
|
||||
|
||||
/// Returns recommended default value for the list of file extension
|
||||
/// delimiters.
|
||||
inline StringRef defaultFileExtensionDelimiters() { return ",;"; }
|
||||
|
||||
/// Parses header file extensions from a semicolon-separated list.
|
||||
bool parseFileExtensions(StringRef AllFileExtensions,
|
||||
FileExtensionsSet &FileExtensions, char Delimiter);
|
||||
FileExtensionsSet &FileExtensions,
|
||||
StringRef Delimiters);
|
||||
|
||||
/// Decides whether a file has one of the specified file extensions.
|
||||
bool isFileExtension(StringRef FileName,
|
||||
|
|
|
@ -18,11 +18,12 @@ namespace utils {
|
|||
|
||||
/// Finds and fixes header guards.
|
||||
/// The check supports these options:
|
||||
/// - `HeaderFileExtensions`: a comma-separated list of filename extensions of
|
||||
/// header files (The filename extension should not contain "." prefix).
|
||||
/// ",h,hh,hpp,hxx" by default.
|
||||
/// - `HeaderFileExtensions`: a semicolon-separated list of filename
|
||||
/// extensions of header files (The filename extension should not contain
|
||||
/// "." prefix). ";h;hh;hpp;hxx" by default.
|
||||
///
|
||||
/// For extension-less header files, using an empty string or leaving an
|
||||
/// empty string between "," if there are other filename extensions.
|
||||
/// empty string between ";" if there are other filename extensions.
|
||||
class HeaderGuardCheck : public ClangTidyCheck {
|
||||
public:
|
||||
HeaderGuardCheck(StringRef Name, ClangTidyContext *Context)
|
||||
|
@ -30,7 +31,8 @@ public:
|
|||
RawStringHeaderFileExtensions(Options.getLocalOrGlobal(
|
||||
"HeaderFileExtensions", utils::defaultHeaderFileExtensions())) {
|
||||
utils::parseFileExtensions(RawStringHeaderFileExtensions,
|
||||
HeaderFileExtensions, ',');
|
||||
HeaderFileExtensions,
|
||||
utils::defaultFileExtensionDelimiters());
|
||||
}
|
||||
void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
|
||||
Preprocessor *ModuleExpanderPP) override;
|
||||
|
|
|
@ -125,6 +125,11 @@ Changes in existing checks
|
|||
check now detects in class initializers and constructor initializers which
|
||||
are deemed to be redundant.
|
||||
|
||||
- Checks supporting the ``HeaderFileExtensions`` flag now support ``;`` as a
|
||||
delimiter in addition to ``,``, with the latter being deprecated as of this
|
||||
release. This simplifies how one specifies the options on the command line:
|
||||
``--config="{CheckOptions: [{ key: HeaderFileExtensions, value: h;;hpp;hxx }]}"``
|
||||
|
||||
Renamed checks
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
|
|
Loading…
Reference in a new issue