From adb38ecbbc48628a9d2bb29368ddc4b0875dca38 Mon Sep 17 00:00:00 2001 From: Maikel Steneker Date: Fri, 6 Mar 2020 12:52:46 +0100 Subject: [PATCH] [cs] CPD: Fixed CPD --ignore-usings option --- .../java/net/sourceforge/pmd/cpd/CsTokenizer.java | 12 +++++++----- .../net/sourceforge/pmd/cpd/CsTokenizerTest.java | 8 ++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java b/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java index 49229f3170..881f0ce49d 100644 --- a/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java +++ b/pmd-cs/src/main/java/net/sourceforge/pmd/cpd/CsTokenizer.java @@ -75,11 +75,13 @@ public class CsTokenizer extends AntlrTokenizer { } private void skipUsingDirectives(final AntlrToken currentToken, final Iterable remainingTokens) { - final int type = currentToken.getType(); - if (type == CSharpLexer.USING && isUsingDirective(remainingTokens)) { - discardingUsings = true; - } else if (type == CSharpLexer.SEMICOLON) { - discardingUsings = false; + if (ignoreUsings) { + final int type = currentToken.getType(); + if (type == CSharpLexer.USING && isUsingDirective(remainingTokens)) { + discardingUsings = true; + } else if (type == CSharpLexer.SEMICOLON) { + discardingUsings = false; + } } } 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 ed87562537..823758a760 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 @@ -116,6 +116,14 @@ public class CsTokenizerTest { assertEquals(8, tokens.getTokens().get(14).getBeginLine()); } + @Test + public void testDoNotIgnoreUsingDirectives() { + tokenizer.setIgnoreUsings(false); + tokenizer.tokenize(toSourceCode("using System.Text;\n"), tokens); + assertEquals(6, tokens.size()); + assertEquals("using", tokens.getTokens().get(0).toString()); + } + @Test public void testIgnoreUsingDirectives() { tokenizer.setIgnoreUsings(true);