[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-24 Thread Thorsten Klein via cfe-commits

thorsten-klein wrote:

Thanks a lot for your review @vbvictor! 
I have resolved your review findings. 

What do you think about the option's name? Is `AllowNoNamespaceComments` fine 
for you or shall I rename to `AllowOmittingNamespaceComments` (or any other 
suggestion)?

https://github.com/llvm/llvm-project/pull/124265
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-24 Thread Thorsten Klein via cfe-commits

https://github.com/thorsten-klein updated 
https://github.com/llvm/llvm-project/pull/124265

>From 608ceb0bb475aad65abb55a1dd02bf84d62ec99c Mon Sep 17 00:00:00 2001
From: "Klein, Thorsten (GDE-EDSI1)" 
Date: Fri, 24 Jan 2025 13:46:24 +0100
Subject: [PATCH] added option AllowNoNamespaceComments for
 google-readability-namespace-comments

new option AllowNoNamespaceComments added for
google-readability-namespace-comments.

When true, the check will allow that namespace comments are ommitted
entirely. The check only fails if a namespace comment is present but
does
   not match. Default is `false`.
---
 .../readability/NamespaceCommentCheck.cpp | 12 ++-
 .../readability/NamespaceCommentCheck.h   |  1 +
 clang-tools-extra/docs/ReleaseNotes.rst   |  7 ++
 .../checks/llvm/namespace-comment.rst |  8 ++
 ...ility-namespace-comments-missing-c++17.cpp | 55 +++
 ...readability-namespace-comments-missing.cpp | 91 +++
 6 files changed, 173 insertions(+), 1 deletion(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing-c++17.cpp
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing.cpp

diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
index 120ec02e9ad7dc..fd306d5b5fb08b 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
@@ -28,11 +28,13 @@ NamespaceCommentCheck::NamespaceCommentCheck(StringRef Name,
   "namespace( +(((inline )|([a-zA-Z0-9_:]))+))?\\.? *(\\*/)?$",
   llvm::Regex::IgnoreCase),
   ShortNamespaceLines(Options.get("ShortNamespaceLines", 1U)),
-  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)) {}
+  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)),
+  AllowNoNamespaceComments(Options.get("AllowNoNamespaceComments", false)) 
{}
 
 void NamespaceCommentCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
   Options.store(Opts, "ShortNamespaceLines", ShortNamespaceLines);
   Options.store(Opts, "SpacesBeforeComments", SpacesBeforeComments);
