JP5775599B2 - コードクローン検出を用いたインテリジェントコード差分処理 - Google Patents
コードクローン検出を用いたインテリジェントコード差分処理 Download PDFInfo
- Publication number
- JP5775599B2 JP5775599B2 JP2013543486A JP2013543486A JP5775599B2 JP 5775599 B2 JP5775599 B2 JP 5775599B2 JP 2013543486 A JP2013543486 A JP 2013543486A JP 2013543486 A JP2013543486 A JP 2013543486A JP 5775599 B2 JP5775599 B2 JP 5775599B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- importance
- level
- versions
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/62—Uninstallation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
前置きとして述べると、ソフトウェア開発者は、プログラミングの効率化のために、プログラミングプロジェクト内の多数の場所にソースコードのセクションを複製することが多い。ある程度の修正又は適応の有無にかかわらず、ソースコードの一部を再利用することは「コードクローニング」と呼ばれ、正確性の程度を変化させることにより互いに一致又は対応するコードの結果としての部分は「コードクローン」又は単に「クローン」と呼ばれる。また、ある実施形態において、特定の機能性、コンポーネント又はアプリケーションを構築するために使用されるソースコードの1つ以上のファイルのグループは、ファイル内、又はファイル間においてある程度の修正の有無にかかわらず再利用される。1つ以上のファイルのグループは、「コードベース」と呼ばれる。用語「コード」は一貫性を保つために本明細書で使用されているが、その用語は、適用可能な場合には「コードベース」に適用できることが理解されるべきである。
しかしながら、本明細書で提供された実施形態は、任意の特定のデータベース又はシステムの実施に限定することを意図するものではないことが理解できる。更に、特に明記しない限り、様々な実施形態は、任意の特定のコード差分処理又はコードクローニング実施に限定することを意図するものではない。
この分野の当業者は、本明細書に記載のインテリジェントコード差分処理システム及び方法の様々な実施形態がコンピュータネットワークの一部として又は分散コンピューティング環境において配置され得る任意のコンピュータ又は他のクライアント又はサーバ装置に関連して実施され、また、任意の種類のデータストアに接続され得ることを理解することができる。この点で、本明細書に記載された様々な実施形態は、任意の数のメモリ又はストレージユニット、及び任意の数のストレージユニットに亘って生じる任意の数のアプリケーション及び処理を有する任意のコンピュータシステム又は環境で実施することができる。これは、限定されないが、リモート又はローカルストレージ装置を有する、ネットワーク環境又は分散コンピューティング環境に配置されたサーバコンピュータ及びクライアントコンピュータを有する環境を含む。
上述したように、都合の良いことに本明細書に記載された技術は、コード差分処理を行うことが望ましい任意の装置に適用可能である。よって、全ての種類のハンドヘルド、ポータブル及び他のコンピューティング装置とコンピューティングオブジェクトとが様々な実施形態に関連して使用のために考えられていることが理解され得る。従って、図15に記載された以下の汎用リモートコンピュータはコンピューティング装置の一例である。
Claims (15)
- コードクローン検出を用いてインテリジェントコード差分処理を行う方法であって、
実行に応答して、動作を行わせる命令を少なくとも1つのプロセッサによって実行するステップを備え、前記動作は、
ソースコードの少なくとも2つのバージョンを受信することと、
コードクローン検出を用いて前記ソースコードの少なくとも2つのバージョン間のコンテンツ変更のタイプ示す情報を生成することと、
前記コンテンツ変更のタイプに重要度のレベルを関連づけて、重要度のレベルを示す情報を出力することと、を含み
前記コンテンツの変更のタイプは、フォーマットの変更、字句の変更又は論理的変更に少なくとも基づいていることを特徴とする方法。 - コードの少なくとも2つの部分を出力することを更に備え、前記コードの少なくとも2つの部分は前記コードクローンの検出の出力に基づいて決定された互いに対応する前記ソースコードの少なくとも2つのバージョンの異なる部分に各々対応することを特徴とする請求項1に記載の方法。
- 前記ソースコードの少なくとも2つのバージョンは、ソースコードの第1のバージョン及びソースコードの第2のバージョンを備え、前記コードクローン検出を用いて第1のブランチで前記第1のバージョンを処理することと、前記コードクローン検出を用いて第2のブランチで前記第2のバージョンを処理することと、をさらに含むことを特徴とする請求項1に記載の方法。
- 少なくともコードクローン検出の出力に基づいて互いに対応する前記ソースコードの少なくとも2つのバージョンの異なる部分を決定すること、をさらに含み、
前記決定することは、類似度の所定のレベルより高い類似度のレベルを互いに有する前記ソースコードの少なくとも2つのバージョンの前記異なる部分を決定することを含むことを特徴とする請求項1に記載の方法。 - クライアント装置からネットワークを介してサーバに設けられた前記コードクローン検出にアクセスすることを更に含むことを特徴とする請求項1に記載の方法。
- 前記重要度のレベルを示す情報を出力することは、前記コンテンツ変更のタイプに割り当てられた数値に基づいて、前記重要度のレベルを示す情報を出力することを特徴とする、請求項1に記載の方法。
- 前記フォーマットの変更は重要度の第1のレベルに対応し、前記字句の変更は重要度の第2のレベルに対応し、前記論理的変更は重要度の第3のレベルに対応し、前記重要度の第3のレベルは前記重要度の第2のレベルより大であり、前記重要度の第2のレベルは前記重要度の第1のレベルより大であることを特徴とする請求項1に記載の方法。
- コードクローン検出技術を用いるインテリジェントコード差分処理システムであって、
ソースコードの少なくとも2つのバージョン間のコンテンツ変更のタイプの判定を示す情報を生成するように構成されたクローン検出コンポーネントと、
前記ソースコードの少なくとも2つのバージョン間の前記コンテンツ変更の前記タイプと関連付けられた重要度のレベルを決定し、前記重要度のレベルを示す情報を出力するように構成された重要度エンジンと
を備え
前記重要度のレベルは、前記ソースコードの少なくとも2つのバージョン間の前記コンテンツ変更の前記タイプがフォーマットの変更、字句の変更又は論理的変更であるか否かに少なくとも基づいていることを特徴とするシステム。 - 前記フォーマットの変更は重要度の第1のレベルに対応し、前記字句の変更は重要度の第2のレベルに対応し、前記論理的変更は重要度の第3のレベルに対応し、前記重要度の第3のレベルは前記重要度の第2のレベルより大であり、前記重要度の第2のレベルは前記重要度の第1のレベルより大であることを特徴とする請求項8に記載のシステム。
- 前記ソースコードの少なくとも2つのバージョン間の前記コンテンツ変更の前記タイプの特徴付けを決定するように構成された特徴付けエンジンを更に備え、前記特徴付けはセマンティック情報を含むことを特徴とする請求項8に記載のシステム。
- 前記重要度エンジンは、前記特徴付けに少なくとも基づいて前記重要度のレベルを決定するように更に構成されていることを特徴とする請求項10に記載のシステム。
- 前記重要度エンジンは、前記特徴付けに値を割り当てるように更に構成されていることを特徴とする請求項11に記載のシステム。
- 前記値はパーセンテージであることを特徴とする請求項12に記載のシステム。
- 前記特徴付けは、新しいコードスニペット又は関数、複製されたコードスニペット又は関数、移動された関数、リネームされた関数、修正された関数、削除されたコードスニペット又は関数、又は移動及びリネームされた関数の組み合わせの少なくとも1つであることを特徴とする請求項11に記載のシステム。
- 前記重要度のレベルを示す情報の視覚化したものを生成し、及び出力するように構成された視覚化エンジンを更に含むことを特徴とする請求項8に記載のシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2010/079801 WO2012079230A1 (en) | 2010-12-15 | 2010-12-15 | Intelligent code differencing using code clone detection |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013546090A JP2013546090A (ja) | 2013-12-26 |
JP5775599B2 true JP5775599B2 (ja) | 2015-09-09 |
Family
ID=46243972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013543486A Active JP5775599B2 (ja) | 2010-12-15 | 2010-12-15 | コードクローン検出を用いたインテリジェントコード差分処理 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP2652621A4 (ja) |
JP (1) | JP5775599B2 (ja) |
KR (1) | KR101732764B1 (ja) |
CN (1) | CN103262047B (ja) |
CA (2) | CA2967251C (ja) |
WO (1) | WO2012079230A1 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446723B (zh) * | 2014-09-02 | 2018-11-23 | 国际商业机器公司 | 用于标识源代码版本之间的语义区别的方法和装置 |
CN104407872B (zh) * | 2014-12-04 | 2018-01-16 | 北京邮电大学 | 代码克隆的检测方法 |
KR101568224B1 (ko) | 2014-12-26 | 2015-11-11 | 고려대학교 산학협력단 | 소프트웨어 취약점 분석방법 및 분석장치 |
CN104572471B (zh) * | 2015-01-28 | 2017-10-03 | 杭州电子科技大学 | 一种基于索引的Java软件代码克隆检测方法 |
WO2016130542A1 (en) | 2015-02-10 | 2016-08-18 | The Trustees Of Columbia University In The City Of New York | Code relatives detection |
JP2017156937A (ja) * | 2016-03-01 | 2017-09-07 | ヤンマー株式会社 | 端末装置およびソフトウェア書き換えプログラム |
KR101780233B1 (ko) | 2016-04-26 | 2017-09-21 | 고려대학교 산학협력단 | 소프트웨어의 코드 클론 탐지 장치 및 방법 |
US10191737B2 (en) | 2016-06-29 | 2019-01-29 | Accenture Global Solutions Limited | Program code comparison and reporting |
US10621195B2 (en) | 2016-09-20 | 2020-04-14 | Microsoft Technology Licensing, Llc | Facilitating data transformations |
US10706066B2 (en) | 2016-10-17 | 2020-07-07 | Microsoft Technology Licensing, Llc | Extensible data transformations |
US10776380B2 (en) | 2016-10-21 | 2020-09-15 | Microsoft Technology Licensing, Llc | Efficient transformation program generation |
US11170020B2 (en) | 2016-11-04 | 2021-11-09 | Microsoft Technology Licensing, Llc | Collecting and annotating transformation tools for use in generating transformation programs |
US11163788B2 (en) | 2016-11-04 | 2021-11-02 | Microsoft Technology Licensing, Llc | Generating and ranking transformation programs |
CN106919403B (zh) * | 2017-03-16 | 2019-12-13 | 杭州鹿径科技有限公司 | 云环境下基于Java字节码的多粒度代码克隆检测方法 |
CN106951743A (zh) * | 2017-03-22 | 2017-07-14 | 上海英慕软件科技有限公司 | 一种软件代码侵权检测方法 |
US10402311B2 (en) | 2017-06-29 | 2019-09-03 | Microsoft Technology Licensing, Llc | Code review rebase diffing |
SE1751167A1 (en) * | 2017-09-20 | 2019-03-21 | Empear Ab | Identifying parts of a software code that are associated via alteration |
CN109558314B (zh) * | 2018-11-09 | 2021-07-27 | 国网四川省电力公司电力科学研究院 | 一种面向Java源代码克隆检测的方法 |
CN109828785B (zh) * | 2019-01-23 | 2022-04-12 | 复旦大学 | 一种采用gpu加速的近似代码克隆检测方法 |
CN110737469B (zh) * | 2019-09-29 | 2021-09-03 | 南京大学 | 一种功能粒度上基于语义信息的源代码相似度评估方法 |
US11048487B1 (en) * | 2019-12-27 | 2021-06-29 | The Mathworks, Inc. | Syntactical change-resistant code generation |
KR102282705B1 (ko) * | 2019-12-30 | 2021-07-29 | 한양대학교 에리카산학협력단 | 어셈블리 코드에서 패치된 소스 코드 구성 방법 및 그 장치 |
CN111240740B (zh) * | 2020-01-23 | 2021-09-17 | 复旦大学 | 基于演化历史分析的代码克隆危害性评估方法 |
KR102318714B1 (ko) | 2020-01-31 | 2021-10-28 | 고려대학교 산학협력단 | 바이너리 코드 클론 기반 소프트웨어 취약점 탐지를 위한 컴퓨터 프로그램 |
JP2022023523A (ja) | 2020-07-27 | 2022-02-08 | 富士通株式会社 | 警告マッチングプログラム、警告マッチング方法及び警告マッチング装置 |
CN112148359B (zh) * | 2020-10-10 | 2022-07-05 | 中国人民解放军国防科技大学 | 一种基于子块过滤的分布式代码克隆检测与搜索方法、系统及介质 |
CN112215013B (zh) * | 2020-11-02 | 2022-04-19 | 天津大学 | 一种基于深度学习的克隆代码语义检测方法 |
CN116302089B (zh) * | 2023-05-23 | 2023-08-18 | 华中科技大学 | 基于图片相似度的代码克隆检测方法、系统及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08221265A (ja) * | 1995-02-10 | 1996-08-30 | Toshiba Corp | ソフトウエア開発支援装置 |
DE102004010179A1 (de) * | 2004-03-02 | 2005-10-06 | Siemens Ag | Verfahren und Datenverarbeitungsgerät zur Aktualisierung von Rechnerprogrammen per Datenübertragung |
JP2006018693A (ja) * | 2004-07-02 | 2006-01-19 | Fujitsu Ltd | 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法 |
JP2006277127A (ja) * | 2005-03-28 | 2006-10-12 | Canon Inc | 修正プログラムの比較方法 |
JP4134218B2 (ja) * | 2006-11-16 | 2008-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 回帰テストにおいて実施すべきテストケースの優先度を決定するための情報処理装置、方法、及びプログラム |
JP2008197982A (ja) * | 2007-02-14 | 2008-08-28 | Toshiba Corp | ソースコード保護装置 |
JP2009176064A (ja) * | 2008-01-24 | 2009-08-06 | Fuji Electric Holdings Co Ltd | ソフトウェアリファクタリング支援装置および方法 |
JP2009199172A (ja) * | 2008-02-19 | 2009-09-03 | Hitachi Ltd | 情報処理システム、プログラム中の類似箇所特定方法、及びプログラム |
JP5208635B2 (ja) * | 2008-09-12 | 2013-06-12 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム |
-
2010
- 2010-12-15 JP JP2013543486A patent/JP5775599B2/ja active Active
- 2010-12-15 CN CN201080070705.0A patent/CN103262047B/zh active Active
- 2010-12-15 CA CA2967251A patent/CA2967251C/en active Active
- 2010-12-15 WO PCT/CN2010/079801 patent/WO2012079230A1/en active Application Filing
- 2010-12-15 EP EP10860883.7A patent/EP2652621A4/en not_active Ceased
- 2010-12-15 CA CA2820758A patent/CA2820758A1/en not_active Abandoned
- 2010-12-15 KR KR1020137015514A patent/KR101732764B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
CA2967251A1 (en) | 2012-06-21 |
CA2967251C (en) | 2020-04-07 |
JP2013546090A (ja) | 2013-12-26 |
KR20140001951A (ko) | 2014-01-07 |
EP2652621A4 (en) | 2014-08-20 |
CN103262047A (zh) | 2013-08-21 |
CA2820758A1 (en) | 2012-06-21 |
EP2652621A1 (en) | 2013-10-23 |
WO2012079230A1 (en) | 2012-06-21 |
KR101732764B1 (ko) | 2017-05-04 |
CN103262047B (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5775599B2 (ja) | コードクローン検出を用いたインテリジェントコード差分処理 | |
US10540350B2 (en) | Source code search engine | |
US11789715B2 (en) | Systems and methods for transformation of reporting schema | |
US9811325B2 (en) | Systems and methods for dynamically replacing code objects for code pushdown | |
US8429645B2 (en) | Method for optimizing migration of software applications to address needs | |
JP2014503910A (ja) | コードクローンの通知およびアーキテクチャの変更の視覚化 | |
Fokaefs et al. | Wsdarwin: Studying the evolution of web service systems | |
Ordiales Coscia et al. | Anti-pattern free code-first web services for state-of-the-art Java WSDL generation tools | |
Bavota et al. | The market for open source: An intelligent virtual open source marketplace | |
Schröder et al. | An empirical investigation of command-line customization | |
US20160048487A1 (en) | Functional component history tracking | |
Conforti et al. | Analysis of business process variants in apromore | |
US20240111523A1 (en) | Chained pull requests in a source code management system | |
Jiao et al. | Towards a lightweight SOA framework for enterprise cloud computing | |
Cesario et al. | DyeVC: an approach for monitoring and visualizing distributed repositories | |
Bhattacharyya et al. | Automatic Code Clone Detection Technique Using SDG | |
Alturki | Jory: A Tool for Feature Modelling Based on Product Families Algebra and BDDs | |
Cumbo et al. | approved, 1 approved with reservations, 1 not approved | |
Cumbo et al. | Selecting relevant nodes and structures in biological networks. BiNAT: a new plugin for Cytoscape [version 1; referees: 1 approved, 1 approved with reservations, 1 not approved] | |
Cumbo et al. | approved with reservations 1, not approved 1 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20130827 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20130828 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131205 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140910 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140917 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141217 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20150521 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150605 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150703 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5775599 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |