Skip to main content
QUICK REVIEW

[논문 리뷰] JExtract: An Eclipse Plug-in for Recommending Automated Extract Method Refactorings

Danilo Silva, Ricardo Terra|arXiv (Cornell University)|2015. 06. 19.
Software Engineering Research참고 문헌 10인용 수 11
한 줄 요약

JExtract는 구조적 유사도가 낮은 연속된 코드 조각을 식별하여 의존성 기반 점수를 사용해 자동으로 Extract Method 리팩터링을 제안하는 이클립스 플러그인입니다. JDeodorant보다 연속된 잘못된 코드를 탐지할 때 재현율과 정밀도가 뛰어나 평가된 시스템 전반에서 최대 49.2%의 재현율과 16.7%의 정밀도를 기록합니다.

ABSTRACT

Although Extract Method is a key refactoring for improving program comprehension, refactoring tools for such purpose are often underused. To address this shortcoming, we present JExtract, a recommendation system based on structural similarity that identifies Extract Method refactoring opportunities that are directly automated by IDE-based refactoring tools. Our evaluation suggests that JExtract is far more effective (w.r.t. recall and precision) to identify misplaced code in methods than JDeodorant, a state-of-the-art tool

연구 동기 및 목표

  • 코드 이해도와 유지보수성 향상에 중요한 영향을 미치지만 여전히 활용도가 낮은 자동화된 Extract Method 리팩터링 도구의 문제를 해결합니다.
  • 개발자가 리팩터링 기회를 식별하는 데 소비하는 수작업을 줄이기 위해 탐지 및 제안을 자동화합니다.
  • 이클립스 환경에 통합된 지능적인 자동 제안을 통해 IDE 기반 리팩터링 도구의 보급을 향상시킵니다.
  • 메서드의 나머지 부분과 높은 구조적 이질성을 보이는 코드 조각을 우선순위로 정렬하여 Extract Method 후보로 선정하는 제안 시스템을 개발합니다.
  • 실제 오픈소스 시스템을 대상으로 최신 기술 수준의 도구인 JDeodorant와 비교하여 도구의 효과성을 평가합니다.

제안 방법

  • 선형 제어 흐름을 가진 문장 블록으로 나누어 메서드를 분할함으로써 가능한 모든 Extract Method 후보를 생성합니다.
  • 최소 3개의 문장이라는 크기 기준과 리팩터링 엔진의 사전 조건을 적용하여 유효한 후보를 필터링합니다.
  • 후보 조각과 메서드의 나머지 부분에 대해 구조적 의존성(변수, 타입, 패키지 의존성)을 계산합니다.
  • 추출된 조각과 나머지 문장 간의 구조적 유사도의 역수를 기반으로 점수를 매기며, 낮은 유사도를 선호합니다.
  • 점수 순으로 후보를 정렬하고, 한 번의 클릭으로 적용할 수 있도록 이클립스 IDE에 직접 통합된 제안을 제공합니다.
  • Move Method 제안에 영감을 받은 히우리스틱을 사용하지만, 조각과 나머지 부분 간의 이질성을 최대화함으로써 Extract Method 후보에 맞게 조정합니다.

실험 결과

연구 질문

  • RQ1JExtract는 JDeodorant와 같은 기존 도구와 비교해 Extract Method 리팩터링 기회 탐지에 얼마나 효과적인가요?
  • RQ2메서드의 나머지 부분과의 구조적 이질성이 높은 코드 조각과의 상관관계는 유효한 Extract Method 후보로 이어지는가요?
  • RQ3의존성 기반의 유사도 점수 기법이 Extract Method 리팩터링 제안의 재현율과 정밀도 향상에 기여할 수 있나요?
  • RQ4JExtract는 실세계 오픈소스 시스템에서 연속된 코드 조각에 대해 재현율과 정밀도 측면에서 어떻게 성능을 발휘하나요?
  • RQ5자동 제안의 사용이 실무에서 Extract Method 리팩터링의 보급에 어떤 영향을 미치나요?

주요 결과

  • JExtract는 평가된 오픈소스 시스템 전반에서 최대 49.2%의 재현율과 16.7%의 정밀도를 기록했으며, 전체적으로 재현율 25.0%, 정밀도 19.8%를 기록했습니다.
  • JExtract는 메서드 내 연속된 잘못된 코드 조각을 탐지할 때 JDeodorant보다 재현율과 정밀도 모두 뛰어났습니다.
  • 가장 높은 재현율은 Quartz 1.8.3 시스템에서 관찰되었으며(49.2%), 가장 낮은 정밀도는 Tomcat 7.0.2에서 기록되었습니다(12.8%).
  • 평가 결과, JExtract의 점수 기반 메커니즘이 메서드의 나머지 부분과의 구조적 이질성이 낮은 조각을 효과적으로 우선순위로 정렬함을 입증했습니다.
  • 도구의 제안은 정확한 일치가 요구되는 오라클 기반으로 검증되었으며, 이는 중간 정도의 정밀도 수치를 설명합니다.
  • 결과적으로, 구조적 이질성은 특히 연속된 코드 블록에 대해 Extract Method 리팩터링 기회를 강력한 지표로 제공하는 것으로 나타났습니다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.