From 88634a220a2a1d8bcb12ee674e242e9592355aeb Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sun, 25 Oct 2015 19:10:18 +0100 Subject: [PATCH] Add "--ignore-usings" parameter to CPD commandline for C# --- .../sourceforge/pmd/cpd/CPDConfiguration.java | 16 ++++++++++++++++ .../java/net/sourceforge/pmd/cpd/Tokenizer.java | 7 +++++++ .../net/sourceforge/pmd/cpd/CsTokenizer.java | 2 -- src/site/markdown/overview/changelog.md | 2 ++ src/site/markdown/usage/cpd-usage.md | 6 ++++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/CPDConfiguration.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/CPDConfiguration.java index 91c4564e96..f9c502b8c7 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/CPDConfiguration.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/CPDConfiguration.java @@ -67,6 +67,9 @@ public class CPDConfiguration extends AbstractConfiguration { @Parameter(names = "--ignore-annotations", description = "Ignore language annotations when comparing text", required = false) private boolean ignoreAnnotations; + @Parameter(names = "--ignore-usings", description = "Ignore using directives in C#", required = false) + private boolean ignoreUsings; + @Parameter(names = "--skip-lexical-errors", description = "Skip files which can't be tokenized due to invalid characters instead of aborting CPD", required = false) private boolean skipLexicalErrors = false; @@ -224,6 +227,11 @@ public class CPDConfiguration extends AbstractConfiguration { } else { properties.remove(Tokenizer.IGNORE_ANNOTATIONS); } + if (configuration.isIgnoreUsings()) { + properties.setProperty(Tokenizer.IGNORE_USINGS, "true"); + } else { + properties.remove(Tokenizer.IGNORE_USINGS); + } properties.setProperty(Tokenizer.OPTION_SKIP_BLOCKS, Boolean.toString(!configuration.isNoSkipBlocks())); properties.setProperty(Tokenizer.OPTION_SKIP_BLOCKS_PATTERN, configuration.getSkipBlocksPattern()); configuration.getLanguage().setProperties(properties); @@ -335,6 +343,14 @@ public class CPDConfiguration extends AbstractConfiguration { this.ignoreAnnotations = ignoreAnnotations; } + public boolean isIgnoreUsings() { + return ignoreUsings; + } + + public void setIgnoreUsings(boolean ignoreUsings) { + this.ignoreUsings = ignoreUsings; + } + public boolean isSkipLexicalErrors() { return skipLexicalErrors; } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/Tokenizer.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/Tokenizer.java index 132886c266..8b19132613 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/Tokenizer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/Tokenizer.java @@ -9,6 +9,13 @@ public interface Tokenizer { String IGNORE_LITERALS = "ignore_literals"; String IGNORE_IDENTIFIERS = "ignore_identifiers"; String IGNORE_ANNOTATIONS = "ignore_annotations"; + + /** + * Ignore using directives in C#. + * The default value is false. + */ + String IGNORE_USINGS = "ignore_usings"; + /** * Enables or disabled skipping of blocks like a pre-processor. * It is a boolean property. 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 ae68ce1a0d..c9dcce4a4e 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 @@ -20,8 +20,6 @@ import org.apache.commons.lang3.RandomStringUtils; */ public class CsTokenizer implements Tokenizer { - public static final String IGNORE_USINGS = "ignore_usings"; - private boolean ignoreUsings = false; public void setProperties(Properties properties) { diff --git a/src/site/markdown/overview/changelog.md b/src/site/markdown/overview/changelog.md index d622b84123..5758cc4618 100644 --- a/src/site/markdown/overview/changelog.md +++ b/src/site/markdown/overview/changelog.md @@ -6,6 +6,8 @@ **Feature Request and Improvements:** +* CPD: New command line parameter `--ignore-usings`: Ignore using directives in C# when comparing text. + **New/Modified/Deprecated Rules:** **Pull Requests:** diff --git a/src/site/markdown/usage/cpd-usage.md b/src/site/markdown/usage/cpd-usage.md index 5c4da7554f..8270fe3ee4 100644 --- a/src/site/markdown/usage/cpd-usage.md +++ b/src/site/markdown/usage/cpd-usage.md @@ -147,6 +147,12 @@ The options "minimum-tokens" and "files" are the two required options; there are no java + + --ignore-usings + Ignore using directives in C# when comparing text + no + C# + --no-skip-blocks Do not skip code blocks marked with --skip-blocks-pattern (e.g. #if 0 until #endif)