-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHeaderincludeguardCheck.cpp
28 lines (22 loc) · 1.05 KB
/
HeaderincludeguardCheck.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "HeaderincludeguardCheck.h"
namespace myplugin {
MyHeaderGuardCheck::MyHeaderGuardCheck(clang::StringRef Name,
clang::tidy::ClangTidyContext *Context)
: clang::tidy::utils::HeaderGuardCheck(Name, Context) {}
std::string MyHeaderGuardCheck::getHeaderGuard(clang::StringRef Filename,
clang::StringRef OldGuard) {
// from llvms implementation
std::string Guard = Filename.str();
// When running under Windows, need to convert the path separators from
// `\` to `/`.
Guard = llvm::sys::path::convert_to_slash(Guard);
// Find the project root make this configurable from settings?
size_t PosProjectRoot = Guard.rfind("external-tidy-module");
if (PosProjectRoot != clang::StringRef::npos)
Guard = Guard.substr(PosProjectRoot);
std::replace(Guard.begin(), Guard.end(), '/', '_');
std::replace(Guard.begin(), Guard.end(), '.', '_');
std::replace(Guard.begin(), Guard.end(), '-', '_');
return clang::StringRef(Guard).upper();
}
} // namespace myplugin