Skip to main content
QUICK REVIEW

[논문 리뷰] Deep Learning to Detect Redundant Method Comments

Annie Louis, Santanu Kumar Dash|arXiv (Cornell University)|2018. 06. 12.
Software Engineering Research참고 문헌 28인용 수 9
한 줄 요약

이 논문은 코드에서의 주석 함의관계를 모델링하여 중복되는 메서드 주석을 탐지하기 위한 딥러닝 접근법을 제안한다. 이는 코드-주석 쌍에 대해 미세조정된 시퀀스-투-시퀀스 모델을 사용한다. 도구인 Craic은 주로 코드를 재진술하는 주석(높은 함의관계)을 식별하며, Javadoc 태그인 @param 및 @throws는 자유형 주석보다 적어도 두 배 이상 예측 가능하다는 점을 보여주며, 이는 정보량이 낮음을 시사한다.

ABSTRACT

Comments in software are critical for maintenance and reuse. But apart from prescriptive advice, there is little practical support or quantitative understanding of what makes a comment useful. In this paper, we introduce the task of identifying comments which are uninformative about the code they are meant to document. To address this problem, we introduce the notion of comment entailment from code, high entailment indicating that a comment's natural language semantics can be inferred directly from the code. Although not all entailed comments are low quality, comments that are too easily inferred, for example, comments that restate the code, are widely discouraged by authorities on software style. Based on this, we develop a tool called CRAIC which scores method-level comments for redundancy. Highly redundant comments can then be expanded or alternately removed by the developer. CRAIC uses deep language models to exploit large software corpora without requiring expensive manual annotations of entailment. We show that CRAIC can perform the comment entailment task with good agreement with human judgements. Our findings also have implications for documentation tools. For example, we find that common tags in Javadoc are at least two times more predictable from code than non-Javadoc sentences, suggesting that Javadoc tags are less informative than more free-form comments

연구 동기 및 목표

  • 코드를 그대로 반복하는 무정보성 주석을 식별하는 데 실용적인 지원가 부족한 문제를 해결하기 위해.
  • 비용이 많이 드는 수동 애너테이션을 요구하지 않고도 주석 중복도를 평가할 수 있는 기계학습 프레임워크를 개발하기 위해.
  • 일반적인 Javadoc 태그가 자유형 주석보다 더 예측 가능하고, 따라서 더 적은 정보량을 지닌다는지 조사하기 위해.
  • 딥러닝을 사용하여 코드에서 쉽게 유추할 수 있는 주석을 자동으로 탐지할 수 있는지의 가능성을 평가하기 위해.

제안 방법

  • 저자들은 '주석 함의관계'를 코드에서 주석의 의미가 얼마나 유추될 수 있는지의 정도로 정의하며, 높은 함의관계는 중복성을 의미한다.
  • 저자들은 깃허브에서 확보한 대규모 자바 코드-주석 쌍 코퍼스를 기반으로 시퀀스-투-시퀀스 딥러닝 모델을 훈련하여 코드에서 주석을 예측한다.
  • 모델은 코드에서의 사전학습과 애너테이션 데이터에서의 미세조정을 조합하여 훈련되며, 함의관계의 대체 지표로 퍼즐러피티를 사용한다.
  • Craic이라는 도구를 구축하여 예측된 퍼즐러피티 기반으로 메서드 수준 주석의 점수를 매기며, 낮은 퍼즐러피티는 높은 중복성을 의미한다.
  • 이 방법은 수동 함의관계 애너테이션을 요구하지 않고도 대규모 소프트웨어 코퍼스를 활용하기 위해 사전학습된 언어 모델을 활용한다.
  • 비Javadoc 주석과의 평균 퍼즐러피티 비교를 통해 주석 유형(예: @param, @return)을 평가한다.

실험 결과

연구 질문

  • RQ1주석이 코드로부터 얼마나 예측 가능하게 자동으로 중복으로 식별될 수 있는가?
  • RQ2Javadoc 태그인 @param 및 @return은 자유형 주석보다 코드로부터 더 예측 가능할까? 이는 정보량이 낮음을 시사하는가?
  • RQ3코드-주석 쌍에 기반한 딥러닝 모델의 예측은 주석 중복성에 대한 인간 평가와 얼마나 잘 일치하는가?
  • RQ4시퀀스-투-시퀀스 모델의 퍼즐러피티는 주석 함의관계와 중복성에 신뢰할 수 있는 대체 지표가 될 수 있는가?
  • RQ5이러한 발견은 문서 생성기 및 개발자 가이드라인 설계에 어떤 영향을 미치는가?

주요 결과

  • Javadoc 태그인 @param 및 @throws는 비Javadoc 주석보다 적어도 두 배 이상 코드로부터 예측 가능하며, 이는 정보량이 낮음을 시사한다.
  • @param 및 @throws 주석의 평균 퍼즐러피티는 각각 6.49와 2.50이며, 비Javadoc 주석의 평균 15.58보다 유의미하게 낮다.
  • 190개의 애너테이션된 Javadoc 주석 쌍 중 180개는 인간 애너테이터에 의해 함의되거나 부분적으로 함의된 것으로 평가되어 높은 중복성을 확인했다.
  • 딥러닝 모델의 예측은 주석 함의성에 대한 인간 평가와 강한 일치를 보이며, 그 효과성을 검증했다.
  • 일반적인 Javadoc 필드는 자유형 주석보다 체계적으로 정보량이 낮으며, 이는 문서화 도구의 재설계가 필요함을 시사한다.
  • 결과는 딥러닝 모델이 기본 주석 필드의 자동 생성을 가능하게 하여 개발자가 고수준 설명에 더 집중할 수 있도록 할 수 있음을 암시한다.

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

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

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

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