[clang-tidy] Add namespace support to add_new_check.py

Summary: Without namespace you can not create checks with same name in different modules

Reviewers: alexfh

Subscribers: cfe-commits

Patch by Cong Liu!

Differential Revision: http://reviews.llvm.org/D15571

llvm-svn: 255770
This commit is contained in:
Alexander Kornienko 2015-12-16 15:05:27 +00:00
parent d4ff820fb8
commit 821ca470bb
1 changed files with 10 additions and 4 deletions

View File

@ -73,6 +73,7 @@ def write_header(module_path, module, check_name, check_name_camel):
namespace clang {
namespace tidy {
namespace %(module)s {
/// FIXME: Write a short description.
///
@ -86,6 +87,7 @@ public:
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
};
} // namespace %(module)s
} // namespace tidy
} // namespace clang
@ -93,11 +95,12 @@ public:
""" % {'header_guard': header_guard,
'check_name': check_name_camel,
'check_name_dashes': check_name_dashes})
'check_name_dashes': check_name_dashes,
'module': module})
# Adds the implementation of the new check.
def write_implementation(module_path, check_name_camel):
def write_implementation(module_path, module, check_name_camel):
filename = os.path.join(module_path, check_name_camel) + '.cpp'
print('Creating %s...' % filename)
with open(filename, 'wb') as f:
@ -123,6 +126,7 @@ using namespace clang::ast_matchers;
namespace clang {
namespace tidy {
namespace %(module)s {
void %(check_name)s::registerMatchers(MatchFinder *Finder) {
// FIXME: Add matchers.
@ -139,10 +143,12 @@ void %(check_name)s::check(const MatchFinder::MatchResult &Result) {
<< FixItHint::CreateInsertion(MatchedDecl->getLocation(), "awesome_");
}
} // namespace %(module)s
} // namespace tidy
} // namespace clang
""" % {'check_name': check_name_camel})
""" % {'check_name': check_name_camel,
'module': module})
# Modifies the module to include the new check.
@ -261,7 +267,7 @@ def main():
if not adapt_cmake(module_path, check_name_camel):
return
write_header(module_path, module, check_name, check_name_camel)
write_implementation(module_path, check_name_camel)
write_implementation(module_path, module, check_name_camel)
adapt_module(module_path, module, check_name, check_name_camel)
write_test(module_path, module, check_name)
write_docs(module_path, module, check_name)