JP6933012B2 - 解析装置、解析プログラムおよび解析方法 - Google Patents
解析装置、解析プログラムおよび解析方法 Download PDFInfo
- Publication number
- JP6933012B2 JP6933012B2 JP2017117277A JP2017117277A JP6933012B2 JP 6933012 B2 JP6933012 B2 JP 6933012B2 JP 2017117277 A JP2017117277 A JP 2017117277A JP 2017117277 A JP2017117277 A JP 2017117277A JP 6933012 B2 JP6933012 B2 JP 6933012B2
- Authority
- JP
- Japan
- Prior art keywords
- source codes
- unit
- graph
- analysis
- terminal
- 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/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Description
←t)について、コピーしたグラフ上の「D」の端子―iが他の端子と接する各エッジーi←s(またはーi→s)に対し、エッジs→t(またはs←t)を作る(ステップS210)。
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化する変換部と、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約する縮約部と、
縮約された前記各グラフを比較して前記2つのソースコードの差異を出力する比較部と
を有することを特徴とする解析装置。
前記処理に対応する第1ノードと、前記データの参照に対応する第2ノードと、前記データの設定に対応する第3ノードとの接続関係を示す3部グラフに変換する
ことを特徴とする付記1に記載の解析装置。
ことを特徴とする付記1または2に記載の解析装置。
前記比較部は、
前記各グラフの前記ハッシュ値を比較して前記差異を出力する
ことを特徴とする付記1〜3のいずれか一に記載の解析装置。
前記各グラフを前記処理の流れおよび前記データの流れの方向とは逆向きに辿って前記ハッシュ値を算出する
ことを特徴とする付記4に記載の解析装置。
算出された前記ハッシュ値同士が一致する場合に、前記2つのソースコードの前記差異が無いことを示す情報を出力する
ことを特徴とする付記4または5に記載の解析装置。
比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成し、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化し、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約し、
縮約された前記各グラフを比較して前記2つのソースコードの差異を出力する
処理を実行させることを特徴とする解析プログラム。
前記処理に対応する第1ノードと、前記データの参照に対応する第2ノードと、前記データの設定に対応する第3ノードとの接続関係を示す3部グラフに変換する
ことを特徴とする付記7に記載の解析プログラム。
ことを特徴とする付記7または8に記載の解析プログラム。
前記出力する処理は、
前記各グラフの前記ハッシュ値を比較して前記差異を出力する
ことを特徴とする付記7〜9のいずれか一に記載の解析プログラム。
前記各グラフを前記処理の流れおよび前記データの流れの方向とは逆向きに辿って前記ハッシュ値を算出する
ことを特徴とする付記10に記載の解析プログラム。
算出された前記ハッシュ値同士が一致する場合に、前記2つのソースコードの前記差異が無いことを示す情報を出力する
ことを特徴とする付記10または11に記載の解析プログラム。
比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成し、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化し、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約し、
縮約された前記各グラフを比較して前記2つのソースコードの差異を出力する
処理を実行することを特徴とする解析方法。
前記処理に対応する第1ノードと、前記データの参照に対応する第2ノードと、前記データの設定に対応する第3ノードとの接続関係を示す3部グラフに変換する
ことを特徴とする付記13に記載の解析方法。
ことを特徴とする付記13または14に記載の解析方法。
前記出力する処理は、
前記各グラフの前記ハッシュ値を比較して前記差異を出力する
ことを特徴とする付記13〜15のいずれか一に記載の解析方法。
前記各グラフを前記処理の流れおよび前記データの流れの方向とは逆向きに辿って前記ハッシュ値を算出する
ことを特徴とする付記16に記載の解析方法。
算出された前記ハッシュ値同士が一致する場合に、前記2つのソースコードの前記差異が無いことを示す情報を出力する
ことを特徴とする付記16または17に記載の解析方法。
11 受付部
12 解析部
13 変換部
14 結合部
15 縮約部
16 算出部
17 比較部
111 ソースコードファイル群格納部
112 抽象構文木格納部
113 3部グラフ格納部
114 結合グラフ格納部
115 縮約グラフ格納部
116 ハッシュ値格納部
SC,SCa,SCb ソースコード
Claims (8)
- 比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成する解析部と、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化する変換部と、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約する縮約部と、
縮約された前記各グラフを比較して前記2つのソースコードの差異を出力する比較部とを有し、
前記変換部は、
前記処理に対応する第1ノードと、前記データの参照に対応する第2ノードと、前記データの設定に対応する第3ノードとの接続関係を示す3部グラフに変換する
ことを特徴とする解析装置。 - 比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成する解析部と、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化する変換部と、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約する縮約部と、
縮約された前記各グラフに基づいて、前記各グラフを前記処理の流れおよび前記データの流れの方向とは逆向きに辿ってハッシュ値を算出する算出部と、
縮約された前記各グラフの前記ハッシュ値を比較して前記2つのソースコードの差異を出力する比較部と
を有することを特徴とする解析装置。 - グラフ化された前記2つのソースコードにおける前記各グラフの部分グラフを結合して、所定のメソッドの定義の部分グラフを生成する結合部をさらに備える、
ことを特徴とする請求項1または2に記載の解析装置。 - 前記比較部は、
算出された前記ハッシュ値同士が一致する場合に、前記2つのソースコードの前記差異が無いことを示す情報を出力する
ことを特徴とする請求項2に記載の解析装置。 - コンピュータに、
比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成し、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化し、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約し、
縮約された前記各グラフを比較して前記2つのソースコードの差異を出力する処理を実行させ、
前記グラフ化する処理は、
前記処理に対応する第1ノードと、前記データの参照に対応する第2ノードと、前記データの設定に対応する第3ノードとの接続関係を示す3部グラフに変換する
ことを特徴とする解析プログラム。 - コンピュータに、
比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成し、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化し、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約し、
縮約された前記各グラフに基づいて、前記各グラフを前記処理の流れおよび前記データの流れの方向とは逆向きに辿ってハッシュ値を算出し、
縮約された前記各グラフの前記ハッシュ値を比較して前記2つのソースコードの差異を出力する
処理を実行させることを特徴とする解析プログラム。 - コンピュータが、
比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成し、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化し、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約し、
縮約された前記各グラフを比較して前記2つのソースコードの差異を出力する処理を実行し、
前記グラフ化する処理は、
前記処理に対応する第1ノードと、前記データの参照に対応する第2ノードと、前記データの設定に対応する第3ノードとの接続関係を示す3部グラフに変換する
ことを特徴とする解析方法。 - コンピュータが、
比較対象の2つのソースコードを取得し、取得した前記ソースコード毎に解析して前記2つのソースコードの抽象構文木を生成し、
生成した前記抽象構文木に基づき、前記2つのソースコードにおけるメソッド内およびメソッド間の処理の流れおよびデータの流れをグラフ化し、
所定のルールに基づき、グラフ化された前記2つのソースコードにおける各グラフの冗長部分を縮約し、
縮約された前記各グラフに基づいて、前記各グラフを前記処理の流れおよび前記データの流れの方向とは逆向きに辿ってハッシュ値を算出し、
縮約された前記各グラフの前記ハッシュ値を比較して前記2つのソースコードの差異を出力する
処理を実行することを特徴とする解析方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017117277A JP6933012B2 (ja) | 2017-06-14 | 2017-06-14 | 解析装置、解析プログラムおよび解析方法 |
US16/003,693 US10628139B2 (en) | 2017-06-14 | 2018-06-08 | Analysis apparatus, analysis method and recording medium on which analysis program is recorded |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017117277A JP6933012B2 (ja) | 2017-06-14 | 2017-06-14 | 解析装置、解析プログラムおよび解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019003385A JP2019003385A (ja) | 2019-01-10 |
JP6933012B2 true JP6933012B2 (ja) | 2021-09-08 |
Family
ID=64656879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017117277A Active JP6933012B2 (ja) | 2017-06-14 | 2017-06-14 | 解析装置、解析プログラムおよび解析方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10628139B2 (ja) |
JP (1) | JP6933012B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10915304B1 (en) * | 2018-07-03 | 2021-02-09 | Devfactory Innovations Fz-Llc | System optimized for performing source code analysis |
US10901708B1 (en) * | 2018-11-23 | 2021-01-26 | Amazon Technologies, Inc. | Techniques for unsupervised learning embeddings on source code tokens from non-local contexts |
US11074167B2 (en) | 2019-03-25 | 2021-07-27 | Aurora Labs Ltd. | Visualization of code execution through line-of-code behavior and relation models |
US11948118B1 (en) | 2019-10-15 | 2024-04-02 | Devfactory Innovations Fz-Llc | Codebase insight generation and commit attribution, analysis, and visualization technology |
JPWO2023021553A1 (ja) * | 2021-08-16 | 2023-02-23 | ||
US11853732B1 (en) * | 2022-06-21 | 2023-12-26 | Microsoft Technology Licensing, Llc | Source code structural inference based on indentation |
CN116643732B (zh) * | 2023-07-26 | 2023-10-24 | 成都谐盈科技有限公司 | 基于软件无线电通信的不同建模系统联合代码生成的方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2147036A1 (en) | 1994-05-16 | 1995-11-17 | Yih-Farn Robin Chen | System and method for selective regression testing |
US6594822B1 (en) * | 1999-02-19 | 2003-07-15 | Nortel Networks Limited | Method and apparatus for creating a software patch by comparing object files |
US7340732B2 (en) * | 2003-11-26 | 2008-03-04 | Sun Microsystems, Inc. | Updating profile frequency for procedure inlining |
JP3966518B2 (ja) * | 2004-03-12 | 2007-08-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム解析装置、その解析方法及びプログラム |
US7689559B2 (en) * | 2006-02-08 | 2010-03-30 | Telenor Asa | Document similarity scoring and ranking method, device and computer program product |
WO2007096935A1 (ja) * | 2006-02-20 | 2007-08-30 | Fujitsu Limited | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
US7503027B1 (en) * | 2006-03-31 | 2009-03-10 | The Mathworks, Inc. | Hardware description language code generation from a state diagram |
US20090287641A1 (en) * | 2008-05-13 | 2009-11-19 | Eric Rahm | Method and system for crawling the world wide web |
WO2013088461A1 (ja) * | 2011-12-12 | 2013-06-20 | 株式会社 日立製作所 | ソフトウェア解析プログラム、および、ソフトウェア解析システム |
US9294281B2 (en) * | 2012-02-10 | 2016-03-22 | Microsoft Technology Licensing, Llc | Utilization of a protected module to prevent offline dictionary attacks |
JP5900193B2 (ja) | 2012-06-29 | 2016-04-06 | 富士通株式会社 | 更新判定プログラムおよび更新判定装置 |
US20140053285A1 (en) * | 2012-08-16 | 2014-02-20 | Infosys Limited | Methods for detecting plagiarism in software code and devices thereof |
US9043757B2 (en) * | 2012-12-13 | 2015-05-26 | Oracle International Corporation | Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files |
JP5903038B2 (ja) * | 2012-12-26 | 2016-04-13 | 株式会社日立製作所 | ソースコード等価性検証装置、および、ソースコード等価性検証方法 |
US8984485B2 (en) * | 2013-05-01 | 2015-03-17 | International Business Machines Corporation | Analysis of source code changes |
US9760346B2 (en) * | 2013-05-31 | 2017-09-12 | Microsoft Technology Licensing, Llc | Deeply parallel source code compilation |
JP6364263B2 (ja) * | 2014-07-08 | 2018-07-25 | 株式会社エヌ・ティ・ティ・データ | 検証支援方法、検証支援装置、及びプログラム |
-
2017
- 2017-06-14 JP JP2017117277A patent/JP6933012B2/ja active Active
-
2018
- 2018-06-08 US US16/003,693 patent/US10628139B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20180364992A1 (en) | 2018-12-20 |
JP2019003385A (ja) | 2019-01-10 |
US10628139B2 (en) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6933012B2 (ja) | 解析装置、解析プログラムおよび解析方法 | |
CN109426723B (zh) | 使用释放后内存的检测方法、系统、设备及存储介质 | |
CN105446723B (zh) | 用于标识源代码版本之间的语义区别的方法和装置 | |
KR101732764B1 (ko) | 코드 클론 검출을 이용하는 지능형 코드 디퍼런싱을 수행하는 방법 및 시스템 | |
US8312440B2 (en) | Method, computer program product, and hardware product for providing program individuality analysis for source code programs | |
JP5775829B2 (ja) | ソフトウェアの構造可視化プログラムおよびシステム | |
US20100199264A1 (en) | Pattern inspection system, pattern inspection device, method and pattern inspection program | |
CN107122295B (zh) | 测试用例脚本的生成方法和装置 | |
CN108875317B (zh) | 软件克隆检测方法及装置、检测设备及存储介质 | |
US9092577B2 (en) | Method for generating test data for evaluating program execution performance | |
Avetisyan et al. | LLVM-based code clone detection framework | |
CN111240987A (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN113515303B (zh) | 一种项目转型方法、装置和设备 | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
CN108804308B (zh) | 新版本程序缺陷检测方法及装置 | |
JP2012181666A (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN116880847A (zh) | 基于开源项目的溯源方法、装置电子设备及存储介质 | |
JP2018073223A (ja) | 解析プログラム、解析方法、および解析装置 | |
US10417110B2 (en) | Method for verifying traceability of first instructions in a procedural programming language generated from second instructions in a modelling language | |
JP2006277282A (ja) | モデル評価解析システムおよびモデル評価解析プログラム | |
JP6002507B2 (ja) | ソフトウェア検証用プログラムおよびソフトウェア検証システム | |
CN112954060B (zh) | 一种数据分析方法、装置、电子设备以及存储介质 | |
CN111736848B (zh) | 包冲突定位方法、装置、电子设备及可读存储介质 | |
CN115658492A (zh) | 内核配置项异常值的检测方法及装置 | |
CN114791865A (zh) | 一种基于关系图的配置项自洽性检测方法、系统和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200310 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210302 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210309 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210420 |
|
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: 20210720 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210802 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6933012 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |