diff --git a/pmd-dist/pom.xml b/pmd-dist/pom.xml index c20a5e01f5..2cfa733b53 100644 --- a/pmd-dist/pom.xml +++ b/pmd-dist/pom.xml @@ -103,6 +103,11 @@ pmd-matlab ${project.version} + + net.sourceforge.pmd + pmd-perl + ${project.version} + net.sourceforge.pmd pmd-objectivec diff --git a/pmd-perl/pom.xml b/pmd-perl/pom.xml new file mode 100644 index 0000000000..4e3a5c1a42 --- /dev/null +++ b/pmd-perl/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + pmd-perl + PMD Perl + + + net.sourceforge.pmd + pmd + 5.5.0-SNAPSHOT + + + + ${basedir}/../pmd-core + + + + + + ${basedir}/src/main/resources + true + + + + + maven-resources-plugin + + false + + ${*} + + + + + + net.sourceforge.pmd + pmd-build + + + + org.apache.maven.plugins + maven-antrun-plugin + + + pmd-clean + clean + + + PMD specific tasks: cleaning generated markdown + + + + + + + + + run + + + + + + + + + net.sourceforge.pmd + pmd-core + + + org.mozilla + rhino + + + + net.sourceforge.pmd + pmd-test + test + + + diff --git a/pmd-perl/src/main/java/net/sourceforge/pmd/cpd/PerlLanguage.java b/pmd-perl/src/main/java/net/sourceforge/pmd/cpd/PerlLanguage.java new file mode 100644 index 0000000000..ff2863acaa --- /dev/null +++ b/pmd-perl/src/main/java/net/sourceforge/pmd/cpd/PerlLanguage.java @@ -0,0 +1,10 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ +package net.sourceforge.pmd.cpd; + +public class PerlLanguage extends AbstractLanguage { + public PerlLanguage() { + super("Perl", "perl", new PerlTokenizer(), ".pm", ".pl", ".t"); + } +} diff --git a/pmd-perl/src/main/java/net/sourceforge/pmd/cpd/PerlTokenizer.java b/pmd-perl/src/main/java/net/sourceforge/pmd/cpd/PerlTokenizer.java new file mode 100644 index 0000000000..2cd01e19f7 --- /dev/null +++ b/pmd-perl/src/main/java/net/sourceforge/pmd/cpd/PerlTokenizer.java @@ -0,0 +1,20 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ +package net.sourceforge.pmd.cpd; + +import java.util.ArrayList; + +public class PerlTokenizer extends AbstractTokenizer { + public PerlTokenizer() { + this.stringToken = new ArrayList<>(); + this.stringToken.add( "\'" ); + this.stringToken.add( "\"" ); + + this.ignorableCharacter = new ArrayList<>(); + + this.ignorableStmt = new ArrayList<>(); + + this.spanMultipleLinesString = true; + } +} \ No newline at end of file diff --git a/pmd-perl/src/main/resources/META-INF/services/net.sourceforge.pmd.cpd.Language b/pmd-perl/src/main/resources/META-INF/services/net.sourceforge.pmd.cpd.Language new file mode 100644 index 0000000000..40f6f3a026 --- /dev/null +++ b/pmd-perl/src/main/resources/META-INF/services/net.sourceforge.pmd.cpd.Language @@ -0,0 +1 @@ +net.sourceforge.pmd.cpd.PerlLanguage diff --git a/pmd-perl/src/site/markdown/index.md b/pmd-perl/src/site/markdown/index.md new file mode 100644 index 0000000000..251674558c --- /dev/null +++ b/pmd-perl/src/site/markdown/index.md @@ -0,0 +1,5 @@ +# PMD Perl + +Contains the PMD implementation to support the Perl programming language. + +Only very basic CPD support is implemented currently. diff --git a/pmd-perl/src/site/site.pre.xml b/pmd-perl/src/site/site.pre.xml new file mode 100644 index 0000000000..c8294e1b52 --- /dev/null +++ b/pmd-perl/src/site/site.pre.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index c3ca76f94b..772da1935e 100644 --- a/pom.xml +++ b/pom.xml @@ -932,6 +932,7 @@ pmd-jsp pmd-matlab pmd-objectivec + pmd-perl pmd-php pmd-plsql pmd-python