언더커버 (undercover-maven-plugin)

  • 단위 테스트 테스트 소스 커버리지 리포트 툴

파인드 버그 (findbugs-maven-plugin)
  • 정적 소스 코드 분석 툴
  • 버그 발생 가능성이 있는 코드, 나쁜 개발 습관으로 작성한 코드, 성능에 영향을 미칠 것으로 생각하는 코드에 대한 정보를 제공

PMD 리포트 (maven-pmd-plugin)
  • 정적 소스 코드 분석 툴
  • 애플리케이션별로 제공하는 룰셋이 있어, 이를 설정할 수 있음

CPD 리포트 
  • 소스 내에 존재하는 중복 코드를 찾아주는 툴
  • PMD 툴에 포함되어 있음 (pmd:cpd 골을 실행)

제이디펜드 리포트 (jdepend-maven-plugin)
  • 소스코드의 복잡도를 분석하는 툴
  • 주요 용어
    • 클래스와 인터페이스 수
      • TC : 패키지가 포함하는 클래스/인터페이스 수
      • CC : 구현 클래스 수
      • AC : 인터페이스/추상 클래스 수
    • Afferent Couplings (Ca)
      • 다른 패키지에서 현재 패키지에 의존하고 있는 패키지 수
    • Efferent Couplings (Ce)
      • 현재 패키지에서 다른 패키지에 의존하고 있는 패키지 수
    • Abstractness (A)
      • 총 클래스수(TC) / 추상 클래스(AC)
    • Instability (I)
      • I = Ce / (Ce + Ca)
      • 외부 패키지와의 의존 비율. 즉 이 패키지가 외부 패키지의 변경에 대해 영향을 받을 가능성
    • Distance from the Main Sequence (D)
      • 추상화와 안정성에 대한 패키지의 균형을 위한 이상적인 값은 A+I = 100%로 정의
      • A+I가 100%에서 얼마나 떨어져 있는지 표시하는 수치로, 즉, D가 100%에 가까울 수록 좋지 않는 패키지 의존관계이므로 리팩토링해야 함을 의미
  • 순환 의존 관계
    • A 패키지와 B 패키지가 Ca와 Ce 의존관계일 경우 발생 (즉, A와 B가 상호 참조 관계일 때를 의미)
    • 모든 패키지는 한방향으로만 의존관계를 가지는 것이 좋음


출처: 자바 세상의 빌드를 이끄는 메이븐 (박재성 저)

+ Recent posts