投稿

ラベル(コードクローン)が付いた投稿を表示しています

【論文メモ】<2022>Survey on Software code clone detection

  原論文 (PDF) Survey on Software code clone detection (researchgate.net) ソフトウェアクローンの種類、およびそれらを検出するために使用される方法について解説した論文。また、2022年1月までのこの分野の研究のリストも含まれている。

【論文メモ】A systematic literature review on source code similarity measurement and clone detection: techniques, applications, and challenges

  原論文 A systematic literature review on source code similarity measurement (arxiv.org) Abstract ソースコードの類似性を測定し評価することは、コード推薦、重複コード、盗作、マルウェア、およびスメル(異臭)検出など、幅広いアプリケーションにおける基本的なソフトウェアエンジニアリング活動です。本論文は、既存のアプローチとその特性に光を当てるため、コードの類似性測定と評価技術に関する体系的な文献レビューとメタ分析を提案します。私たちは最初に、4つのデジタルライブラリをクエリして1万以上の記事を見つけ、最終的に136件の主要な研究を抽出しました。研究は、その方法論、プログラミング言語、データセット、ツール、およびアプリケーションに従って分類されました。深い調査の結果、5つのアプリケーションドメインで8つの異なる技術を用いて動作するソフトウェアツールが80あります。ツールの約49%がJavaプログラムで動作し、37%がCおよびC++をサポートしていますが、多くのプログラミング言語はサポートされていません。注目すべき点は、ソースコードの類似性測定と重複コードに関連する12のデータセットが存在し、そのうちの8つのデータセットのみが公開されていることでした。信頼性のあるデータセットの不足、経験的評価、ハイブリッド手法、およびマルチパラダイム言語への焦点が、この分野の主な課題です。コードの類似性測定の新興アプリケーションは、メンテナンスに加えて開発フェーズに集中しています。

【論文メモ】<2022>コードクローン検索手法の調査

原論文:   _pdf (jst.go.jp) 自然文をクエリとしたコード検索手法 Leveraging usage similarity for effective retrieval of examples in code repositories [2], 2010 Leveraging usage similarity for effective retrieval of examples in code repositories | Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering Deep Code Search [12], 2018 Deep Code Search | IEEE Conference Publication | IEEE Xplore Sourcerer: mining and searching internet-scale software repositories [25], 2009 Sourcerer: mining and searching internet-scale software repositories: Data Mining and Knowledge Discovery: Vol 18, No 2 (acm.org) コード片をクエリとしたコード検索手法  

【論文要約】Code-to-Code Search Based on Deep Neural Network and Code Mutation

Code-to-Code Search Based on Deep Neural Network and Code Mutation (osaka-u.ac.jp) 要旨 深層ニューラルネットワーク(DNN)は、画像ファイルのラベリング(例:物体検出)によく使用されています。ソフトウェアエンジニアリングにおけるコードフラグメントのラベリング(すなわち、コード間の検索)にも適用できますが、DNNの学習プロセスでは、各ラベルに対して多数のコードフラグメントが必要です。本論文では、DNNモデルとコードの変異に基づくコード間の検索手法を提案し、各ラベルに十分な数のコードフラグメントを生成します。予備実験では、提案手法の高い適合率と再現率が示されています。 はじめに 開発者はしばしば、他のコードフラグメントと同様の機能を提供するコードフラグメントを探しています。例えば、開発者は、より効率的で信頼性の高い実装を見つける必要があるかもしれません。また、OSSプロジェクトやStack Overflowなどの議論プラットフォームからコードフラグメントを見つけた場合、元のコードフラグメントのライセンスを特定するだけでなく、より脆弱性の少ないものを見つける必要があるかもしれません。これまでに、類似機能のコードフラグメントを探すためのコード対コードの検索手法がいくつか提案されています。 これまでに、深層ニューラルネットワーク(DNN)は、コンピュータビジョン分野での物体検出だけでなく、ソフトウェアエンジニアリング分野でのコードクローン検出にも使用されてきました。私たちの主な洞察は、ソースコードから機能に応じてコードフラグメントにラベル付けするためにDNNを使用することです。DNNによるラベリングが成功すると、その結果のラベリングはコード対コードの検索に使用できます。この洞察は、画像の部分をピクセル特性に応じてDNNでラベリングすることから得られました。 本論文では、Feed-Forward Neural Network(FFNNと呼ばれる)を使用したコードブロック検索のアプローチを提案します。私たちのアプローチは、クエリコードフラグメントに対応する類似したコードフラグメントを見つけることができます。私たちのコード検索アプローチは、STEP L(学習)とSTEP S(検索)の2つのステップで...

