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

开发可支持多种编程语言的代码克隆检测工具

基本信息

项目摘要

コードクローンとは,ソフトウェア開発中にコピーアンドペーストなどにより作成された類似したコード片である.コードクローンは,ソフトウェア保守を困難にする要因の1つであるため,検出し管理する必要がある.1990年代以降,数多くのコードクローン検出ツールが提案されたが,そのほとんどは限られたプログラミング言語のみに対応し,対応言語を増加させることが難しい.プログラミング言語は,頻繁に新規開発や文法の更新が行われるため,対応言語を柔軟に追加可能なコードクローン検出ツールが必要であると考えられる.研究代表者は以前に,対象言語の文法の一部を正規表現として抽出し,対応言語を柔軟に増加できるコードクローン検出ツールを開発した.しかし,正規表現では表現能力が不足しているため,対応できない言語がある.加えて,トークン列の照合に基づきコードクローンを検出するため,ステートメントの追加や削除を行ったコードクローンを検出する能力はない.そこで,多様なプログラミング言語に対応可能であり,ステートメントの追加・削除を許容するコードクローン検出ツールを実装した. 具体的には,パーサジェネレータの1つであるANTLRを使用してソースコード正規化を行い,Token Bagモデルを基にコード片の類似度を計算することによって,検出可能なコードクローンの種類を増加させることを試みた.研究成果を論文にまとめ,国際会議30th IEEE/ACM International Conference on Program Comprehension (ICPC 2022)に投稿し,採録されたため発表を行った.また,大規模ソースコード集合CodeNetを用いた評価実験に取り組んだ.
代码克隆是在软件开发过程中通过复制和粘贴创建的一段类似代码。代码克隆是导致软件维护困难的因素之一,因此需要对其进行检测和管理。自20世纪90年代以来,已经提出了许多代码克隆检测工具,但大多数只兼容有限数量的编程语言,并且很难增加支持的语言数量。由于新的编程语言频繁开发、语法更新,因此需要一种能够灵活添加兼容语言的代码克隆检测工具。首席研究员此前开发了一种代码克隆检测工具,可以通过提取目标语言的部分语法作为正则表达式来灵活增加支持的语言数量。然而,有一些语言由于缺乏表达能力而无法得到正则表达式的支持。此外,由于代码克隆是根据匹配的标记字符串来检测的,因此无法检测已添加或删除语句的代码克隆。因此,我们实现了一个兼容多种编程语言并允许添加和删除语句的代码克隆检测工具。 具体来说,通过使用 ANTLR(解析器生成器之一)对源代码进行规范化,并根据我尝试的 Token Bag 模型计算代码片段的相似度,可以增加可检测的代码克隆类型。我们将研究成果总结成一篇论文,提交给第30届IEEE/ACM国际程序理解会议(ICPC 2022),并按被接受的样子进行展示。我们还利用大规模源代码集合CodeNet进行了评估实验。

项目成果

期刊论文数量(9)
专著数量(0)
科研奖励数量(0)
会议论文数量(0)
专利数量(0)
深層学習を用いたコードクローン検出器の汎化性能に関する調査
使用深度学习研究代码克隆检测器的泛化性能
  • DOI:
  • 发表时间:
    2021
  • 期刊:
  • 影响因子:
    0
  • 作者:
    福家 範浩;藤原 裕士;吉田 則裕;崔 恩瀞;井上 克郎
  • 通讯作者:
    井上 克郎
コードクローン検出に基づくIoTを対象とした自動パッチ生成
基于代码克隆检测的物联网自动补丁生成
  • DOI:
  • 发表时间:
    2022
  • 期刊:
  • 影响因子:
    0
  • 作者:
    大野 堅太郎;吉田 則裕;朱 文青;高田 広章
  • 通讯作者:
    高田 広章
深層学習を用いたコードクローン検出器のベンチマーク間精度調査
使用深度学习的代码克隆检测器的基准准确性调查
  • DOI:
  • 发表时间:
    2022
  • 期刊:
  • 影响因子:
    0
  • 作者:
    福家 範浩;藤原 裕士;吉田 則裕;崔 恩瀞;井上 克郎
  • 通讯作者:
    井上 克郎
A Survey of Approaches for Code Clone Search
代码克隆搜索方法综述
  • DOI:
    10.11309/jssst.39.3_47
  • 发表时间:
    2022
  • 期刊:
  • 影响因子:
    0
  • 作者:
    崔 恩瀞;藤原 裕士;吉田 則裕;水野 修
  • 通讯作者:
    水野 修
