2020 Fiscal Year Research-status Report
多様なプログラミング言語に対応可能なコードクローン検出ツールの開発
Project/Area Number |
20K11745
|
Research Institution | Nagoya University |
Principal Investigator |
吉田 則裕 名古屋大学, 情報学研究科, 准教授 (00582545)
|
Project Period (FY) |
2020-04-01 – 2023-03-31
|
Keywords | コードクローン / 構文解析 / プログラミング言語 |
Outline of Annual Research Achievements |
コードクローンとは,ソフトウェア開発中にコピーアンドペーストなどにより作成された類似したコード片である.コードクローンは,ソフトウェア保守を困難にする要因の1つであるため,検出し管理する必要がある.1990年代以降,数多くのコードクローン検出ツールが提案されたが,そのほとんどは限られたプログラミング言語のみに対応し,対応言語を増加させることが難しい.プログラミング言語は,頻繁に新規開発や文法の更新が行われるため,対応言語を柔軟に追加可能なコードクローン検出ツールが必要であると考えられる.研究代表者は以前に,対象言語の文法の一部を正規表現として抽出し,対応言語を柔軟に増加できるコードクローン検出ツールを開発した.しかし,正規表現では表現能力が不足しているため,対応できない言語がある.加えて,トークン列の照合に基づきコードクローンを検出するため,ステートメントの追加や削除を行ったコードクローンを検出する能力はない. そこで,多様なプログラミング言語に対応可能であり,ステートメントの追加・削除を許容するコードクローン検出ツールを実装した. 具体的には,パーサジェネレータの1つであるANTLRを使用してソースコード正規化を行い,Token Bagモデルを基にコード片の類似度を計算することによって,検出可能なコードクローンの種類を増加させることを試みた.本ツールは,まず構文定義記述から構文解析器を生成する機能で,ソースコード正規化器を自動的に生成する.その次に,生成された正規化器を用いて,ソートコードに構文解析を行い,Token Bagを抽出する.その後,コード片間の類似度を計算する.類似度は,コード片間の共通トークン数を,より大きいコード片のトークン数で割ることで計算する.
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
当初計画していた方法では提起していた問題を解決できないことがわかり,提案手法を大幅に変更したが,同分野の研究者の助言や指導学生の協力により,順調に進展している.
|
Strategy for Future Research Activity |
現在,提案ツールの評価実験を行っている.評価実験の結果により,提案手法の改善を検討する.評価実験の結果が概ね良好であれば,国際会議に論文を投稿する.
|
Causes of Carryover |
新型コロナウィルスの感染拡大による影響で,国内外の学会が中止またはオンライン化され,旅費の大部分が不要となったためである.次年度以降,積極的に国際会議への参加や発表を行う予定である.
|
Research Products
(2 results)