From 27f126b0064528fac915c195761a60a8ca8627bc Mon Sep 17 00:00:00 2001 From: Alexander Kornienko Date: Thu, 16 Oct 2014 15:11:54 +0000 Subject: [PATCH] [clang-tidy] Minor fixes for the NamespaceCommentCheck. * Make SmallVector size enough for all groups. * Allow trailing period in the comment. * Fix "// anonymous namespace qqq". llvm-svn: 219926 --- .../clang-tidy/readability/NamespaceCommentCheck.cpp | 10 ++++++---- .../unittests/clang-tidy/ReadabilityChecksTest.cpp | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp index 3464a98..b284150 100644 --- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp @@ -23,7 +23,7 @@ NamespaceCommentCheck::NamespaceCommentCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), NamespaceCommentPattern("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *" - "namespace( +([a-zA-Z0-9_]+))? *(\\*/)?$", + "namespace( +([a-zA-Z0-9_]+))?\\.? *(\\*/)?$", llvm::Regex::IgnoreCase), ShortNamespaceLines(Options.get("ShortNamespaceLines", 1u)), SpacesBeforeComments(Options.get("SpacesBeforeComments", 1u)) {} @@ -85,13 +85,15 @@ void NamespaceCommentCheck::check(const MatchFinder::MatchResult &Result) { // Try to find existing namespace closing comment on the same line. if (Tok.is(tok::comment) && NextTokenIsOnSameLine) { StringRef Comment(Sources.getCharacterData(Loc), Tok.getLength()); - SmallVector Groups; + SmallVector Groups; if (NamespaceCommentPattern.match(Comment, &Groups)) { - StringRef NamespaceNameInComment = Groups.size() >= 6 ? Groups[5] : ""; + StringRef NamespaceNameInComment = Groups.size() > 5 ? Groups[5] : ""; + StringRef Anonymous = Groups.size() > 3 ? Groups[3] : ""; // Check if the namespace in the comment is the same. if ((ND->isAnonymousNamespace() && NamespaceNameInComment.empty()) || - ND->getNameAsString() == NamespaceNameInComment) { + (ND->getNameAsString() == NamespaceNameInComment && + Anonymous.empty())) { // FIXME: Maybe we need a strict mode, where we always fix namespace // comments with different format. return; diff --git a/clang-tools-extra/unittests/clang-tidy/ReadabilityChecksTest.cpp b/clang-tools-extra/unittests/clang-tidy/ReadabilityChecksTest.cpp index 847c2ba..2d51949 100644 --- a/clang-tools-extra/unittests/clang-tidy/ReadabilityChecksTest.cpp +++ b/clang-tools-extra/unittests/clang-tidy/ReadabilityChecksTest.cpp @@ -43,6 +43,14 @@ TEST(NamespaceCommentCheckTest, CheckExistingComments) { "} // anonymous namespace", runCheckOnCode("namespace {\n" "} // anonymous namespace")); + EXPECT_EQ("namespace {\n" + "} // Anonymous namespace.", + runCheckOnCode("namespace {\n" + "} // Anonymous namespace.")); + EXPECT_EQ("namespace q {\n" + "} // namespace q", + runCheckOnCode("namespace q {\n" + "} // anonymous namespace q")); EXPECT_EQ( "namespace My_NameSpace123 {\n" "} // namespace My_NameSpace123", -- 2.7.4