From c7c31be6cceb6fee6df5ab5741b54aa76b140642 Mon Sep 17 00:00:00 2001 From: LixonLookose <66419481+LixonLookose@users.noreply.github.com> Date: Thu, 4 Jun 2020 17:53:22 +0530 Subject: [PATCH 1/3] [c#] CPD suppression with comments doesn't work #2551 CPD Suppressions for c# fixed test added --- .../net/sourceforge/pmd/cpd/token/AntlrToken.java | 2 +- .../net/sourceforge/pmd/cpd/CsTokenizerTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/token/AntlrToken.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/token/AntlrToken.java index f28544d8d4..5d5521c51f 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/token/AntlrToken.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/token/AntlrToken.java @@ -77,7 +77,7 @@ public class AntlrToken implements GenericToken { } public boolean isHidden() { - return token.getChannel() == Lexer.HIDDEN; + return !isDefault(); } public boolean isDefault() { diff --git a/pmd-cs/src/test/java/net/sourceforge/pmd/cpd/CsTokenizerTest.java b/pmd-cs/src/test/java/net/sourceforge/pmd/cpd/CsTokenizerTest.java index 2f638af1af..7121f2131e 100644 --- a/pmd-cs/src/test/java/net/sourceforge/pmd/cpd/CsTokenizerTest.java +++ b/pmd-cs/src/test/java/net/sourceforge/pmd/cpd/CsTokenizerTest.java @@ -78,6 +78,18 @@ public class CsTokenizerTest { assertEquals(5, tokens.size()); } + @Test + public void testIgnoreBetweenSpecialComments() { + tokenizer + .tokenize( + toSourceCode("// CPD-OFF\n" + "class Foo {\n" + " void bar() {\n" + " int a = 1 >> 2; \n" + + " a += 1; \n" + " a++; \n" + " a /= 3e2; \n" + " float f = -3.1; \n" + + " f *= 2; \n" + " bool b = ! (f == 2.0 || f >= 1.0 && f <= 2.0) \n" + + " }\n" + "// CPD-ON\n" + "}"), + tokens); + assertEquals(2, tokens.size()); // "}" + EOF + } + @Test public void testCommentsIgnored3() { tokenizer.tokenize(toSourceCode("class Foo { /// class X /* aaa */ \n }"), tokens); From e2a526461a7c710119196c7860280dea16ff3913 Mon Sep 17 00:00:00 2001 From: LixonLookose <66419481+LixonLookose@users.noreply.github.com> Date: Fri, 5 Jun 2020 18:32:02 +0530 Subject: [PATCH 2/3] Updated documentation #2551 Updated cpd.md with "C#" to the list of languages, that support suppression. --- docs/pages/pmd/userdocs/cpd/cpd.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/pmd/userdocs/cpd/cpd.md b/docs/pages/pmd/userdocs/cpd/cpd.md index d56bfacf23..c97bbdfbfd 100644 --- a/docs/pages/pmd/userdocs/cpd/cpd.md +++ b/docs/pages/pmd/userdocs/cpd/cpd.md @@ -370,7 +370,7 @@ Here's a screenshot of CPD after running on the JDK 8 java.lang package: ## Suppression Arbitrary blocks of code can be ignored through comments on **Java**, **C/C++**, **Dart**, **Go**, **Javascript**, -**Kotlin**, **Lua**, **Matlab**, **Objective-C**, **PL/SQL**, **Python** and **Swift** by including the keywords `CPD-OFF` and `CPD-ON`. +**Kotlin**, **Lua**, **Matlab**, **Objective-C**, **PL/SQL**, **Python**, **Swift** and **C#** by including the keywords `CPD-OFF` and `CPD-ON`. ```java public Object someParameterizedFactoryMethod(int x) throws Exception { From 30ec2829bdef8c872116c5621c9082816a3e9d0e Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 12 Jun 2020 12:48:31 +0200 Subject: [PATCH 3/3] [doc] Update release notes, fixes #2551, refs #2567 --- docs/pages/release_notes.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index b8f8783555..7b7b78d674 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -16,9 +16,14 @@ This is a {{ site.pmd.release_type }} release. ### Fixed Issues +* c# + * [#2551](https://github.com/pmd/pmd/issues/2551): \[c#] CPD suppression with comments doesn't work + ### API Changes ### External Contributions +* [#2567](https://github.com/pmd/pmd/pull/2567): \[c#] Fix CPD suppression with comments doesn't work - [Lixon Lookose](https://github.com/LixonLookose) + {% endtocmaker %}