[論文レビュー] JExtract: An Eclipse Plug-in for Recommending Automated Extract Method Refactorings
JExtract は、構造的依存関係の類似度が低い連続的なコード断片を特定することで、Eclipse プラグインとして自動化された Extract Method リファクタリングを推薦する。依存関係に基づくスコアリングを用い、JDeodorant よりも再現率と正確度が優れている。評価対象システム全体で最大 49.2% の再現率と 16.7% の正確度を達成した。
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 リファクタリングツールが十分に活用されていないという問題に対処する。
- 開発者がリファクタリングの機会を特定するために費やす手作業の負荷を減らし、検出と推薦を自動化する。
- Eclipse 環境に統合された知的で自動化された推薦を通じて、IDE ベースのリファクタリングツールの採用を促進する。
- メソッドの残りの部分と構造的に著しく異なるコード断片を優先順位付けすることで、抽出候補とみなせる断片を特定する推薦システムを開発する。
- 実際のオープンソースシステムを用いて、JDeodorant や他の最先端のツールと比較して、本ツールの有効性を評価する。
提案手法
- 制御フローが線形である連続的なステートメントブロックに分割することで、すべての可能な Extract Method 候補を生成する。
- 最小 3 ステートメントのサイズ制限とリファクタリングエンジンの事前条件を適用して、有効な候補をフィルタリングする。
- 候補となる断片とメソッドの残りの部分の間で、変数、型、パッケージの依存関係を計算する。
- 抽出された断片と残りのステートメントとの間の構造的類似度の逆数に基づいてスコアを算出し、類似度が低いものを優遇する。
- スコア順に候補をランク付けし、Eclipse IDE に直接統合してワンクリックで適用できるようにする。
- Move Method の推薦にインspiredされたヒューリスティックを用いるが、断片と残りの部分との間の不一致を最大化することで、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が作成し、人間の編集者が確認しました。