문제

감지하려면 어떤 도구를 추천하시겠습니까? Java 패키지 순환 종속성, 목표는 목표입니다 감지된 '패키지 간 주기'와 관련된 특정 클래스를 명시적으로 나열합니다.?

나는 ~에 대해 알고 있다 품격 그리고 JDepend, 그러나 둘 다 순환 패키지 종속성과 관련된 클래스를 나열하지 못합니다. 측정항목 주기에 대한 흥미로운 그래픽 표현이 있지만 다시 패키지로 제한되어 때로는 읽기가 매우 어렵습니다.

나는 다음을 얻기 위해 점점 피곤해지고 있습니다:

" 해당 3개 패키지 사이에 패키지 주기 종속성이 있습니다.
각각 xxx개의 수업이 있어요
행운을 빌어 올바른 수업을 찾아 이 악순환을 끊으세요."

주기가 감지된 이유를 실제로 설명하기 위해 추가 단계를 수행하는 도구를 알고 있습니까(예:'관련 클래스 목록')?


리이잇...결과를 발표할 시간:

@l7010.de:노력해 주셔서 감사합니다.나는 특히 'CAP' 답변에 대해 (충분한 담당자가 있을 때) 당신에게 투표할 것입니다...하지만 CAP는 물 속에서 죽었고 더 이상 내 Eclipse 3.4와 호환되지 않습니다.나머지는 상업용이며 프리웨어만 찾습니다.

@daniel6651:감사합니다. 하지만 말했듯이 프리웨어에만 해당됩니다(처음에 언급하지 않아서 죄송합니다).

@izb는 findbugs(현재 최신 1.3.5 사용)를 자주 사용하는 사용자로서 한 번의 클릭만으로 귀하의 답변을 수락할 수 있습니다...사이클을 감지하기 위해 findbug를 활성화하는 옵션이 무엇인지 설명해 주실 수 있나요?해당 기능은 다음에 대해서만 언급됩니다. 0.8.7 버전 통과 중 (찾다 '클래스 간의 순환 종속성을 찾는 새로운 스타일 감지기'), 테스트할 수 없습니다.업데이트:이제 작동하며 해당 옵션이 활성화되지 않은 오래된 findbugs 구성 파일이 있습니다.나는 아직도 좋아한다 치사한 사람 그렇지만 ;)

정답은...보다 아래 내 자신의 (두 번째) 답변

도움이 되었습니까?

해결책

Findbugs는 순환 클래스 종속성을 감지할 수 있으며 Eclipse 플러그인도 있습니다.

http://findbugs.sourceforge.net/

다른 팁

잘...테스트 후 위에 제시된 DepFinder, 간단한 종속성을 빠르게 감지하는 데는 유용하지만 클래스 수에 따라 잘 확장되지는 않습니다.

따라서 실제 실제 답변은 다음과 같습니다.CDA - 클래스 종속성 분석기

빠르고 최신이며 사용하기 쉽고 클래스와 해당 순환 종속성에 대한 그래픽 표현을 제공합니다.꿈이 이루어지네요 ;)

클래스 디렉터리(.class)만 입력하는 작업 세트를 만들어야 합니다(전체 클래스 경로가 필요 없음).
"순환 종속성 감지 - 대체-"는 광고로 작동하며 468개 클래스를 분석하는 데 몇 시간 동안 CPU를 100% 사용하지 않습니다.
메모:작업 공간을 새로 고치려면 클래스에 대한 새로운 스캔을 실행하기 위해 작업 공간을 다시 열어야 합니다(!).

screenshot

우리는 사용 소나 패키지 주기를 감지합니다.종속성에 대한 멋진 그래프를 그리고 어느 것이 잘못된 방향으로 가고 있는지 보여줍니다.종속성이 사용되는 소스로 이동할 수도 있습니다.

보다 http://www.sonarsource.org/fight-back-design-erosion-by-breaking-cycles-with-sonar/

도 있습니다 구조101 이 작업을 수행해야 합니다.

하이휠 클래스 및 패키지 주기를 감지하고 관계 유형(상속, 구성, 메서드 시그니처의 일부 등)을 나타내는 클래스/메서드/필드 수준까지 종속성의 소스를 보고합니다.

또한 큰 주기를 개별적으로 이해/처리할 수 있는 하위 요소로 나눕니다.

출력은 최신 브라우저가 필요한 SVG 콘텐츠가 포함된 HTML입니다.

그리고 오픈 소스 도구를 사용할 수 있습니다 이는 Eclipse 플러그인입니다.

CAP에는 클래스에 대한 선을 표시하는 그래픽 패키지 보기가 있으므로 몇 번 클릭하면(원의 크기에 따라) 범인을 찾을 수 있습니다.

첫 번째로 가능한 대답은...예쁘지 않은.그러나 그것은 내가 후에하는 일을 시작합니다 (더 나은 해결책은 아래 제시).

의존성 찾기! 다운로드 해, 압축을 풀어주세요.

가장 현대적이거나 활동적인 프로젝트는 아니지만 [Dependency Finder]/bin/DependencyFinder.bat를 편집하고 DEFAULT_DEPENDENCYFINDER_HOME에 대한 경로를 추가하고 JAVA_HOME을 설정하면 시작할 수 있습니다.

그런 다음 '추출' 버튼(CTRL-E - 첫 번째 버튼)을 클릭하고 클래스 경로를 입력한 다음 검색해 보세요.

까다로운 부분은 결과의 세부사항 수준에 휩쓸리지 않기 위해 올바른 '프로그래밍 요소' 및 '클로저' 항목 세트를 정확하게 클릭하는 것입니다.

  • 왼쪽의 '클래스'('프로그래밍 요소')만 선택하세요.
  • 오른쪽의 '클래스'('클로저')만 선택하세요.
  • "/javax?./,/org./,/sun./"를 제외 패턴으로 추가합니다(프로그래밍 요소와 클로저 모두에 대해).
  • 바퀴를 클릭하세요(마지막 버튼 - 모두 계산 - Ctrl 키 + ).

그리고 여기 있습니다.

'<->'를 볼 때마다 기분이 좋아진 것입니다. 순환 종속성.('클로저' 측에서 '기능'을 선택하면 어떤 기능이 주기를 트리거하는지 알 수도 있습니다. 대단합니다.)

다른 제안 사항을 테스트할 준비가 되었습니다.

몇 가지 상용 도구가 있습니다:이러한 목적으로 사용될 수 있는 Structure101 및 Lattix.

이를 수행하는 도구 중 하나는 소프트웨어입니다. 단층 촬영기.상업용이고 UI가 형편없습니다 :o

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