+  Options.store(Opts, "AllowNoNamespaceComments", AllowNoNamespaceComments);
 }
 
 void NamespaceCommentCheck::registerMatchers(MatchFinder *Finder) {
@@ -141,6 +143,7 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 
   SourceRange OldCommentRange(AfterRBrace, AfterRBrace);
   std::string Message = "%0 not terminated with a closing comment";
+  bool hasComment = false;
 
   // Try to find existing namespace closing comment on the same line.
   if (Tok.is(tok::comment) && NextTokenIsOnSameLine) {
@@ -159,6 +162,8 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 return;
   }
 
+  hasComment = true;
+
   // Otherwise we need to fix the comment.
   NeedLineBreak = Comment.starts_with("/*");
   OldCommentRange =
@@ -184,6 +189,11 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
   ND->isAnonymousNamespace() ? "anonymous namespace"
  : ("namespace '" + *NamespaceNameAsWritten + 
"'");
 
+  // If no namespace comment is allowed
+  if(!hasComment && AllowNoNamespaceComments) {
+return;
+  }
+
   std::string Fix(SpacesBeforeComments, ' ');
   Fix.append("// namespace");
   if (!ND->isAnonymousNamespace())
diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
index 7607d37b1b2fd8..1ecb37fdd8d5da 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
@@ -34,6 +34,7 @@ class NamespaceCommentCheck : public ClangTidyCheck {
   llvm::Regex NamespaceCommentPattern;
   const unsigned ShortNamespaceLines;
   const unsigned SpacesBeforeComments;
+  const bool AllowNoNamespaceComments;
   llvm::SmallVector Ends;
 };
 
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index cc5f64a3f9fa32..e41e7719988b14 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -402,6 +402,13 @@ Changes in existing checks
   ` check to use correct 
template
   type in ``std::min`` and ``std::max`` when operand is integer literal.
 
+- Improved :doc:`google-readability-namespace-comments
+  ` that permits 
+  omitting namespace comments entirely. With this option enabled, the check
+  only fails if a namespace comment is present but does not match namespace
+  definition.
+
+
 Removed checks
 ^^
 
diff --git 
a/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst 
b/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst
inde

[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-24 Thread Thorsten Klein via cfe-commits

https://github.com/thorsten-klein created 
https://github.com/llvm/llvm-project/pull/124265

new option AllowNoNamespaceComments for 
`google-readability-namespace-comments.AllowNoNamespaceComments` is added.

Ref: #124264

When true, the check will allow that no namespace comment is present. If a 
namespace comment is added but it is not matching, the check will fail. Default 
is `false`

>From 70cb3de61ae28220c556522249d1db9b93eaec85 Mon Sep 17 00:00:00 2001
From: "Klein, Thorsten (GDE-EDSI1)" 
Date: Fri, 24 Jan 2025 13:46:24 +0100
Subject: [PATCH] added option AllowNoNamespaceComments for
 google-readability-namespace-comments

new option AllowNoNamespaceComments for
google-readability-namespace-comments is added.

When true, the check will allow that no namespace comment is present. If
a namespace comment is added but it is not matching, the check will
fail. Default is `false`
---
 .../readability/NamespaceCommentCheck.cpp | 12 ++-
 .../readability/NamespaceCommentCheck.h   |  1 +
 .../checks/llvm/namespace-comment.rst |  7 ++
 ...ility-namespace-comments-missing-c++17.cpp | 59 
 ...readability-namespace-comments-missing.cpp | 91 +++
 5 files changed, 169 insertions(+), 1 deletion(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing-c++17.cpp
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing.cpp

diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
index 120ec02e9ad7dc..fd306d5b5fb08b 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
@@ -28,11 +28,13 @@ NamespaceCommentCheck::NamespaceCommentCheck(StringRef Name,
   "namespace( +(((inline )|([a-zA-Z0-9_:]))+))?\\.? *(\\*/)?$",
   llvm::Regex::IgnoreCase),
   ShortNamespaceLines(Options.get("ShortNamespaceLines", 1U)),
-  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)) {}
+  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)),
+  AllowNoNamespaceComments(Options.get("AllowNoNamespaceComments", false)) 
{}
 
 void NamespaceCommentCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
   Options.store(Opts, "ShortNamespaceLines", ShortNamespaceLines);
   Options.store(Opts, "SpacesBeforeComments", SpacesBeforeComments);
+  Options.store(Opts, "AllowNoNamespaceComments", AllowNoNamespaceComments);
 }
 
 void NamespaceCommentCheck::registerMatchers(MatchFinder *Finder) {
@@ -141,6 +143,7 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 
   SourceRange OldCommentRange(AfterRBrace, AfterRBrace);
   std::string Message = "%0 not terminated with a closing comment";
+  bool hasComment = false;
 
   // Try to find existing namespace closing comment on the same line.
   if (Tok.is(tok::comment) && NextTokenIsOnSameLine) {
@@ -159,6 +162,8 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 return;
   }
 
+  hasComment = true;
+
   // Otherwise we need to fix the comment.
   NeedLineBreak = Comment.starts_with("/*");
   OldCommentRange =
@@ -184,6 +189,11 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
   ND->isAnonymousNamespace() ? "anonymous namespace"
  : ("namespace '" + *NamespaceNameAsWritten + 
"'");
 
+  // If no namespace comment is allowed
+  if(!hasComment && AllowNoNamespaceComments) {
+return;
+  }
+
   std::string Fix(SpacesBeforeComments, ' ');
   Fix.append("// namespace");
   if (!ND->isAnonymousNamespace())
diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
index 7607d37b1b2fd8..1ecb37fdd8d5da 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
@@ -34,6 +34,7 @@ class NamespaceCommentCheck : public ClangTidyCheck {
   llvm::Regex NamespaceCommentPattern;
   const unsigned ShortNamespaceLines;
   const unsigned SpacesBeforeComments;
+  const bool AllowNoNamespaceComments;
   llvm::SmallVector Ends;
 };
 
diff --git 
a/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst 
b/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst
index be90260be73af3..f722800bebc460 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst
@@ -39,3 +39,10 @@ Options
 
An unsigned integer specifying the number of spaces before the comment
closing a namespace definition. Default is `1U`.
+
+
+.. option:: AllowNoNamespaceComments
+
+   When true, the check will allow that no nam

[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-24 Thread Thorsten Klein via cfe-commits

https://github.com/thorsten-klein updated 
https://github.com/llvm/llvm-project/pull/124265

>From 15a8d29ef422afe853adeb1fd66e5218d9ebfa34 Mon Sep 17 00:00:00 2001
From: "Klein, Thorsten (GDE-EDSI1)" 
Date: Fri, 24 Jan 2025 13:46:24 +0100
Subject: [PATCH] added option AllowNoNamespaceComments for
 google-readability-namespace-comments

new option AllowNoNamespaceComments added for
google-readability-namespace-comments.

When true, the check will allow that namespace comments are ommitted
entirely. The check only fails if a namespace comment is present but
does
   not match. Default is `false`.
---
 .../readability/NamespaceCommentCheck.cpp | 12 ++-
 .../readability/NamespaceCommentCheck.h   |  1 +
 clang-tools-extra/docs/ReleaseNotes.rst   |  6 ++
 .../checks/llvm/namespace-comment.rst |  8 ++
 ...ility-namespace-comments-missing-c++17.cpp | 59 
 ...readability-namespace-comments-missing.cpp | 91 +++
 6 files changed, 176 insertions(+), 1 deletion(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing-c++17.cpp
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing.cpp

diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
index 120ec02e9ad7dc..fd306d5b5fb08b 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
@@ -28,11 +28,13 @@ NamespaceCommentCheck::NamespaceCommentCheck(StringRef Name,
   "namespace( +(((inline )|([a-zA-Z0-9_:]))+))?\\.? *(\\*/)?$",
   llvm::Regex::IgnoreCase),
   ShortNamespaceLines(Options.get("ShortNamespaceLines", 1U)),
-  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)) {}
+  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)),
+  AllowNoNamespaceComments(Options.get("AllowNoNamespaceComments", false)) 
{}
 
 void NamespaceCommentCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
   Options.store(Opts, "ShortNamespaceLines", ShortNamespaceLines);
   Options.store(Opts, "SpacesBeforeComments", SpacesBeforeComments);
+  Options.store(Opts, "AllowNoNamespaceComments", AllowNoNamespaceComments);
 }
 
 void NamespaceCommentCheck::registerMatchers(MatchFinder *Finder) {
@@ -141,6 +143,7 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 
   SourceRange OldCommentRange(AfterRBrace, AfterRBrace);
   std::string Message = "%0 not terminated with a closing comment";
+  bool hasComment = false;
 
   // Try to find existing namespace closing comment on the same line.
   if (Tok.is(tok::comment) && NextTokenIsOnSameLine) {
@@ -159,6 +162,8 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 return;
   }
 
+  hasComment = true;
+
   // Otherwise we need to fix the comment.
   NeedLineBreak = Comment.starts_with("/*");
   OldCommentRange =
@@ -184,6 +189,11 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
   ND->isAnonymousNamespace() ? "anonymous namespace"
  : ("namespace '" + *NamespaceNameAsWritten + 
"'");
 
+  // If no namespace comment is allowed
+  if(!hasComment && AllowNoNamespaceComments) {
+return;
+  }
+
   std::string Fix(SpacesBeforeComments, ' ');
   Fix.append("// namespace");
   if (!ND->isAnonymousNamespace())
diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
index 7607d37b1b2fd8..1ecb37fdd8d5da 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
@@ -34,6 +34,7 @@ class NamespaceCommentCheck : public ClangTidyCheck {
   llvm::Regex NamespaceCommentPattern;
   const unsigned ShortNamespaceLines;
   const unsigned SpacesBeforeComments;
+  const bool AllowNoNamespaceComments;
   llvm::SmallVector Ends;
 };
 
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index cc5f64a3f9fa32..6896b41300be77 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -402,6 +402,12 @@ Changes in existing checks
   ` check to use correct 
template
   type in ``std::min`` and ``std::max`` when operand is integer literal.
 
+- Improved :doc:`google-readability-namespace-comments
+  ` that permits 
+  omitting namespace comments entirely. With this option enabled, the check
+  only fails if a namespace comment is present but does not match.
+
+
 Removed checks
 ^^
 
diff --git 
a/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst 
b/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst
index be90260be73af3..a5773

[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-25 Thread Thorsten Klein via cfe-commits

https://github.com/thorsten-klein edited 
https://github.com/llvm/llvm-project/pull/124265
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-25 Thread Thorsten Klein via cfe-commits

https://github.com/thorsten-klein edited 
https://github.com/llvm/llvm-project/pull/124265
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-25 Thread Thorsten Klein via cfe-commits


@@ -287,6 +287,11 @@ Changes in existing checks
   ` check to
   report a location even when the member location is not valid.
 
+- Improved :doc:`google-readability-namespace-comments
+  ` check to
+  add an option ``AllowNoNamespaceComments``, that permits

thorsten-klein wrote:

I made it consistent to already existing ReleaseNote entry. 
Ref: 
https://github.com/llvm/llvm-project/blob/main/clang-tools-extra/docs/ReleaseNotes.rst?plain=1#L334

> - Improved :doc:`modernize-use-integer-sign-comparison
  ` check to
  add an option ``EnableQtSupport``, that makes C++17 ``q20::cmp_*`` alternative
  available for Qt-based applications.

Shall I really use single back-tick or keep it consistent with double 
back-ticks as already existing? 

https://github.com/llvm/llvm-project/pull/124265
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-25 Thread Thorsten Klein via cfe-commits

https://github.com/thorsten-klein updated 
https://github.com/llvm/llvm-project/pull/124265

>From bade51bc7f0135e5c74cc64ee851a17813c6820f Mon Sep 17 00:00:00 2001
From: "Klein, Thorsten (GDE-EDSI1)" 
Date: Fri, 24 Jan 2025 13:46:24 +0100
Subject: [PATCH] added option AllowNoNamespaceComments for
 google-readability-namespace-comments

new option AllowNoNamespaceComments added for
google-readability-namespace-comments.

When true, the check will allow that namespace comments are ommitted
entirely. The check only fails if a namespace comment is present but
does
   not match. Default is `false`.
---
 .../readability/NamespaceCommentCheck.cpp | 12 ++-
 .../readability/NamespaceCommentCheck.h   |  1 +
 clang-tools-extra/docs/ReleaseNotes.rst   |  5 +
 .../checks/llvm/namespace-comment.rst |  6 ++
 ...ility-namespace-comments-missing-c++17.cpp | 55 +++
 ...readability-namespace-comments-missing.cpp | 91 +++
 6 files changed, 169 insertions(+), 1 deletion(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing-c++17.cpp
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing.cpp

diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
index 120ec02e9ad7dc..fd306d5b5fb08b 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
@@ -28,11 +28,13 @@ NamespaceCommentCheck::NamespaceCommentCheck(StringRef Name,
   "namespace( +(((inline )|([a-zA-Z0-9_:]))+))?\\.? *(\\*/)?$",
   llvm::Regex::IgnoreCase),
   ShortNamespaceLines(Options.get("ShortNamespaceLines", 1U)),
-  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)) {}
+  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)),
+  AllowNoNamespaceComments(Options.get("AllowNoNamespaceComments", false)) 
{}
 
 void NamespaceCommentCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
   Options.store(Opts, "ShortNamespaceLines", ShortNamespaceLines);
   Options.store(Opts, "SpacesBeforeComments", SpacesBeforeComments);
+  Options.store(Opts, "AllowNoNamespaceComments", AllowNoNamespaceComments);
 }
 
 void NamespaceCommentCheck::registerMatchers(MatchFinder *Finder) {
@@ -141,6 +143,7 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 
   SourceRange OldCommentRange(AfterRBrace, AfterRBrace);
   std::string Message = "%0 not terminated with a closing comment";
+  bool hasComment = false;
 
   // Try to find existing namespace closing comment on the same line.
   if (Tok.is(tok::comment) && NextTokenIsOnSameLine) {
@@ -159,6 +162,8 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 return;
   }
 
+  hasComment = true;
+
   // Otherwise we need to fix the comment.
   NeedLineBreak = Comment.starts_with("/*");
   OldCommentRange =
@@ -184,6 +189,11 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
   ND->isAnonymousNamespace() ? "anonymous namespace"
  : ("namespace '" + *NamespaceNameAsWritten + 
"'");
 
+  // If no namespace comment is allowed
+  if(!hasComment && AllowNoNamespaceComments) {
+return;
+  }
+
   std::string Fix(SpacesBeforeComments, ' ');
   Fix.append("// namespace");
   if (!ND->isAnonymousNamespace())
diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
index 7607d37b1b2fd8..1ecb37fdd8d5da 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
@@ -34,6 +34,7 @@ class NamespaceCommentCheck : public ClangTidyCheck {
   llvm::Regex NamespaceCommentPattern;
   const unsigned ShortNamespaceLines;
   const unsigned SpacesBeforeComments;
+  const bool AllowNoNamespaceComments;
   llvm::SmallVector Ends;
 };
 
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index cc5f64a3f9fa32..915ceaf56c3cb7 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -287,6 +287,11 @@ Changes in existing checks
   ` check to
   report a location even when the member location is not valid.
 
+- Improved :doc:`google-readability-namespace-comments
+  ` check to
+  add an option ``AllowNoNamespaceComments``, that permits
+  omitting namespace comments entirely.
+
 - Improved :doc:`misc-definitions-in-headers
   ` check by rewording the
   diagnostic note that suggests adding ``inline``.
diff --git 
a/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst 
b/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst
index be90260be73af

[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-25 Thread Thorsten Klein via cfe-commits

thorsten-klein wrote:

@EugeneZelenko What do you think about some additional option 
`EnforceNoNamespaceComments` in order to enforce that no namespace comment is 
present?
If you like the idea, I could create some additional PR for introducing this 
option.

https://github.com/llvm/llvm-project/pull/124265
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] added option `google-readability-namespace-comments.AllowNoNamespaceComments` (PR #124265)

2025-01-25 Thread Thorsten Klein via cfe-commits

https://github.com/thorsten-klein updated 
https://github.com/llvm/llvm-project/pull/124265

>From 9f3bc5021e6da87fa9a8db60b513acb87ed6b02f Mon Sep 17 00:00:00 2001
From: "Klein, Thorsten (GDE-EDSI1)" 
Date: Fri, 24 Jan 2025 13:46:24 +0100
Subject: [PATCH] added option AllowNoNamespaceComments for
 google-readability-namespace-comments

new option AllowNoNamespaceComments added for
google-readability-namespace-comments.

When true, the check will allow that namespace comments are ommitted
entirely. The check only fails if a namespace comment is present but
does
   not match. Default is `false`.
---
 .../readability/NamespaceCommentCheck.cpp | 12 ++-
 .../readability/NamespaceCommentCheck.h   |  1 +
 clang-tools-extra/docs/ReleaseNotes.rst   |  5 +
 .../checks/llvm/namespace-comment.rst |  6 ++
 ...ility-namespace-comments-missing-c++17.cpp | 55 +++
 ...readability-namespace-comments-missing.cpp | 91 +++
 6 files changed, 169 insertions(+), 1 deletion(-)
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing-c++17.cpp
 create mode 100644 
clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments-missing.cpp

diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
index 120ec02e9ad7dc..3d24ed5337c124 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
@@ -28,11 +28,13 @@ NamespaceCommentCheck::NamespaceCommentCheck(StringRef Name,
   "namespace( +(((inline )|([a-zA-Z0-9_:]))+))?\\.? *(\\*/)?$",
   llvm::Regex::IgnoreCase),
   ShortNamespaceLines(Options.get("ShortNamespaceLines", 1U)),
-  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)) {}
+  SpacesBeforeComments(Options.get("SpacesBeforeComments", 1U)),
+  AllowNoNamespaceComments(Options.get("AllowNoNamespaceComments", false)) 
{}
 
 void NamespaceCommentCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
   Options.store(Opts, "ShortNamespaceLines", ShortNamespaceLines);
   Options.store(Opts, "SpacesBeforeComments", SpacesBeforeComments);
+  Options.store(Opts, "AllowNoNamespaceComments", AllowNoNamespaceComments);
 }
 
 void NamespaceCommentCheck::registerMatchers(MatchFinder *Finder) {
@@ -141,6 +143,7 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 
   SourceRange OldCommentRange(AfterRBrace, AfterRBrace);
   std::string Message = "%0 not terminated with a closing comment";
+  bool hasComment = false;
 
   // Try to find existing namespace closing comment on the same line.
   if (Tok.is(tok::comment) && NextTokenIsOnSameLine) {
@@ -159,6 +162,8 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
 return;
   }
 
+  hasComment = true;
+
   // Otherwise we need to fix the comment.
   NeedLineBreak = Comment.starts_with("/*");
   OldCommentRange =
@@ -184,6 +189,11 @@ void NamespaceCommentCheck::check(const 
MatchFinder::MatchResult &Result) {
   ND->isAnonymousNamespace() ? "anonymous namespace"
  : ("namespace '" + *NamespaceNameAsWritten + 
"'");
 
+  // If no namespace comment is allowed
+  if (!hasComment && AllowNoNamespaceComments) {
+return;
+  }
+
   std::string Fix(SpacesBeforeComments, ' ');
   Fix.append("// namespace");
   if (!ND->isAnonymousNamespace())
diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h 
b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
index 7607d37b1b2fd8..1ecb37fdd8d5da 100644
--- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.h
@@ -34,6 +34,7 @@ class NamespaceCommentCheck : public ClangTidyCheck {
   llvm::Regex NamespaceCommentPattern;
   const unsigned ShortNamespaceLines;
   const unsigned SpacesBeforeComments;
+  const bool AllowNoNamespaceComments;
   llvm::SmallVector Ends;
 };
 
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index cc5f64a3f9fa32..fe2323e0e76d58 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -287,6 +287,11 @@ Changes in existing checks
   ` check to
   report a location even when the member location is not valid.
 
+- Improved :doc:`google-readability-namespace-comments
+  ` check to add an
+  option `AllowNoNamespaceComments`, that permits omitting namespace comments
+  entirely.
+
 - Improved :doc:`misc-definitions-in-headers
   ` check by rewording the
   diagnostic note that suggests adding ``inline``.
diff --git 
a/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst 
b/clang-tools-extra/docs/clang-tidy/checks/llvm/namespace-comment.rst
index be90260be73af3