문제

몇 가지 오류를 감지하기위한 규칙을 작성하려고합니다. 주석 멀티 스레드 Java 프로그램. 장난감 예제로서 @threadsafe로 주석이 달린 메소드가 동기화없이 그러한 주석없이 메소드를 호출하는지 감지하고 싶습니다. 나는 그런 시험을 쓸 수있는 도구를 찾고 있습니다.

CheckStyle 및 PMD와 같은 소스 분석기를 살펴 보았으며 실제로 클래스 분석 기능이 없습니다. FindBugs 및 Jlint와 같은 바이트 코드 분석기는 확장하기가 다소 어렵습니다.

나는 더 단순한 것에 대한 해결책을 찾기 위해 정착하지만 똑같은 어려움을 겪고 있습니다. 커스텀 각 재정의 메소드가 @override로 주석이 달린지 여부를 확인하는 규칙.

도움이 되었습니까?

해결책

당신은 시도 했습니까? FindBugs? 실제로 세트를 지원합니다 스레드 안전을위한 주석 (사용 된 것과 동일합니다 실제로 Java 동시성). 또한 자신의 사용자 정의 규칙을 작성할 수 있습니다. 나는 당신이 수업 간 분석을 할 수 있는지 확실하지 않지만 그렇게 믿습니다.

Peter Ventjeer a 동시성 검사 도구 (ASM을 사용) 이와 같은 것들을 감지합니다. 그가 공개적으로 석방되었는지 확실하지 않지만 그는 당신을 도울 수 있습니다.

그리고 나는 믿습니다 표지 스레드 안전을위한 정적/동적 분석 도구는 이와 같이 점검합니다.

다른 팁

넌 할 수있어 PMD의 교차 계급 분석 (이 특정 목적으로 그것을 사용한 적이 없지만). 나는 그들이 문서화하는이 방문자 패턴을 사용하는 것이 가능하다고 생각하지만, 나는 당신에게 세부 사항을 남겨 둘 것입니다.

주석을 검사하는 간단한 도구는 APT입니다 (http://java.sun.com/j2se/1.5.0/docs/guide/apt/ 또한 Javax.annotation.processing의 Java 6 API의 일부는 유형 정보 만 있습니다 (즉, Javax.lang.Model API를 사용하여 상속 계층 구조를 빠르게 얻을 수있는 방법을 찾을 수 없었지만로드 할 수 있다면로드 할 수 있습니다. 클래스 반사를 사용하여 해당 정보를 얻을 수 있습니다).

Javap + regexes (예 : Perl) 시도

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top