【論文要約】Code-to-Code Search Based on Deep Neural Network and Code Mutation

コードクローンの関連でチェックしたい論文: Code-to-Code Search Based on Deep Neural Network and Code Mutation (osaka-u.ac.jp) Abstract of the paper in 2 lines: The paper presents an approach for code-to-code search using a Deep Neural Network (DNN) model and code mutation to generate sufficient code fragments for each label. The preliminary experiment demonstrates high precision and recall of the proposed approach.[1] What are the contributions of this paper The paper presents an approach for code-to-code search based on a Deep Neural Network (DNN) model and code mutation, which generates sufficient code fragments for each label.[1] The approach consists of two steps: STEP L (Learning) and STEP S (Search), enabling the identification of similar code fragments corresponding to a query code fragment.[2] A case study conducted on three open-source software systems, HBase 2.04, OpenSSL 0.9.1 1.1.05, and FreeBSD 11.1.06, demonstrates the effectiveness of the approach in terms of precision, recall, and F-measure...

コードクローン検索に機械学習をどのように使う?

 コードクローン検索に機械学習をどのように使う? コードクローン検索(Code Clone Detection)に機械学習を活用することは、コードの類似性を検出し、重複するコードの特定やソフトウェアの品質向上に役立つ。以下に、機械学習をコードクローン検索にどのように組み込めるかを説明。 特徴ベースの手法: 機械学習アルゴリズムを用いて、ソースコードから特徴を抽出する。特徴は、例えばトークン(単語やシンボル)の出現頻度、行列(行の並び方)、AST(抽象構文木)の形状、コードメトリクス(行数、変数の数など)などがある。これらの特徴を元に、コードの類似性を評価する。 監視学習(Supervised Learning): ラベル付きのトレーニングデータを使用して、機械学習モデルをトレーニングする。ラベルは、コードのクローンのペアが「クローン」と「非クローン」のどちらであるかを示す。このようなモデルは、未知のコードクローンを検出するのに使用できる。 教師なし学習(Unsupervised Learning): ラベルが不明な場合、クラスタリングアルゴリズム(例: k-means、DBSCAN)を使用して、コードをクラスタリングし、類似したコードのグループを見つける。これにより、潜在的なコードクローンを特定することができます。 シーケンス・モデル: リカレントニューラルネットワーク(RNN)やトランスフォーマーベースのモデルを使用して、コードのシーケンスデータを処理する。これにより、文脈に基づいたコードクローンの検出が向上することがある。 ディープラーニング: ニューラルネットワークモデルを用いたディープラーニングアプローチもある。たとえば、Siameseネットワークを使用して、コードの類似性を学習することができる。 埋め込み表現: コードを埋め込み表現に変換し、埋め込みベクトルの類似性を計算することで、コードクローンを検出する方法もある。Word2VecやDoc2Vecのようなテキスト埋め込み技術を応用できる。 機械学習を用いたコードクローン検出には、大量のデータとトレーニングが必要である。また、モデルのパラメータ調整や特徴エンジニアリングが重要である。さらに、高精度の検出を実現するために、多くのアプローチとハイブリッドアプローチが提案されている。コードクローン検出は...