• 研究課題をさがす
  • 研究者をさがす
  • KAKENの使い方
  1. 課題ページに戻る

2020 年度 実施状況報告書

多様なプログラミング言語に対応可能なコードクローン検出ツールの開発

研究課題

研究課題/領域番号 20K11745
研究機関名古屋大学

研究代表者

吉田 則裕  名古屋大学, 情報学研究科, 准教授 (00582545)

研究期間 (年度) 2020-04-01 – 2023-03-31
キーワードコードクローン / 構文解析 / プログラミング言語
研究実績の概要

コードクローンとは,ソフトウェア開発中にコピーアンドペーストなどにより作成された類似したコード片である.コードクローンは,ソフトウェア保守を困難にする要因の1つであるため,検出し管理する必要がある.1990年代以降,数多くのコードクローン検出ツールが提案されたが,そのほとんどは限られたプログラミング言語のみに対応し,対応言語を増加させることが難しい.プログラミング言語は,頻繁に新規開発や文法の更新が行われるため,対応言語を柔軟に追加可能なコードクローン検出ツールが必要であると考えられる.研究代表者は以前に,対象言語の文法の一部を正規表現として抽出し,対応言語を柔軟に増加できるコードクローン検出ツールを開発した.しかし,正規表現では表現能力が不足しているため,対応できない言語がある.加えて,トークン列の照合に基づきコードクローンを検出するため,ステートメントの追加や削除を行ったコードクローンを検出する能力はない.
そこで,多様なプログラミング言語に対応可能であり,ステートメントの追加・削除を許容するコードクローン検出ツールを実装した. 具体的には,パーサジェネレータの1つであるANTLRを使用してソースコード正規化を行い,Token Bagモデルを基にコード片の類似度を計算することによって,検出可能なコードクローンの種類を増加させることを試みた.本ツールは,まず構文定義記述から構文解析器を生成する機能で,ソースコード正規化器を自動的に生成する.その次に,生成された正規化器を用いて,ソートコードに構文解析を行い,Token Bagを抽出する.その後,コード片間の類似度を計算する.類似度は,コード片間の共通トークン数を,より大きいコード片のトークン数で割ることで計算する.

現在までの達成度 (区分)
現在までの達成度 (区分)

2: おおむね順調に進展している

理由

当初計画していた方法では提起していた問題を解決できないことがわかり,提案手法を大幅に変更したが,同分野の研究者の助言や指導学生の協力により,順調に進展している.

今後の研究の推進方策

現在,提案ツールの評価実験を行っている.評価実験の結果により,提案手法の改善を検討する.評価実験の結果が概ね良好であれば,国際会議に論文を投稿する.

次年度使用額が生じた理由

新型コロナウィルスの感染拡大による影響で,国内外の学会が中止またはオンライン化され,旅費の大部分が不要となったためである.次年度以降,積極的に国際会議への参加や発表を行う予定である.

  • 研究成果

    (2件)

すべて 2021 2020

すべて 雑誌論文 (1件) (うち査読あり 1件、 オープンアクセス 1件) 学会発表 (1件)

  • [雑誌論文] 多様なプログラミング言語に対応可能なコードクローン検出ツールCCFinderSW2020

    • 著者名/発表者名
      瀬村 雄一、吉田 則裕、崔 恩瀞、井上 克郎
    • 雑誌名

      電子情報通信学会論文誌D 情報・システム

      巻: J103-D ページ: 215~227

    • DOI

      10.14923/transinfj.2019PDP0025

    • 査読あり / オープンアクセス
  • [学会発表] 深層学習を用いたコードクローン検出器の汎化性能に関する調査2021

    • 著者名/発表者名
      福家 範浩, 藤原 裕士, 吉田 則裕, 崔 恩瀞, 井上 克郎
    • 学会等名
      情報処理学会 第207回 ソフトウェア工学研究発表会

URL: 

公開日: 2021-12-27  

サービス概要 検索マニュアル よくある質問 お知らせ 利用規程 科研費による研究の帰属

Powered by NII kakenhi