From 427194c6261573028aa5b5b861cc63f349bf9f5b Mon Sep 17 00:00:00 2001 From: Pascal Kesseli Date: Sun, 18 Jun 2017 21:11:19 +0100 Subject: [PATCH] Allow anonymous namespaces Only give warnings for namespaces with actual names, in accordance with https://github.com/diffblue/cbmc/commit/ad4137535398efcca8f3defa291d85c2baa9faa3. This enables the use of anonymous namespaces without warnings. Fixes: #932 --- regression/cpp-linter/namespace/main.cpp | 34 +++++++++++++++++++++++ regression/cpp-linter/namespace/test.desc | 11 ++++++++ scripts/cpplint.py | 19 +++++++++++-- 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 regression/cpp-linter/namespace/main.cpp create mode 100644 regression/cpp-linter/namespace/test.desc diff --git a/regression/cpp-linter/namespace/main.cpp b/regression/cpp-linter/namespace/main.cpp new file mode 100644 index 0000000000..f1c1ebd0a6 --- /dev/null +++ b/regression/cpp-linter/namespace/main.cpp @@ -0,0 +1,34 @@ +// Author: Pascal Kesseli, pascal.kesseli@diffblue.com + +namespace asdf {} + +namespace +asdf +{} + +namespace +asdf + {} + + namespace + + +asdf +{} + +namespace xyz = my::nested::namespaces; + + + +namespace {} + +namespace +{ } + +namespace +{ +} + + namespace +{ +} diff --git a/regression/cpp-linter/namespace/test.desc b/regression/cpp-linter/namespace/test.desc new file mode 100644 index 0000000000..06525f7f9a --- /dev/null +++ b/regression/cpp-linter/namespace/test.desc @@ -0,0 +1,11 @@ +CORE +main.cpp + +main\.cpp:3: Do not use namespaces \[readability/namespace\] \[4\] +main\.cpp:5: Do not use namespaces \[readability/namespace\] \[4\] +main\.cpp:9: Do not use namespaces \[readability/namespace\] \[4\] +main\.cpp:13: Do not use namespaces \[readability/namespace\] \[4\] +main\.cpp:19: Do not use namespaces \[readability/namespace\] \[4\] +^EXIT=1$ +^SIGNAL=0$ +-- diff --git a/scripts/cpplint.py b/scripts/cpplint.py index 6f8797445e..a41d26d772 100755 --- a/scripts/cpplint.py +++ b/scripts/cpplint.py @@ -6216,9 +6216,22 @@ def CheckItemIndentationInNamespace(filename, raw_lines_no_comments, linenum, def CheckNamespaceOrUsing(filename, clean_lines, linenum, error): line = clean_lines.elided[linenum] - if Match(r'^namespace(\s|$)', line): - error(filename, linenum, 'readability/namespace', 4, - 'Do not use namespaces') + if Match(r'^\s*namespace(\s+.*)?$', line): + num_lines=len(clean_lines.elided) + current_linenum=linenum + while current_linenum