PMD/CPD can't detect duplicate code

I am new to PMD/CPD. I have configured PMD in my maven project as below:

<groupId>org.parent</groupId>
<artifactId>CustRestExampleOsgi</artifactId>
<version>1.0</version>

<packaging>pom</packaging>
<name>CustRestExampleOsgii</name>

<modules>
    <module>CustImplProvider</module>
    <module>CustInterface</module>
    <module>RestCustConsumer</module>
</modules>

<properties>
<karaf.deploy.build.folder>
    G:\apache-karaf-3.0.0.RC1\deploy
</karaf.deploy.build.folder>
</properties>

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.0</version>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>2.3</version>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
        </plugin>
    </plugins>
</reporting>

My maven project is compiling normally and generating all reports by mvn jxr:jxr site. But I am unable to find any result which shows duplicate code. To test this I have introduced duplicate code intentionally in my code, as:

@Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Address)) {
        return false;
    }
    Address other = (Address) object;
    if ((this.id == null && other.id != null)
      || (this.id != null && !this.id.equals(other.id))) {
        return false;
    }
    if (!(object instanceof Address)) { //Duplicate is here
        return false;
    }
    return true;
}

But always CPD shows no problem detected in the source code. However I can find PMD reports normally. Am I missing some configuration or ruleset?

Kindly help!

Answers


Make sure that you set the minimum token count low enough. Your short piece of duplicate code has fewer tokens than the default 100.

According to the docs, the property is called minimumTokens. Older versions of the Maven PMD plugin had a property maven.pmd.cpd.minimumtokencount. Set it to 5 for testing. In real life, the default of 100 is a good value.


Need Your Help

FLEX - Load remoteobject and shared them with modules

flex module remoteobject

I want to start out by saying that I am new to flex.

Jquery(ajax) PHP search results not displaying in search_results div under form

php jquery html ajax dom

For a website I'm making for school, I'm trying my hand at using Jquery extensively for the first time, and even though I managed quite a bit so far, I'm stuck at two (most likely related) problems...