A Dynamic Improvement of a Training Dataset for Source Code Classification Using Deep Learning
使用深度学习动态改进源代码分类训练数据集
{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

数据更新时间:{{ journalArticles.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ monograph.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ sciAawards.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ conferencePapers.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ patent.updateTime }}

吉田 則裕其他文献

Fuzz4B: A Support Tool for Fuzzing with AFL
Fuzz4B:使用 AFL 进行模糊测试的支持工具
  • DOI:
    10.11309/jssst.39.2_124
  • 发表时间:
    2022
  • 期刊:
  • 影响因子:
    0
  • 作者:
    宮木 龍;吉田 則裕;藤原 賢二;都築 夏樹;山本 椋太;高田 広章
  • 通讯作者:
    高田 広章
Matching Automaton for String Pattern with Greedy Semantics
具有贪婪语义的字符串模式匹配自动机
  • DOI:
  • 发表时间:
    2011
  • 期刊:
  • 影响因子:
    0
  • 作者:
    平山 力地;吉田 則裕;飯田 元;Taro Suzuki
  • 通讯作者:
    Taro Suzuki
コードクローンに対するリファクタリング可能性に基づいた削減可能ソースコード量の調査
研究基于代码克隆的可重构性可以减少的源代码量
  • DOI:
  • 发表时间:
    2017
  • 期刊:
  • 影响因子:
    0
  • 作者:
    石津 卓也;吉田 則裕;崔 恩瀞;井上 克郎
  • 通讯作者:
    井上 克郎
解答ソースコードを用いたプログラミング演習問題に対するタグ付け手法の提案
提出一种使用答案源代码进行编程练习问题的标记方法
  • DOI:
  • 发表时间:
    2022
  • 期刊:
  • 影响因子:
    0
  • 作者:
    川渕 皓太;松下 誠;吉田 則裕;井上 克郎
  • 通讯作者:
    井上 克郎
皮膚電気刺激と力覚の融合による硬軟感の高品位化の検討
皮肤电刺激与力觉相结合提高软硬度感觉质量的研究
  • DOI:
  • 发表时间:
    2021
  • 期刊:
  • 影响因子:
    0
  • 作者:
    藤原 裕士;崔 恩瀞;吉田 則裕;井上 克郎;青谷 和真,安藤 慎太郎,井上 雄介,齋藤 大輔,峯松 信明;須賀悠偉,竹内将大,田中叡,梶本裕之
  • 通讯作者:
    須賀悠偉,竹内将大,田中叡,梶本裕之

吉田 則裕的其他文献

{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

{{ truncateString('吉田 則裕', 18)}}的其他基金

ファジングが発見した不具合の自動修正技術
Fuzzing发现的缺陷自动修正技术
  • 批准号:
    24K02923
  • 财政年份:
    2024
  • 资助金额:
    $ 2.41万
  • 项目类别:
    Grant-in-Aid for Scientific Research (B)
デバッグ支援を目的とした類似コードの検出・分類手法
用于调试支持的相似代码检测和分类方法
  • 批准号:
    08J01964
  • 财政年份:
    2008
  • 资助金额:
    $ 2.41万
  • 项目类别:
    Grant-in-Aid for JSPS Fellows

相似海外基金

「なめらかな編集」のためのプログラミング言語仕様の拡大と縮小
“平滑编辑”的编程语言规范的扩展和收缩
  • 批准号:
    22K11981
  • 财政年份:
    2022
  • 资助金额:
    $ 2.41万
  • 项目类别:
    Grant-in-Aid for Scientific Research (C)
Construction of mathematical optimization methods for discrete data useful in machine learning algorithms.
构建可用于机器学习算法的离散数据的数学优化方法。
  • 批准号:
    17K19973
  • 财政年份:
    2017
  • 资助金额:
    $ 2.41万
  • 项目类别:
    Grant-in-Aid for Challenging Research (Exploratory)
A systematic approach to implementing context-sensitive code completion
实现上下文相关代码完成的系统方法
  • 批准号:
    16K00106
  • 财政年份:
    2016
  • 资助金额:
    $ 2.41万
  • 项目类别:
    Grant-in-Aid for Scientific Research (C)
Realtime type error debugging
实时类型错误调试
  • 批准号:
    16K16040
  • 财政年份:
    2016
  • 资助金额:
    $ 2.41万
  • 项目类别:
    Grant-in-Aid for Young Scientists (B)
Investigation of English in Academic Papers by Japanese Researchers Based on Syntactic Changes
基于句法变化的日本学者学术论文英语研究
  • 批准号:
    26284084
  • 财政年份:
    2014
  • 资助金额:
    $ 2.41万
  • 项目类别:
    Grant-in-Aid for Scientific Research (B)
{{ showInfoDetail.title }}

作者:{{ showInfoDetail.author }}

知道了