2014-07-16 5 views
4

특정 방법을 건너 뛰도록 PMD-CPD에 지시하는 방법을 찾을 수 없습니다. 생성 된 equals()hashCode() 메서드를 사용하므로 메서드가 자주 매우 유사하게 보이므로 CPD는 많은 코드를 중복 코드로보고합니다.PMD CPD는 equals 및 hashcode와 같은 메소드를 제외합니까?

코드에서 //NOPMD 개의 주석을 사용할 수 있지만 내 눈을 어떻게는 내 코드를 관리 할 수있는 방법이 아닙니다. 코드에 도구를 포함시키기 때문에 코드와 아무 관련이 없습니다. CPD는 오류/스타일 코딩을 피하는 데 도움이되며 코드 수정을 강요해서는 안됩니다.

누군가가 아이디어를 해결하는 방법을 알고 있다면 도움이 될 것입니다.

기원

답변

1

PMD CPD는 기능 요청을 제출 너무 짧은 이러한 옵션이없는, 그것은 불가능합니다. in the CPD docs을 설명

그러나 억제하기위한 주석을 사용할 수 있습니다 : 당신은 전혀 관계가없는 방법에 주석을 달 수 있기 때문에 개인적으로

//enable suppression 
@SuppressWarnings("CPD-START") 
public Object someMethod(int x) throws Exception { 
    // any code here will be ignored for the duplication detection 
} 
//disable suppression 
@SuppressWarnings("CPD-END") 
public void nextMethod() { 
} 

, 나는 매우 많은이 구문을 좋아하지 않는다. nextMethod()someMethod()과 아무 관련이 없지만 여전히 CPD-END 주석을 얻습니다. 그러나 그것은 //NOPMD 주석을 많이 넣는 것보다 낫습니다. 또한 //NOPMD과 같이 CPD만의 방법은 제외하지만 다른 PMD 탐지기의 방법은 제외합니다.

분석 도구에 대한 정보를 코드에 넣지 않으려는 초기의 소원은 이해할 수 있습니다. 그러나 그것에 대해 생각할 때 주석과 주석 은 코드에 대해 뭔가를 말합니다. 따라서 코드의 메타 정보를 소스에 포함시키는 것이 그렇게 나쁜 것은 아닙니다. 여전히 마음에 들지 않으면 SonarQube 또는 그 뒤에있는 데이터베이스가있는 다른 도구를 사용해보십시오.