2012-01-03 2 views
5

hashCode()equals() 메소드에 대한 체크 스타일을 완전히 비활성화하려면 구성 예가 필요합니다.hashCode 및 같음에 대한 checkstyle을 비활성화하십시오.

+2

@shaman matthews 솔루션에 문제가 있습니까? – oers

+0

문제는 checkstyle이 augogenerated equals() 및 hashcode() 메서드의 코드에서 검사를 수행하는 경향이 있다는 것입니다. 일반적으로 코드 작성 규칙을 위반합니다. –

답변

2

이 정말 질문에 대한 답변이 아니라 롬복 정말 상용구 코드 이런 종류의 피해에 빛나는 :

@EqualsAndHashCode(of="id") 

: 당신은 당신의 클래스에 주석을 달 수 있으며,이 경우를 들어 http://projectlombok.org

을 또는

는하지만, checkstyle에 대해 그것을 테스트하지 않았습니다

@EqualsAndHashCode(excludes={"these","fields","wont","be","compared"}) 
...

+0

답변과 같이 보이고 테스트해야하며 진행 여부는 –

+0

멋진 소식입니다. 그것이 도움이 되었기 때문에 기뻤다! :) – elias

+0

예 -이 문제를 어떻게 든 해결합니다 ... 코드에서 멋지게 보입니다! –

3

Checkstyle 5.5: Coding Config에서 EqualsHashCode를 참조하십시오. checkstyle 구성 파일에서

<module name="EqualsHashCode"/> 

을 제거하거나 이클립스 플러그인을 통해 제거하십시오. 하지만 내가 왜 이러는 지 물어볼거야. equals() 및 hashCode()를 잘못 구현하면 오류의 일반적인 원인이되므로이 작업을 수행하기 전에 매우주의해야합니다.

+0

eclipe를 사용하여 생성하고 있습니다. checkstyle xml에서 비활성화해야한다는 것을 알고 있습니다. 질문은 방법입니다. 나는 그 방법에 대한 모든 체크를 무효로하고 싶다. –

+1

@Matthew Farwell : 나는 * hashCode() *와 * equals *에 대한 overreliance가 더 나쁜 질병이라고 주장 할 것이다. 조슈아 블로흐 (Joshua Bloch)의 "Effective Java *"의 견적을 통해 권위에 호소하십시오. "인스턴스화 가능한 클래스를 확장하고 동등한 계약을 유지하면서 aspect를 추가하는 방법은 없습니다. 이것은 매우 잘 알려져 있고, 잘 문서화되어 있으며, 실제 문제입니다. 하나는 예외를 던지는 기본 hashCode/equals가 "올바른"equals/hashCode를 구현하려는 것보다 더 건전하다고 주장 할 수 있습니다. Martin Odersky : http://www.artima.com/lejava/articles/equality.html – TacticalCoder

+0

@Matthew Farwell : 이제 당연히 I * do * use * hashCode *와 * equals *와 모든 위대한 콜렉션을 사용합니다. 이것들 ...하지만 상속의 면면에서 이것이 얼마나 힘든 일인지를 지적하기를 원했습니다 : Artima의 기사 (그리고 그것이 부과하는 제한)의 * canEqual * 메소드 설명은 나에게 눈을 뜨게했습니다. 체크 스타일이 확인하는 것;) – TacticalCoder

2

일식의 Checkstyle. Windows -> 환경 설정 -> Checkstyle을여십시오.

기본 구성을 사용하는 경우 다른 이름으로 복사하고 복사 된 것을 선택한 다음 구성을 클릭하십시오. 같음을 검색하고 코딩 문제에서 '같음 및 해시 코드'를 선택하십시오. 필요없는 모든 항목을 선택 취소하십시오.

정상적으로 실행되고 기본값으로 설정됩니다.

+0

허드슨은 특정 규칙 집합에 대해 checkstyle을 실행합니다. 위의 방법을 사용하여 생성 한 규칙으로 해당 규칙을 바꿉니다. – bluesman

관련 문제