2023 Fiscal Year Research-status Report
モダンコードレビューにおけるコードクローン変更支援システムの開発
Project/Area Number |
23K11046
|
Research Institution | Kyoto Institute of Technology |
Principal Investigator |
崔 恩瀞 京都工芸繊維大学, 情報工学・人間科学系, 准教授 (90755943)
|
Project Period (FY) |
2023-04-01 – 2026-03-31
|
Keywords | 重複コード / モダンコードレビュー |
Outline of Annual Research Achievements |
コードスメルはソースコードの保守性を低下させる原因の1つであるため,ソースコードからコードスメルを識別し適切に対応する必要がある.モダンコードレビュー(MCR)はオープンソースソフトウェア(OSS)のコードスメルの削減に重要な役割を果たしている.しかし,OSSでレビューアの推薦に従ってコードスメルに対応するには開発者は長い時間を費やしている.特に,重複コード(ソースコード中の同一または類似した部分)は最も多く認識されるコードスメルであるため,その対応を支援することはOSSのコードスメルの削減のために重要である. 本研究は,過去に実際に行われたMCRのデータを調査することで,MCRにおいて重複コードの適切な対応を支援するシステムを開発できるかという本質的な問いを立て,この問いに答えることを目的としている.そのため,OSSで実際行われた過去のMCRデータを分析し,MCRでどのような特徴を持つ重複コードが認識され,異なる特徴の重複コードに対しどのように対応されたかを調査する.また,その調査結果に基づいてMCRにおける重複コードの対応を支援するシステムを開発する. 本研究の学術的独自性は,過去のMCRにおける重複コードの対応を詳細に調査し,その知見からMCRにおける重複コード対応支援システムを開発することである.既存研究ではOSSのMCRにおける一般的なコードスメルの傾向は調査されていたが,重複コードに特化した研究はない.また,既存の重複コードに着目してOSSの保守を支援するツールはMCRプロセスに使用することは適さない可能性が高い.そのため,本研究によってOSSの品質向上が期待できる.
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
本研究の課題の1つは,過去に行われたMCRにおける重複コードの対応を調査することである.この課題はMCRにおいて重複コードの変更支援に関する知見を得ることを目的としている. この目的を達成するため,提案者はOSSで実施されたMCRのパッチ(変更されたソースコード)とそのレビューコメントが含むデータセットであるCROPを対象に調査を行う予定だった.しかし,MCRに含まれているデータは最新のパッチとレビューコメントが含まれてないという課題があった.この課題を解決するために,提案者はGerritのREST APIを用いて最新のパッチとレビューコメントデータを取得した.さらに,近頃ではオープンソースオープンソースを開発のためにGithubが広く使用されているため,Githubの最新ののレビューデータであるPull Request(ソースコードに対する変更を提案し、レビューを受け、最終的にマージするためのリクエスト)のデータも収集した. 次に,重複コードが含むコードレビューかを識別するために,自然言語処理を用いてレビューコメントの中に’redundancy’や ’duplicate’など重複コードに関するするキーワードが含まれているパッチを識別した.現在,パッチに重複コードが含まれているかをより正確に識別するために,既存の重複コード検出ツールを自動的にパッチに提供する部分を実装している.
|
Strategy for Future Research Activity |
今後の研究の推進方策として、まず,パッチに含まれている重複コードの特徴を詳細に分析する予定である.具体的には,パッチに含まれている重複コードの複雑度、類似度,重複コードの長さなどのメトリクスを用いて重複コードの特徴を分析する.また、異なる特徴を持つ重複コードに対してどのような対応が行われたかも調査する予定である.
次に,これらの調査結果に基づいて、MCRにおける重複コードの対応支援システムを開発する予定である.そのシステムは,Gerritにパッチが投稿されると,自動的にそのパッチに含まれている重複コードを検出し,その特徴を分析する.そして,過去にその特徴を持つ重複コードに対してどのような対応が行われたかに基づいて適切な対応を提案する仕組みである.例えば,長くて複雑度の高い重複コードに対しては,メソッドの抽出といったリファクタリングが最も多く行われていた場合,そのような対応を推薦することで,MCRにおける重複コードに対する適切な対応が期待できる.
|
Causes of Carryover |
現在までのMCRのデータの取得と解析は,主に研究室に事前に用意されているサーバーで実行しているため,次年度使用額が生じた.その金額は,研究を計画的に進めるするために,翌年度分として請求した助成金と合わせて,データの解析や提案システムの構築するための追加サーバーを購入する予定である.また,研究補助のための学生アルバイトを雇うことも計画している.
|