2014-01-30 6 views
3

Я новичок в PMD/CPD. Я настроил PMD в моей Maven проекта, как показано ниже:PMD/CPD не может обнаружить повторяющийся код

<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> 

Мой Maven проект компилирует нормально и генерировать все отчеты по mvn jxr:jxr site. Но я не могу найти результат, который показывает дубликат кода. Чтобы проверить это, я ввел повторяющийся код намеренно в моем коде, как:

@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; 
} 

Но всегда CPD не показывает никаких проблем обнаружено в исходном коде. Однако я могу найти PMD отчетов нормально. Не хватает ли какой-либо конфигурации или набора правил?

Просьба помочь!

ответ

4

Убедитесь, что минимальное количество токенов установлено достаточно низким. У вашей короткой части дублированного кода меньше токенов, чем по умолчанию 100.

Согласно the docs, это свойство называется minimumTokens. Предыдущие версии плагина Maven PMD имели свойство maven.pmd.cpd.minimumtokencount. Установите для тестирования 5. В реальной жизни значение 100 по умолчанию является хорошим значением.

+0

oh wow !! Он работал отлично, как ожидалось. Спасибо!!! :-) – Amrit