By default, the maven-pmd-plugin only supports the languages Java, JavaScript and JSP. But CPD supports many more languages, e.g. C#. In order to enable C# in your build, you need to configure several parts:
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.16.0</version> <configuration> <language>cs</language> <minimumTokens>10</minimumTokens> <includes> <include>**/*.cs</include> </includes> <compileSourceRoots> <compileSourceRoot>${basedir}/src/main/cs</compileSourceRoot> </compileSourceRoots> <printFailingErrors>true</printFailingErrors> </configuration> <executions> <execution> <goals> <goal>cpd-check</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>net.sourceforge.pmd</groupId> <artifactId>pmd-cs</artifactId> <version>6.42.0</version> </dependency> </dependencies> </plugin> ... </plugins> </build> </project>
In this example, the C# source files are located in src/main/cs.
Note: The version for net.sourceforge.pmd:pmd-cs needs to match the PMD version, that is being used. If you upgrade PMD at runtime you'll need to make sure, to change the version here as well.