diff --git a/.travis/pmd-code-api.sh b/.travis/pmd-code-api.sh
index 7a35523941..5f30afb09d 100644
--- a/.travis/pmd-code-api.sh
+++ b/.travis/pmd-code-api.sh
@@ -48,7 +48,7 @@ function pmd_code_uploadJavadoc() {
log_debug "$FUNCNAME pmdVersion=$pmdVersion basePath=$basePath"
- for i in ${basePath}/*/target/*-javadoc.jar; do
+ for i in ${basePath}/*/target/*-javadoc.jar */*/target/*-javadoc.jar; do
pmd_code_uploadJavadocModule "$pmdVersion" "$i"
done
diff --git a/do-release.sh b/do-release.sh
index 92a5ec8079..128b65b129 100755
--- a/do-release.sh
+++ b/do-release.sh
@@ -88,7 +88,7 @@ echo "* Update **pmd-apex/src/main/resources/rulesets/apex/quickstart.xml** an
echo " **pmd-java/src/main/resources/rulesets/java/quickstart.xml** with the new rules."
echo
echo "* Update **docs/pages/next_major_development.md** with the API changes for"
-echo " the new release based on the release notes"
+echo " the new release based on the release notes. Also add any deprecated rules to the list."
echo
echo "* Update **../pmd.github.io/_config.yml** to mention the new release"
echo
diff --git a/docs/_plugins/javadoc_tag.rb b/docs/_plugins/javadoc_tag.rb
index 59fba20088..0182729dc5 100644
--- a/docs/_plugins/javadoc_tag.rb
+++ b/docs/_plugins/javadoc_tag.rb
@@ -226,6 +226,11 @@ class JavadocTag < Liquid::Tag
def self.fqcn_type(artifact_id, fqcn)
artifact_dir = File.join(BASE_PMD_DIR, artifact_id)
+ # special case for scala as we have a different directory structure there
+ if artifact_id =~ /scala/
+ artifact_dir = File.join(BASE_PMD_DIR, "pmd-scala-modules/pmd-scala-common")
+ end
+
src_dirs = [
File.join(artifact_dir, "src", "main", "java"),
File.join(artifact_dir, "target", "generated-sources", "javacc")
diff --git a/docs/_plugins/jdoc_namespace_tag.rb b/docs/_plugins/jdoc_namespace_tag.rb
index 6fe9f8bf24..01373ad410 100644
--- a/docs/_plugins/jdoc_namespace_tag.rb
+++ b/docs/_plugins/jdoc_namespace_tag.rb
@@ -86,9 +86,14 @@ class JDocNamespaceDeclaration < Liquid::Tag
expanded_fqcn += "." + fqcn_suffix
end
+ artifactId = resolved_nspace.first
+
+ if artifactId =~ /scala/
+ artifactId = "pmd-scala_2.13"
+ end
# Return the resolved artifactId + the expanded FQCN
- [resolved_nspace.first, expanded_fqcn]
+ [artifactId, expanded_fqcn]
end
private
diff --git a/docs/pages/next_major_development.md b/docs/pages/next_major_development.md
index 3439ad0b3c..f51aaea6e3 100644
--- a/docs/pages/next_major_development.md
+++ b/docs/pages/next_major_development.md
@@ -4,17 +4,69 @@ permalink: pmd_next_major_development.html
keywords: changelog, release notes, deprecation, api changes
---
-We're excited to bring you the next major version of PMD! Here are the major features and changes we're working on.
+We're excited to bring you the next major version of PMD!
+Here is a summary of what is planned for PMD 7.
+
To give us feedback or to suggest a new feature, drop us a line on [Gitter](https://gitter.im/pmd/pmd)!
-## New Features
+## Summary
-TODO
+### New Logo
-## Java grammar changes
+We decided it's time to have a modernized logo and get rid of the gun. This allows to include
+the logo in anywhere without offense.
-{% include note.html content="Current plans are listed [here](https://github.com/pmd/pmd/labels/in%3Aast) and in particular [here](https://github.com/pmd/pmd/issues/1019)" %}
+The current tasks are listed here: [Integrate new PMD logo #1931](https://github.com/pmd/pmd/issues/1931)
+### API
+
+The API of PMD has been growing over the years and needs to be cleaned up. The goal is, to
+have a clear separation between a well-defined API and the implementation, which is internal.
+This should help us in future development. This however entails some incompatibilities and
+deprecations, see also the sections [New API support guidelines](#new-api-support-guidelines) and
+[Planned API removals](#planned-api-removals] below.
+
+### Full Antlr Support
+
+PMD 6 only supports JavaCC based grammars, but with [Antlr](https://www.antlr.org/) parsers
+can be generated as well. PMD 7 adds full support for grammars written in Antlr, which allows
+to leverage existing grammars.
+
+The current tasks are listed here: [Support for ANTLR based grammars with Swift as an example language #2499](https://github.com/pmd/pmd/issues/2499)
+
+### Documentation
+
+We have quite some ideas how we want to improve the documentation. The goal is, that the documentation is
+up to date and nearly complete. One big task is, how the built-in rules are presented, so that users
+can easier see, what exactly is available and decide, which rules are useful for the project at hand.
+
+The current tasks are listed here: [Documentations improvements tracker #1139](https://github.com/pmd/pmd/issues/1139)
+
+### XPath
+
+PMD 6 supports XPath 1.0 via the Jaxen library. This library is old and unmaintained creating some problems
+(one of which is duplicated classes in the package `org.w3c.dom` which is a Java API actually).
+Therefore XPath 1.0 support will be dropped and we upgrade our XPath 2.0 implementation with Saxon moving
+on to Saxon HE. This will eventually add support in PMD for XPath 3.1.
+
+The current tasks are listed here: [XPath Improvements for PMD 7 #2523](https://github.com/pmd/pmd/issues/2523)
+
+### Java
+
+Like the main PMD API, the Java AST has been growing over time and the grammar doesn't support
+all edge cases (e.g. annotation are not supported everywhere). The goal is to simplify the AST by reducing
+unnecessary nodes and abstractions and fix the parsing issues.
+This helps in the end to provide a better type resolution implementation, but changing the AST is a breaking
+API change.
+
+Some first results of the Java AST changes are for now documented in the Wiki:
+[Java clean changes](https://github.com/pmd/pmd/wiki/Java_clean_changes).
+
+### Miscellaneous
+
+There are also some small improvements, refactoring and internal tasks that are planned for PMD 7.
+
+The current tasks are listed here: [PMD 7 Miscellaneous Tasks #2524](https://github.com/pmd/pmd/issues/2524)
## New API support guidelines
@@ -878,14 +930,18 @@ large projects, with many duplications, it was causing `OutOfMemoryError`s (see
and {% rule "java/bestpractices/PositionLiteralsFirstInCaseInsensitiveComparisons" %} (ruleset `java-bestpractices`)
have been deprecated in favor of the new rule {% rule "java/bestpractices/LiteralsFirstInComparisons" %}.
+* The Java rule [`AvoidFinalLocalVariable`](https://pmd.github.io/pmd-6.16.0/pmd_rules_java_codestyle.html#avoidfinallocalvariable) (`java-codestyle`) has been deprecated
+ and will be removed with PMD 7.0.0. The rule is controversial and also contradicts other existing
+ rules such as [`LocalVariableCouldBeFinal`](https://pmd.github.io/pmd-6.16.0/pmd_rules_java_codestyle.html#localvariablecouldbefinal). If the goal is to avoid defining
+ constants in a scope smaller than the class, then the rule [`AvoidDuplicateLiterals`](https://pmd.github.io/pmd-6.16.0/pmd_rules_java_errorprone.html#avoidduplicateliterals)
+ should be used instead.
+* The Apex rule [`VariableNamingConventions`](https://pmd.github.io/pmd-6.15.0/pmd_rules_apex_codestyle.html#variablenamingconventions) (`apex-codestyle`) has been deprecated and
+ will be removed with PMD 7.0.0. The rule is replaced by the more general rules
+ [`FieldNamingConventions`](https://pmd.github.io/pmd-6.15.0/pmd_rules_apex_codestyle.html#fieldnamingconventions),
+ [`FormalParameterNamingConventions`](https://pmd.github.io/pmd-6.15.0/pmd_rules_apex_codestyle.html#formalparameternamingconventions),
+ [`LocalVariableNamingConventions`](https://pmd.github.io/pmd-6.15.0/pmd_rules_apex_codestyle.html#localvariablenamingconventions), and
+ [`PropertyNamingConventions`](https://pmd.github.io/pmd-6.15.0/pmd_rules_apex_codestyle.html#propertynamingconventions).
-
-
-
-
-
-
-
-
-
+* The Java rule [`LoggerIsNotStaticFinal`](https://pmd.github.io/pmd-6.15.0/pmd_rules_java_errorprone.html#loggerisnotstaticfinal) (`java-errorprone`) has been deprecated
+ and will be removed with PMD 7.0.0. The rule is replaced by [`ProperLogger`](https://pmd.github.io/pmd-6.15.0/pmd_rules_java_errorprone.html#properlogger).
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 {
diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md
index dc7465e6fb..3cf2442fcb 100644
--- a/docs/pages/release_notes.md
+++ b/docs/pages/release_notes.md
@@ -14,14 +14,58 @@ This is a {{ site.pmd.release_type }} release.
### New and noteworthy
+#### Scala cross compilation
+
+Up until now the PMD Scala module has been compiled against scala 2.13 only by default.
+However, this makes it impossible to use pmd as a library in scala projects,
+that use scala 2.12, e.g. in sbt plugins. Therefore PMD now provides cross compiled pmd-scala
+modules for both versions: **scala 2.12** and **scala 2.13**.
+
+The new modules have new maven artifactIds. The old artifactId `net.sourceforge.pmd:pmd-scala:{{ site.pmd.version }}`
+is still available, but is deprecated from now on. It has been demoted to be just a delegation to the new
+`pmd-scala_2.13` module and will be removed eventually.
+
+The coordinates for the new modules are:
+
+```
+
+ net.sourceforge.pmd
+ pmd-scala_2.12
+ {{ site.pmd.version }}
+
+
+
+ net.sourceforge.pmd
+ pmd-scala_2.13
+ {{ site.pmd.version }}
+
+```
+
+The command line version of PMD continues to use **scala 2.13**.
+
+#### New Rules
+
+* The new Java Rule {% rule "java/codestyle/UnnecessaryCast" %} (`java-codestyle`)
+ finds casts that are unnecessary while accessing collection elements.
+
### Fixed Issues
+* c#
+ * [#2551](https://github.com/pmd/pmd/issues/2551): \[c#] CPD suppression with comments doesn't work
* java-design
* [#2563](https://github.com/pmd/pmd/pull/2563): \[java] UselessOverridingMethod false negative with already public methods
+* scala
+ * [#2547](https://github.com/pmd/pmd/pull/2547): \[scala] Add cross compilation for scala 2.12 and 2.13
### API Changes
+* The maven module `net.sourceforge.pmd:pmd-scala` is deprecated. Use `net.sourceforge.pmd:pmd-scala_2.13`
+ or `net.sourceforge.pmd:pmd-scala_2.12` instead.
+
### External Contributions
+* [#2547](https://github.com/pmd/pmd/pull/2547): \[scala] Add cross compilation for scala 2.12 and 2.13 - [João Ferreira](https://github.com/jtjeferreira)
+* [#2567](https://github.com/pmd/pmd/pull/2567): \[c#] Fix CPD suppression with comments doesn't work - [Lixon Lookose](https://github.com/LixonLookose)
+
{% endtocmaker %}
diff --git a/pmd-apex-jorje/pom.xml b/pmd-apex-jorje/pom.xml
index fa0109fc90..0e384db63b 100644
--- a/pmd-apex-jorje/pom.xml
+++ b/pmd-apex-jorje/pom.xml
@@ -9,6 +9,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-apex/pom.xml b/pmd-apex/pom.xml
index 076c33e278..0465942f81 100644
--- a/pmd-apex/pom.xml
+++ b/pmd-apex/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-core/pom.xml b/pmd-core/pom.xml
index aff6953980..12e7b2bb8b 100644
--- a/pmd-core/pom.xml
+++ b/pmd-core/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
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-core/src/main/resources/rulesets/releases/6250.xml b/pmd-core/src/main/resources/rulesets/releases/6250.xml
new file mode 100644
index 0000000000..db652d271d
--- /dev/null
+++ b/pmd-core/src/main/resources/rulesets/releases/6250.xml
@@ -0,0 +1,13 @@
+
+
+
+
+This ruleset contains links to rules that are new in PMD v6.25.0
+
+
+
+
+
diff --git a/pmd-cpp/pom.xml b/pmd-cpp/pom.xml
index 8a0d19628e..2277cffbab 100644
--- a/pmd-cpp/pom.xml
+++ b/pmd-cpp/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-cs/pom.xml b/pmd-cs/pom.xml
index f081c317c1..f156ff282f 100644
--- a/pmd-cs/pom.xml
+++ b/pmd-cs/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
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);
diff --git a/pmd-dart/pom.xml b/pmd-dart/pom.xml
index a6c27528d4..74e75d3dd1 100644
--- a/pmd-dart/pom.xml
+++ b/pmd-dart/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-dist/pom.xml b/pmd-dist/pom.xml
index e5f04185d4..7658b09f6a 100644
--- a/pmd-dist/pom.xml
+++ b/pmd-dist/pom.xml
@@ -9,6 +9,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
@@ -199,7 +200,7 @@
net.sourceforge.pmd
- pmd-scala
+ pmd-scala_2.13${project.version}
diff --git a/pmd-doc/pom.xml b/pmd-doc/pom.xml
index 58cc0318be..1b4b2dc7c5 100644
--- a/pmd-doc/pom.xml
+++ b/pmd-doc/pom.xml
@@ -9,6 +9,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-fortran/pom.xml b/pmd-fortran/pom.xml
index 0d0d496a62..c98a55d035 100644
--- a/pmd-fortran/pom.xml
+++ b/pmd-fortran/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-go/pom.xml b/pmd-go/pom.xml
index 961f83682d..f0f759cfe6 100644
--- a/pmd-go/pom.xml
+++ b/pmd-go/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-groovy/pom.xml b/pmd-groovy/pom.xml
index fc852c98aa..cbc765b1b4 100644
--- a/pmd-groovy/pom.xml
+++ b/pmd-groovy/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-java/pom.xml b/pmd-java/pom.xml
index 95145f93c6..4018319dcb 100644
--- a/pmd-java/pom.xml
+++ b/pmd-java/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/migrating/UnnecessaryCastRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryCastRule.java
similarity index 54%
rename from pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/migrating/UnnecessaryCastRule.java
rename to pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryCastRule.java
index dab321faab..c6d97db928 100644
--- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/migrating/UnnecessaryCastRule.java
+++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryCastRule.java
@@ -1,11 +1,12 @@
-/**
+/*
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
-package net.sourceforge.pmd.lang.java.rule.migrating;
+package net.sourceforge.pmd.lang.java.rule.codestyle;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import net.sourceforge.pmd.lang.ast.Node;
@@ -13,10 +14,12 @@ import net.sourceforge.pmd.lang.java.ast.ASTCastExpression;
import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceType;
import net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration;
import net.sourceforge.pmd.lang.java.ast.ASTLocalVariableDeclaration;
-import net.sourceforge.pmd.lang.java.ast.ASTName;
+import net.sourceforge.pmd.lang.java.ast.ASTTypeArgument;
import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId;
import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule;
+import net.sourceforge.pmd.lang.java.typeresolution.TypeHelper;
import net.sourceforge.pmd.lang.symboltable.NameOccurrence;
+import net.sourceforge.pmd.lang.symboltable.ScopedNode;
/**
* This is a rule, that detects unnecessary casts when using Java 1.5 generics
@@ -34,7 +37,6 @@ import net.sourceforge.pmd.lang.symboltable.NameOccurrence;
* "http://sourceforge.net/p/pmd/discussion/188192/thread/276fd6f0">Java 5
* rules: Unnecessary casts/Iterators
*/
-// TODO This is not referenced by any RuleSet?
public class UnnecessaryCastRule extends AbstractJavaRule {
private static Set implClassNames = new HashSet<>();
@@ -62,36 +64,67 @@ public class UnnecessaryCastRule extends AbstractJavaRule {
implClassNames.add("java.util.TreeSet");
implClassNames.add("java.util.TreeMap");
implClassNames.add("java.util.Vector");
+ implClassNames.add("Iterator");
+ implClassNames.add("java.util.Iterator");
}
@Override
public Object visit(ASTLocalVariableDeclaration node, Object data) {
- return process(node, data);
+ process(node, data);
+ return super.visit(node, data);
}
@Override
public Object visit(ASTFieldDeclaration node, Object data) {
- return process(node, data);
+ process(node, data);
+ return super.visit(node, data);
}
- private Object process(Node node, Object data) {
- ASTClassOrInterfaceType cit = node.getFirstDescendantOfType(ASTClassOrInterfaceType.class);
- if (cit == null || !implClassNames.contains(cit.getImage())) {
- return data;
+ private void process(Node node, Object data) {
+ ASTClassOrInterfaceType collectionType = node.getFirstDescendantOfType(ASTClassOrInterfaceType.class);
+ if (collectionType == null || !implClassNames.contains(collectionType.getImage())) {
+ return;
}
- cit = cit.getFirstDescendantOfType(ASTClassOrInterfaceType.class);
+ ASTClassOrInterfaceType cit = getCollectionItemType(collectionType);
if (cit == null) {
- return data;
+ return;
}
ASTVariableDeclaratorId decl = node.getFirstDescendantOfType(ASTVariableDeclaratorId.class);
List usages = decl.getUsages();
for (NameOccurrence no : usages) {
- ASTName name = (ASTName) no.getLocation();
- Node n = name.getParent().getParent().getParent();
- if (n instanceof ASTCastExpression) {
- addViolation(data, n);
+ ASTCastExpression castExpression = findCastExpression(no.getLocation());
+ if (castExpression != null) {
+ ASTClassOrInterfaceType castTarget = castExpression.getFirstDescendantOfType(ASTClassOrInterfaceType.class);
+ if (castTarget != null
+ && cit.getImage().equals(castTarget.getImage())
+ && !castTarget.hasDescendantOfType(ASTTypeArgument.class)) {
+ addViolation(data, castExpression);
+ }
}
}
+ }
+
+ private ASTClassOrInterfaceType getCollectionItemType(ASTClassOrInterfaceType collectionType) {
+ if (TypeHelper.isA(collectionType, Map.class)) {
+ List types = collectionType.findDescendantsOfType(ASTClassOrInterfaceType.class);
+ if (types.size() >= 2) {
+ return types.get(1); // the value type of the map
+ }
+ } else {
+ return collectionType.getFirstDescendantOfType(ASTClassOrInterfaceType.class);
+ }
+ return null;
+ }
+
+ private ASTCastExpression findCastExpression(ScopedNode usage) {
+ Node n = usage.getNthParent(2);
+ if (n instanceof ASTCastExpression) {
+ return (ASTCastExpression) n;
+ }
+ n = n.getParent();
+ if (n instanceof ASTCastExpression) {
+ return (ASTCastExpression) n;
+ }
return null;
}
}
diff --git a/pmd-java/src/main/resources/category/java/codestyle.xml b/pmd-java/src/main/resources/category/java/codestyle.xml
index e8995ca3a9..41d06456bd 100644
--- a/pmd-java/src/main/resources/category/java/codestyle.xml
+++ b/pmd-java/src/main/resources/category/java/codestyle.xml
@@ -1855,6 +1855,30 @@ public class Foo {
+
+
+This rule detects when a cast is unnecessary while accessing collection elements. This rule is mostly useful
+for old java code before generics where introduced with java 1.5.
+
+ 3
+
+ stringList = Arrays.asList("a", "b");
+ String element = (String) stringList.get(0); // this cast is unnecessary
+ String element2 = stringList.get(0);
+ }
+}
+]]>
+
+ -->
+
diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryCastTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryCastTest.java
new file mode 100644
index 0000000000..992a7e91ac
--- /dev/null
+++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryCastTest.java
@@ -0,0 +1,12 @@
+/*
+ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
+ */
+
+
+package net.sourceforge.pmd.lang.java.rule.codestyle;
+
+import net.sourceforge.pmd.testframework.PmdRuleTst;
+
+public class UnnecessaryCastTest extends PmdRuleTst {
+ // no additional unit tests
+}
diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryCast.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryCast.xml
new file mode 100644
index 0000000000..e3403cb86d
--- /dev/null
+++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryCast.xml
@@ -0,0 +1,157 @@
+
+
+
+
+ Basic Violations
+ 5
+ 12,15,18,23,28
+ map = new HashMap<>();
+
+ public void localVars() {
+ List stringList = Arrays.asList("a");
+ String element = (String) stringList.get(0);
+
+ List doubleList = new ArrayList<>();
+ Double number = (Double) doubleList.get(0);
+
+ Map stringMap = new HashMap<>();
+ String mapData = (String) stringMap.get("a");
+ }
+
+ public void fields() {
+ map.put(1, "test");
+ String val = (String) map.get(1);
+ }
+
+ public void fields2() {
+ this.map.put(1, "test");
+ String val = (String) this.map.get(1);
+ }
+}
+ ]]>
+
+
+
+ Without casts there should be no violation
+ 0
+ map = new HashMap<>();
+
+ public void localVars() {
+ List stringList = Arrays.asList("a");
+ String element = stringList.get(0);
+
+ List doubleList = new ArrayList<>();
+ Double number = doubleList.get(0);
+ }
+
+ public void fields() {
+ map.put(1, "test");
+ String val = map.get(1);
+ }
+
+ public void fields2() {
+ this.map.put(1, "test");
+ String val = this.map.get(1);
+ }
+}
+ ]]>
+
+
+
+ Unnecessary casts with iterator
+ 2
+ 10,17
+ stringList = Arrays.asList("a");
+ Iterator stringIt = stringList.iterator();
+ while (stringIt.hasNext()) {
+ String element = (String) stringIt.next();
+ String element2 = stringIt.next();
+ }
+
+ List doubleList = new ArrayList<>();
+ Iterator doubleIt = doubleList.iterator();
+ while (doubleIt.hasNext()) {
+ Double number = (Double) doubleIt.next();
+ Double number2 = doubleIt.next();
+ }
+ }
+}
+ ]]>
+
+
+
+ Avoid cast false-positives
+ 0
+ numbers = Arrays.asList(1, 2, 3);
+ Integer myInt = (Integer) numbers.get(0);
+
+ List
+
+
+
+ Avoid clone false-positive
+ 0
+ strings = new ArrayList<>();
+ List copy = (List) strings.clone();
+ }
+}
+ ]]>
+
+
+
+ Necessary Map Cast (nested generics) false-positive
+ 0
+ , Map> resourceCaches = new ConcurrentHashMap<>(4);
+
+ @SuppressWarnings("unchecked")
+ public Map getResourceCache(Class valueType) {
+ return (Map) this.resourceCaches.computeIfAbsent(valueType, key -> new ConcurrentHashMap<>());
+ }
+}
+ ]]>
+
+
diff --git a/pmd-java8/pom.xml b/pmd-java8/pom.xml
index 6b8fff1aa0..ed969291c5 100644
--- a/pmd-java8/pom.xml
+++ b/pmd-java8/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-javascript/pom.xml b/pmd-javascript/pom.xml
index 3dfbaf1582..94cf49a18d 100644
--- a/pmd-javascript/pom.xml
+++ b/pmd-javascript/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-jsp/pom.xml b/pmd-jsp/pom.xml
index fc134ffca6..102ac311f4 100644
--- a/pmd-jsp/pom.xml
+++ b/pmd-jsp/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-kotlin/pom.xml b/pmd-kotlin/pom.xml
index e8076b3573..77db6c864e 100644
--- a/pmd-kotlin/pom.xml
+++ b/pmd-kotlin/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-lang-test/pom.xml b/pmd-lang-test/pom.xml
index 4606693a07..084e37d9dc 100644
--- a/pmd-lang-test/pom.xml
+++ b/pmd-lang-test/pom.xml
@@ -13,6 +13,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseTreeDumpTest.kt b/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseTreeDumpTest.kt
index 4e52a66651..4fab7ba383 100644
--- a/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseTreeDumpTest.kt
+++ b/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/BaseTreeDumpTest.kt
@@ -51,7 +51,7 @@ abstract class BaseTreeDumpTest(
// Outputting a path makes for better error messages
private val srcTestResources = let {
- // this is set from maven surefire
+ // this is set from maven surefire - see parent pom.xml configuration for surefire (systemPropertyVariables)
System.getProperty("mvn.project.src.test.resources")
?.let { Paths.get(it).toAbsolutePath() }
// that's for when the tests are run inside the IDE
diff --git a/pmd-lua/pom.xml b/pmd-lua/pom.xml
index 604c7970cb..3ca38f938e 100644
--- a/pmd-lua/pom.xml
+++ b/pmd-lua/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-matlab/pom.xml b/pmd-matlab/pom.xml
index 1c0107057b..44bab0225c 100644
--- a/pmd-matlab/pom.xml
+++ b/pmd-matlab/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-modelica/pom.xml b/pmd-modelica/pom.xml
index d0ced19ed4..a7ca75a5b1 100644
--- a/pmd-modelica/pom.xml
+++ b/pmd-modelica/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-objectivec/pom.xml b/pmd-objectivec/pom.xml
index 113955cbce..464c81642d 100644
--- a/pmd-objectivec/pom.xml
+++ b/pmd-objectivec/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-perl/pom.xml b/pmd-perl/pom.xml
index c85bf7bc0c..9907e4c1b1 100644
--- a/pmd-perl/pom.xml
+++ b/pmd-perl/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-php/pom.xml b/pmd-php/pom.xml
index fb5e9ab096..33bec7c3d7 100644
--- a/pmd-php/pom.xml
+++ b/pmd-php/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-plsql/pom.xml b/pmd-plsql/pom.xml
index e3f06fe9db..111f4e5f20 100644
--- a/pmd-plsql/pom.xml
+++ b/pmd-plsql/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-python/pom.xml b/pmd-python/pom.xml
index 690ee3c592..4ef39d1ddf 100644
--- a/pmd-python/pom.xml
+++ b/pmd-python/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-ruby/pom.xml b/pmd-ruby/pom.xml
index e79369db0d..6f7f54eff3 100644
--- a/pmd-ruby/pom.xml
+++ b/pmd-ruby/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-scala-modules/pmd-scala-common/README.md b/pmd-scala-modules/pmd-scala-common/README.md
new file mode 100644
index 0000000000..19624d2dec
--- /dev/null
+++ b/pmd-scala-modules/pmd-scala-common/README.md
@@ -0,0 +1,8 @@
+# pmd-scala-common
+
+Contains shared code for the pmd-scala_2.12 and pmd-scala_2.13 modules.
+
+It is not a module in itself, since it needs to be used while cross-compiling
+with a specific scala version.
+
+It should be source compatible with the oldest scala version we are supporting.
diff --git a/pmd-scala-modules/pmd-scala-common/pom.xml b/pmd-scala-modules/pmd-scala-common/pom.xml
new file mode 100644
index 0000000000..62f704414d
--- /dev/null
+++ b/pmd-scala-modules/pmd-scala-common/pom.xml
@@ -0,0 +1,129 @@
+
+
+ 4.0.0
+ PMD Scala Common Source and Settings
+ pmd-scala-common
+ pom
+
+
+ net.sourceforge.pmd
+ pmd
+ 6.25.0-SNAPSHOT
+ ../..
+
+
+
+ 4.2.0
+
+
+
+ ../pmd-scala-common/src/main/java
+
+
+ ../pmd-scala-common/src/main/resources
+
+
+ ../pmd-scala-common/src/test/java
+
+
+ ../pmd-scala-common/src/test/resources
+
+
+
+
+
+
+ maven-resources-plugin
+
+ false
+
+ ${*}
+
+
+
+
+
+ kotlin-maven-plugin
+ org.jetbrains.kotlin
+
+
+ compile
+
+ compile
+
+
+
+ ../pmd-scala-common/src/main/kotlin
+ ../pmd-scala-common/src/main/java
+
+
+
+
+ test-compile
+
+ test-compile
+
+
+
+ ../pmd-scala-common/src/test/kotlin
+ ../pmd-scala-common/src/test/java
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+
+ ${project.basedir}/../../pmd-lang-test/target/dokka/pmd-lang-test
+ ../../pmd-lang-test/${project.version}
+
+
+ ${project.basedir}/../../pmd-test/target/apidocs
+ ../../pmd-test/${project.version}
+
+
+
+ ${project.basedir}/../../pmd-core/target/apidocs
+ ../../pmd-core/${project.version}
+
+
+
+
+
+
+
+
+
+
+ net.sourceforge.pmd
+ pmd-core
+
+
+
+ junit
+ junit
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+ test
+
+
+ net.sourceforge.pmd
+ pmd-test
+ test
+
+
+ net.sourceforge.pmd
+ pmd-lang-test
+ test
+
+
+
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java
similarity index 98%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java
index a5f3082922..3900fc3bd6 100644
--- a/pmd-scala/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java
+++ b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaTokenizer.java
@@ -96,7 +96,7 @@ public class ScalaTokenizer implements Tokenizer {
Token.LF.class, Token.FF.class, Token.LFLF.class, Token.EOF.class };
ScalaTokenFilter(Iterator iterator) {
- this.tokenIter = iterator.iterator();
+ this.tokenIter = iterator;
}
Token getNextToken() {
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageHandler.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageHandler.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageHandler.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageHandler.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaParser.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaTreeBuilder.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaTreeBuilder.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaTreeBuilder.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaTreeBuilder.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCase.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCase.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCase.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCase.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorPrimary.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorPrimary.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorPrimary.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorPrimary.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorSecondary.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorSecondary.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorSecondary.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTCtorSecondary.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclDef.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclDef.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclDef.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclDef.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclType.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclType.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclType.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclType.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVal.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVal.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVal.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVal.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVar.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVar.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVar.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDeclVar.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnClass.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnClass.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnClass.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnClass.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnDef.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnDef.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnDef.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnDef.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnMacro.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnMacro.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnMacro.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnMacro.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnObject.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnObject.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnObject.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnObject.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnTrait.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnTrait.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnTrait.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnTrait.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnType.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnType.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnType.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnType.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVal.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVal.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVal.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVal.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVar.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVar.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVar.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTDefnVar.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGenerator.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGenerator.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGenerator.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGenerator.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGuard.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGuard.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGuard.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorGuard.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorVal.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorVal.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorVal.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTEnumeratorVal.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImport.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImport.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImport.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImport.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeName.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeName.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeName.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeName.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeRename.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeRename.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeRename.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeRename.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeUnimport.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeUnimport.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeUnimport.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeUnimport.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeWildcard.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeWildcard.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeWildcard.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporteeWildcard.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporter.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporter.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporter.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTImporter.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTInit.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTInit.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTInit.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTInit.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitBoolean.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitBoolean.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitBoolean.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitBoolean.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitByte.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitByte.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitByte.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitByte.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitChar.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitChar.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitChar.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitChar.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitDouble.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitDouble.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitDouble.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitDouble.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitFloat.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitFloat.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitFloat.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitFloat.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitInt.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitInt.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitInt.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitInt.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitLong.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitLong.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitLong.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitLong.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitNull.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitNull.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitNull.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitNull.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitShort.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitShort.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitShort.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitShort.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitString.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitString.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitString.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitString.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitSymbol.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitSymbol.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitSymbol.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitSymbol.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitUnit.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitUnit.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitUnit.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTLitUnit.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAbstract.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAbstract.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAbstract.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAbstract.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAnnot.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAnnot.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAnnot.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModAnnot.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCase.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCase.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCase.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCase.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModContravariant.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModContravariant.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModContravariant.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModContravariant.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCovariant.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCovariant.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCovariant.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModCovariant.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModFinal.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModFinal.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModFinal.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModFinal.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModImplicit.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModImplicit.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModImplicit.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModImplicit.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModInline.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModInline.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModInline.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModInline.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModLazy.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModLazy.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModLazy.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModLazy.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModOverride.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModOverride.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModOverride.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModOverride.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModPrivate.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModPrivate.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModPrivate.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModPrivate.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModProtected.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModProtected.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModProtected.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModProtected.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModSealed.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModSealed.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModSealed.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModSealed.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModValParam.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModValParam.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModValParam.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModValParam.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModVarParam.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModVarParam.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModVarParam.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTModVarParam.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameAnonymous.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameAnonymous.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameAnonymous.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameAnonymous.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameIndeterminate.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameIndeterminate.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameIndeterminate.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTNameIndeterminate.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatAlternative.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatAlternative.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatAlternative.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatAlternative.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatBind.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatBind.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatBind.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatBind.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtract.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtract.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtract.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtract.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtractInfix.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtractInfix.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtractInfix.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatExtractInfix.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatInterpolate.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatInterpolate.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatInterpolate.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatInterpolate.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatSeqWildcard.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatSeqWildcard.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatSeqWildcard.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatSeqWildcard.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTuple.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTuple.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTuple.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTuple.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTyped.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTyped.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTyped.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatTyped.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatVar.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatVar.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatVar.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatVar.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatWildcard.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatWildcard.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatWildcard.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatWildcard.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatXml.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatXml.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatXml.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPatXml.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkg.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkg.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkg.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkg.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkgObject.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkgObject.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkgObject.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTPkgObject.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTQuasi.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTQuasi.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTQuasi.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTQuasi.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSelf.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSelf.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSelf.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSelf.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSource.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSource.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSource.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTSource.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTemplate.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTemplate.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTemplate.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTemplate.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAnnotate.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAnnotate.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAnnotate.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAnnotate.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApply.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApply.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApply.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApply.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyInfix.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyInfix.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyInfix.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyInfix.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyType.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyType.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyType.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyType.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyUnary.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyUnary.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyUnary.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermApplyUnary.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAscribe.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAscribe.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAscribe.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAscribe.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAssign.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAssign.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAssign.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermAssign.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermBlock.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermBlock.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermBlock.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermBlock.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermDo.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermDo.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermDo.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermDo.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermEta.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermEta.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermEta.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermEta.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFor.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFor.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFor.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFor.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermForYield.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermForYield.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermForYield.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermForYield.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFunction.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFunction.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFunction.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermFunction.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermIf.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermIf.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermIf.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermIf.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermInterpolate.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermInterpolate.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermInterpolate.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermInterpolate.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermMatch.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermMatch.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermMatch.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermMatch.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermName.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermName.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermName.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermName.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNew.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNew.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNew.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNew.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNewAnonymous.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNewAnonymous.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNewAnonymous.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermNewAnonymous.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermParam.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermParam.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermParam.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermParam.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPartialFunction.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPartialFunction.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPartialFunction.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPartialFunction.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPlaceholder.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPlaceholder.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPlaceholder.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermPlaceholder.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermRepeated.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermRepeated.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermRepeated.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermRepeated.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermReturn.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermReturn.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermReturn.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermReturn.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSelect.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSelect.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSelect.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSelect.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSuper.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSuper.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSuper.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermSuper.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThis.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThis.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThis.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThis.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThrow.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThrow.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThrow.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermThrow.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTry.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTry.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTry.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTry.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTryWithHandler.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTryWithHandler.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTryWithHandler.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTryWithHandler.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTuple.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTuple.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTuple.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermTuple.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermWhile.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermWhile.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermWhile.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermWhile.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermXml.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermXml.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermXml.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTermXml.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnd.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnd.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnd.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnd.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnnotate.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnnotate.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnnotate.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeAnnotate.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApply.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApply.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApply.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApply.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApplyInfix.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApplyInfix.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApplyInfix.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeApplyInfix.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeBounds.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeBounds.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeBounds.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeBounds.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeByName.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeByName.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeByName.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeByName.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeExistential.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeExistential.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeExistential.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeExistential.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeFunction.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeFunction.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeFunction.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeFunction.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeImplicitFunction.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeImplicitFunction.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeImplicitFunction.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeImplicitFunction.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeLambda.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeLambda.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeLambda.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeLambda.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeMethod.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeMethod.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeMethod.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeMethod.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeName.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeName.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeName.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeName.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeOr.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeOr.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeOr.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeOr.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeParam.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeParam.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeParam.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeParam.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypePlaceholder.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypePlaceholder.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypePlaceholder.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypePlaceholder.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeProject.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeProject.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeProject.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeProject.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRefine.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRefine.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRefine.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRefine.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRepeated.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRepeated.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRepeated.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeRepeated.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSelect.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSelect.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSelect.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSelect.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSingleton.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSingleton.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSingleton.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeSingleton.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeTuple.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeTuple.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeTuple.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeTuple.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeVar.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeVar.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeVar.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeVar.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeWith.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeWith.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeWith.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ASTTypeWith.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/AbstractScalaNode.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/AbstractScalaNode.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/AbstractScalaNode.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/AbstractScalaNode.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaNode.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitor.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ast/ScalaParserVisitorAdapter.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleChainVisitor.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleChainVisitor.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleChainVisitor.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleChainVisitor.java
diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleViolationFactory.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleViolationFactory.java
similarity index 100%
rename from pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleViolationFactory.java
rename to pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleViolationFactory.java
diff --git a/pmd-scala/src/main/resources/META-INF/services/net.sourceforge.pmd.cpd.Language b/pmd-scala-modules/pmd-scala-common/src/main/resources/META-INF/services/net.sourceforge.pmd.cpd.Language
similarity index 100%
rename from pmd-scala/src/main/resources/META-INF/services/net.sourceforge.pmd.cpd.Language
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/META-INF/services/net.sourceforge.pmd.cpd.Language
diff --git a/pmd-scala/src/main/resources/META-INF/services/net.sourceforge.pmd.lang.Language b/pmd-scala-modules/pmd-scala-common/src/main/resources/META-INF/services/net.sourceforge.pmd.lang.Language
similarity index 100%
rename from pmd-scala/src/main/resources/META-INF/services/net.sourceforge.pmd.lang.Language
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/META-INF/services/net.sourceforge.pmd.lang.Language
diff --git a/pmd-scala/src/main/resources/category/scala/bestpractices.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/bestpractices.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/bestpractices.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/bestpractices.xml
diff --git a/pmd-scala/src/main/resources/category/scala/categories.properties b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/categories.properties
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/categories.properties
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/categories.properties
diff --git a/pmd-scala/src/main/resources/category/scala/codestyle.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/codestyle.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/codestyle.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/codestyle.xml
diff --git a/pmd-scala/src/main/resources/category/scala/design.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/design.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/design.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/design.xml
diff --git a/pmd-scala/src/main/resources/category/scala/documentation.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/documentation.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/documentation.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/documentation.xml
diff --git a/pmd-scala/src/main/resources/category/scala/errorprone.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/errorprone.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/errorprone.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/errorprone.xml
diff --git a/pmd-scala/src/main/resources/category/scala/multithreading.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/multithreading.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/multithreading.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/multithreading.xml
diff --git a/pmd-scala/src/main/resources/category/scala/performance.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/performance.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/performance.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/performance.xml
diff --git a/pmd-scala/src/main/resources/category/scala/security.xml b/pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/security.xml
similarity index 100%
rename from pmd-scala/src/main/resources/category/scala/security.xml
rename to pmd-scala-modules/pmd-scala-common/src/main/resources/category/scala/security.xml
diff --git a/pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Compiler.scala b/pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Compiler.scala
similarity index 100%
rename from pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Compiler.scala
rename to pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Compiler.scala
diff --git a/pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Lexer.scala b/pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Lexer.scala
similarity index 100%
rename from pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Lexer.scala
rename to pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Lexer.scala
diff --git a/pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Parser.scala b/pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Parser.scala
similarity index 100%
rename from pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Parser.scala
rename to pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Parser.scala
diff --git a/pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Token.scala b/pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Token.scala
similarity index 100%
rename from pmd-scala/src/main/scala/org/sonar/plugins/scala/compiler/Token.scala
rename to pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/compiler/Token.scala
diff --git a/pmd-scala/src/main/scala/org/sonar/plugins/scala/language/CodeDetector.scala b/pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/language/CodeDetector.scala
similarity index 100%
rename from pmd-scala/src/main/scala/org/sonar/plugins/scala/language/CodeDetector.scala
rename to pmd-scala-modules/pmd-scala-common/src/main/scala/org/sonar/plugins/scala/language/CodeDetector.scala
diff --git a/pmd-scala/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java
similarity index 100%
rename from pmd-scala/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java
rename to pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/LanguageVersionTest.java
diff --git a/pmd-scala/src/test/java/net/sourceforge/pmd/RulesetFactoryTest.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/RulesetFactoryTest.java
similarity index 100%
rename from pmd-scala/src/test/java/net/sourceforge/pmd/RulesetFactoryTest.java
rename to pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/RulesetFactoryTest.java
diff --git a/pmd-scala/src/test/java/net/sourceforge/pmd/cpd/ScalaTokenizerTest.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/cpd/ScalaTokenizerTest.java
similarity index 100%
rename from pmd-scala/src/test/java/net/sourceforge/pmd/cpd/ScalaTokenizerTest.java
rename to pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/cpd/ScalaTokenizerTest.java
diff --git a/pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/ast/BaseScalaTest.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/BaseScalaTest.java
similarity index 100%
rename from pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/ast/BaseScalaTest.java
rename to pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/BaseScalaTest.java
diff --git a/pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java
similarity index 100%
rename from pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java
rename to pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/ast/ScalaParsingHelper.java
diff --git a/pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleTest.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleTest.java
similarity index 100%
rename from pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleTest.java
rename to pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/rule/ScalaRuleTest.java
diff --git a/pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/rule/XPathRuleTest.java b/pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/rule/XPathRuleTest.java
similarity index 100%
rename from pmd-scala/src/test/java/net/sourceforge/pmd/lang/scala/rule/XPathRuleTest.java
rename to pmd-scala-modules/pmd-scala-common/src/test/java/net/sourceforge/pmd/lang/scala/rule/XPathRuleTest.java
diff --git a/pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaParserTests.kt b/pmd-scala-modules/pmd-scala-common/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaParserTests.kt
similarity index 100%
rename from pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaParserTests.kt
rename to pmd-scala-modules/pmd-scala-common/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaParserTests.kt
diff --git a/pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt b/pmd-scala-modules/pmd-scala-common/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt
similarity index 100%
rename from pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt
rename to pmd-scala-modules/pmd-scala-common/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt
diff --git a/pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.scala b/pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.scala
similarity index 100%
rename from pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.scala
rename to pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.scala
diff --git a/pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.txt b/pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.txt
similarity index 100%
rename from pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.txt
rename to pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/List.txt
diff --git a/pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.scala b/pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.scala
similarity index 100%
rename from pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.scala
rename to pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.scala
diff --git a/pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.txt b/pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.txt
similarity index 100%
rename from pmd-scala/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.txt
rename to pmd-scala-modules/pmd-scala-common/src/test/resources/net/sourceforge/pmd/lang/scala/ast/testdata/package.txt
diff --git a/pmd-scala/src/test/resources/parserFiles/helloworld.scala b/pmd-scala-modules/pmd-scala-common/src/test/resources/parserFiles/helloworld.scala
similarity index 100%
rename from pmd-scala/src/test/resources/parserFiles/helloworld.scala
rename to pmd-scala-modules/pmd-scala-common/src/test/resources/parserFiles/helloworld.scala
diff --git a/pmd-scala/src/test/resources/tokenizerFiles/sample-LiftActor.scala b/pmd-scala-modules/pmd-scala-common/src/test/resources/tokenizerFiles/sample-LiftActor.scala
similarity index 100%
rename from pmd-scala/src/test/resources/tokenizerFiles/sample-LiftActor.scala
rename to pmd-scala-modules/pmd-scala-common/src/test/resources/tokenizerFiles/sample-LiftActor.scala
diff --git a/pmd-scala-modules/pmd-scala_2.12/pom.xml b/pmd-scala-modules/pmd-scala_2.12/pom.xml
new file mode 100644
index 0000000000..220974c6e1
--- /dev/null
+++ b/pmd-scala-modules/pmd-scala_2.12/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+ PMD Scala for Scala 2.12
+ pmd-scala_2.12
+
+
+ net.sourceforge.pmd
+ pmd-scala-common
+ 6.25.0-SNAPSHOT
+ ../pmd-scala-common
+
+
+
+ 2.12
+
+
+
+
+
+ kotlin-maven-plugin
+ org.jetbrains.kotlin
+
+
+
+
+
+
+ org.scalameta
+ scalameta_${scalaVersion}
+ ${scalameta.version}
+
+
+
diff --git a/pmd-scala-modules/pmd-scala_2.13/pom.xml b/pmd-scala-modules/pmd-scala_2.13/pom.xml
new file mode 100644
index 0000000000..b314beda49
--- /dev/null
+++ b/pmd-scala-modules/pmd-scala_2.13/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+ PMD Scala for Scala 2.13
+ pmd-scala_2.13
+
+
+ net.sourceforge.pmd
+ pmd-scala-common
+ 6.25.0-SNAPSHOT
+ ../pmd-scala-common
+
+
+
+ 2.13
+
+
+
+
+
+ kotlin-maven-plugin
+ org.jetbrains.kotlin
+
+
+
+
+
+
+ org.scalameta
+ scalameta_${scalaVersion}
+ ${scalameta.version}
+
+
+
diff --git a/pmd-scala/pom.xml b/pmd-scala/pom.xml
index 4d7f28830c..5657463f77 100644
--- a/pmd-scala/pom.xml
+++ b/pmd-scala/pom.xml
@@ -1,69 +1,25 @@
-
+4.0.0pmd-scala
- PMD Scala
+ PMD Scala - Transitional package (deprecated)
+ This is deprecated, use pmd-scala_2.13 directly
+ pomnet.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
-
- 4.2.0
-
-
-
-
-
- maven-resources-plugin
-
- false
-
- ${*}
-
-
-
-
-
- kotlin-maven-plugin
- org.jetbrains.kotlin
-
-
-
-
-
- org.scalameta
- scalameta_2.13
- ${scalameta.version}
-
-
- net.sourceforge.pmd
- pmd-core
-
-
-
- junit
- junit
- test
-
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
- net.sourceforge.pmd
- pmd-test
- test
-
-
- net.sourceforge.pmd
- pmd-lang-test
- test
+ ${project.groupId}
+ pmd-scala_2.13
+ ${project.version}
diff --git a/pmd-swift/pom.xml b/pmd-swift/pom.xml
index 3e8b4cfb14..95e213648a 100644
--- a/pmd-swift/pom.xml
+++ b/pmd-swift/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-test/pom.xml b/pmd-test/pom.xml
index 4aeda98c02..5f9f7913c8 100644
--- a/pmd-test/pom.xml
+++ b/pmd-test/pom.xml
@@ -9,6 +9,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-visualforce/pom.xml b/pmd-visualforce/pom.xml
index 300c8efc67..1f99a9d170 100644
--- a/pmd-visualforce/pom.xml
+++ b/pmd-visualforce/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-vm/pom.xml b/pmd-vm/pom.xml
index 8b8ef3ff19..d8cbf3ebb2 100644
--- a/pmd-vm/pom.xml
+++ b/pmd-vm/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pmd-xml/pom.xml b/pmd-xml/pom.xml
index 8c98430ba7..74df3d98e9 100644
--- a/pmd-xml/pom.xml
+++ b/pmd-xml/pom.xml
@@ -8,6 +8,7 @@
net.sourceforge.pmdpmd6.25.0-SNAPSHOT
+ ../
diff --git a/pom.xml b/pom.xml
index 3d4562faef..062f361a90 100644
--- a/pom.xml
+++ b/pom.xml
@@ -256,7 +256,7 @@
oncealphabetical
- ${project.basedir}/src/test/resources
+ ${project.build.testResources[0].directory}
@@ -1030,7 +1030,10 @@
pmd-plsqlpmd-pythonpmd-ruby
- pmd-scala
+ pmd-scala
+ pmd-scala-modules/pmd-scala-common
+ pmd-scala-modules/pmd-scala_2.13
+ pmd-scala-modules/pmd-scala_2.12pmd-swiftpmd-testpmd-visualforce