diff options
author | Jonathan Roelofs <jroelofs@jroelofs.com> | 2020-02-25 10:41:32 -0700 |
---|---|---|
committer | Jonathan Roelofs <jroelofs@jroelofs.com> | 2020-03-09 11:32:44 -0600 |
commit | 3486cc014b208df3897cf5656db0d0fdeae26d6b (patch) | |
tree | 5d5e49f1d5489c446dcec6a8d339dd744a9ffa5a /clang-tools-extra/clang-tidy/utils | |
parent | b28ed9cec8dd7225164eb8c0884aa463654ef3fc (diff) | |
download | llvm-3486cc014b208df3897cf5656db0d0fdeae26d6b.zip llvm-3486cc014b208df3897cf5656db0d0fdeae26d6b.tar.gz llvm-3486cc014b208df3897cf5656db0d0fdeae26d6b.tar.bz2 |
[clang-tidy] Generalize HeaderFileExtensions.{h,cpp}. NFC
https://reviews.llvm.org/D75489
Diffstat (limited to 'clang-tools-extra/clang-tidy/utils')
-rw-r--r-- | clang-tools-extra/clang-tidy/utils/CMakeLists.txt | 2 | ||||
-rw-r--r-- | clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp | 60 | ||||
-rw-r--r-- | clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.h (renamed from clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h) | 30 | ||||
-rw-r--r-- | clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp | 70 | ||||
-rw-r--r-- | clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp | 4 | ||||
-rw-r--r-- | clang-tools-extra/clang-tidy/utils/HeaderGuard.h | 8 |
6 files changed, 80 insertions, 94 deletions
diff --git a/clang-tools-extra/clang-tidy/utils/CMakeLists.txt b/clang-tools-extra/clang-tidy/utils/CMakeLists.txt index 885c837..97171fb 100644 --- a/clang-tools-extra/clang-tidy/utils/CMakeLists.txt +++ b/clang-tools-extra/clang-tidy/utils/CMakeLists.txt @@ -5,8 +5,8 @@ add_clang_library(clangTidyUtils DeclRefExprUtils.cpp ExceptionAnalyzer.cpp ExprSequence.cpp + FileExtensionsUtils.cpp FixItHintUtils.cpp - HeaderFileExtensionsUtils.cpp HeaderGuard.cpp IncludeInserter.cpp IncludeSorter.cpp diff --git a/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp new file mode 100644 index 0000000..c016a72 --- /dev/null +++ b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp @@ -0,0 +1,60 @@ +//===--- FileExtensionsUtils.cpp - clang-tidy -------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "FileExtensionsUtils.h" +#include "clang/Basic/CharInfo.h" +#include "llvm/Support/Path.h" + +namespace clang { +namespace tidy { +namespace utils { + +bool isExpansionLocInHeaderFile(SourceLocation Loc, const SourceManager &SM, + const FileExtensionsSet &HeaderFileExtensions) { + SourceLocation ExpansionLoc = SM.getExpansionLoc(Loc); + return isFileExtension(SM.getFilename(ExpansionLoc), HeaderFileExtensions); +} + +bool isPresumedLocInHeaderFile(SourceLocation Loc, SourceManager &SM, + const FileExtensionsSet &HeaderFileExtensions) { + PresumedLoc PresumedLocation = SM.getPresumedLoc(Loc); + return isFileExtension(PresumedLocation.getFilename(), HeaderFileExtensions); +} + +bool isSpellingLocInHeaderFile(SourceLocation Loc, SourceManager &SM, + const FileExtensionsSet &HeaderFileExtensions) { + SourceLocation SpellingLoc = SM.getSpellingLoc(Loc); + return isFileExtension(SM.getFilename(SpellingLoc), HeaderFileExtensions); +} + +bool parseFileExtensions(StringRef AllFileExtensions, + FileExtensionsSet &FileExtensions, char Delimiter) { + SmallVector<StringRef, 5> Suffixes; + AllFileExtensions.split(Suffixes, Delimiter); + FileExtensions.clear(); + for (StringRef Suffix : Suffixes) { + StringRef Extension = Suffix.trim(); + if (!llvm::all_of(Extension, isAlphanumeric)) + return false; + FileExtensions.insert(Extension); + } + return true; +} + +bool isFileExtension(StringRef FileName, + const FileExtensionsSet &FileExtensions) { + StringRef Extension = llvm::sys::path::extension(FileName); + if (Extension.empty()) + return false; + // Skip "." prefix. + return FileExtensions.count(Extension.substr(1)) > 0; +} + +} // namespace utils +} // namespace tidy +} // namespace clang diff --git a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.h index 48265c7..f83d357 100644 --- a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h +++ b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.h @@ -1,4 +1,4 @@ -//===--- HeaderFileExtensionsUtils.h - clang-tidy----------------*- C++ -*-===// +//===--- FileExtensionsUtils.h - clang-tidy --------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -18,35 +18,31 @@ namespace clang { namespace tidy { namespace utils { -typedef llvm::SmallSet<llvm::StringRef, 5> HeaderFileExtensionsSet; +typedef llvm::SmallSet<llvm::StringRef, 5> FileExtensionsSet; /// Checks whether expansion location of \p Loc is in header file. -bool isExpansionLocInHeaderFile( - SourceLocation Loc, const SourceManager &SM, - const HeaderFileExtensionsSet &HeaderFileExtensions); +bool isExpansionLocInHeaderFile(SourceLocation Loc, const SourceManager &SM, + const FileExtensionsSet &HeaderFileExtensions); /// Checks whether presumed location of \p Loc is in header file. -bool isPresumedLocInHeaderFile( - SourceLocation Loc, SourceManager &SM, - const HeaderFileExtensionsSet &HeaderFileExtensions); +bool isPresumedLocInHeaderFile(SourceLocation Loc, SourceManager &SM, + const FileExtensionsSet &HeaderFileExtensions); /// Checks whether spelling location of \p Loc is in header file. -bool isSpellingLocInHeaderFile( - SourceLocation Loc, SourceManager &SM, - const HeaderFileExtensionsSet &HeaderFileExtensions); +bool isSpellingLocInHeaderFile(SourceLocation Loc, SourceManager &SM, + const FileExtensionsSet &HeaderFileExtensions); /// Returns recommended default value for the list of header file /// extensions. inline StringRef defaultHeaderFileExtensions() { return ",h,hh,hpp,hxx"; } /// Parses header file extensions from a semicolon-separated list. -bool parseHeaderFileExtensions(StringRef AllHeaderFileExtensions, - HeaderFileExtensionsSet &HeaderFileExtensions, - char delimiter); +bool parseFileExtensions(StringRef AllFileExtensions, + FileExtensionsSet &FileExtensions, char Delimiter); -/// Decides whether a file has a header file extension. -bool isHeaderFileExtension(StringRef FileName, - const HeaderFileExtensionsSet &HeaderFileExtensions); +/// Decides whether a file has one of the specified file extensions. +bool isFileExtension(StringRef FileName, + const FileExtensionsSet &FileExtensions); } // namespace utils } // namespace tidy diff --git a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp b/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp deleted file mode 100644 index 0215b2f..0000000 --- a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//===--- HeaderFileExtensionsUtils.cpp - clang-tidy--------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "HeaderFileExtensionsUtils.h" -#include "clang/Basic/CharInfo.h" -#include "llvm/Support/Path.h" - -namespace clang { -namespace tidy { -namespace utils { - -bool isExpansionLocInHeaderFile( - SourceLocation Loc, const SourceManager &SM, - const HeaderFileExtensionsSet &HeaderFileExtensions) { - SourceLocation ExpansionLoc = SM.getExpansionLoc(Loc); - return isHeaderFileExtension(SM.getFilename(ExpansionLoc), - HeaderFileExtensions); -} - -bool isPresumedLocInHeaderFile( - SourceLocation Loc, SourceManager &SM, - const HeaderFileExtensionsSet &HeaderFileExtensions) { - PresumedLoc PresumedLocation = SM.getPresumedLoc(Loc); - return isHeaderFileExtension(PresumedLocation.getFilename(), - HeaderFileExtensions); -} - -bool isSpellingLocInHeaderFile( - SourceLocation Loc, SourceManager &SM, - const HeaderFileExtensionsSet &HeaderFileExtensions) { - SourceLocation SpellingLoc = SM.getSpellingLoc(Loc); - return isHeaderFileExtension(SM.getFilename(SpellingLoc), - HeaderFileExtensions); -} - -bool parseHeaderFileExtensions(StringRef AllHeaderFileExtensions, - HeaderFileExtensionsSet &HeaderFileExtensions, - char delimiter) { - SmallVector<StringRef, 5> Suffixes; - AllHeaderFileExtensions.split(Suffixes, delimiter); - HeaderFileExtensions.clear(); - for (StringRef Suffix : Suffixes) { - StringRef Extension = Suffix.trim(); - for (StringRef::const_iterator it = Extension.begin(); - it != Extension.end(); ++it) { - if (!isAlphanumeric(*it)) - return false; - } - HeaderFileExtensions.insert(Extension); - } - return true; -} - -bool isHeaderFileExtension( - StringRef FileName, const HeaderFileExtensionsSet &HeaderFileExtensions) { - StringRef extension = llvm::sys::path::extension(FileName); - if (extension.empty()) - return false; - // Skip "." prefix. - return HeaderFileExtensions.count(extension.substr(1)) > 0; -} - -} // namespace utils -} // namespace tidy -} // namespace clang diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp index 13107c25..1426fca 100644 --- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp +++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp @@ -273,13 +273,13 @@ void HeaderGuardCheck::registerPPCallbacks(const SourceManager &SM, } bool HeaderGuardCheck::shouldSuggestEndifComment(StringRef FileName) { - return utils::isHeaderFileExtension(FileName, HeaderFileExtensions); + return utils::isFileExtension(FileName, HeaderFileExtensions); } bool HeaderGuardCheck::shouldFixHeaderGuard(StringRef FileName) { return true; } bool HeaderGuardCheck::shouldSuggestToAddHeaderGuard(StringRef FileName) { - return utils::isHeaderFileExtension(FileName, HeaderFileExtensions); + return utils::isFileExtension(FileName, HeaderFileExtensions); } std::string HeaderGuardCheck::formatEndIf(StringRef HeaderGuard) { diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h index 8ece331..cc3cafd 100644 --- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h +++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h @@ -10,7 +10,7 @@ #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_HEADERGUARD_H #include "../ClangTidy.h" -#include "../utils/HeaderFileExtensionsUtils.h" +#include "../utils/FileExtensionsUtils.h" namespace clang { namespace tidy { @@ -29,8 +29,8 @@ public: : ClangTidyCheck(Name, Context), RawStringHeaderFileExtensions(Options.getLocalOrGlobal( "HeaderFileExtensions", utils::defaultHeaderFileExtensions())) { - utils::parseHeaderFileExtensions(RawStringHeaderFileExtensions, - HeaderFileExtensions, ','); + utils::parseFileExtensions(RawStringHeaderFileExtensions, + HeaderFileExtensions, ','); } void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP, Preprocessor *ModuleExpanderPP) override; @@ -54,7 +54,7 @@ public: private: std::string RawStringHeaderFileExtensions; - utils::HeaderFileExtensionsSet HeaderFileExtensions; + utils::FileExtensionsSet HeaderFileExtensions; }; } // namespace utils |