JP2001125783A - 同種命令群抽出方法および同種命令群抽出装置 - Google Patents

同種命令群抽出方法および同種命令群抽出装置

Info

Publication number
JP2001125783A
JP2001125783A JP30375499A JP30375499A JP2001125783A JP 2001125783 A JP2001125783 A JP 2001125783A JP 30375499 A JP30375499 A JP 30375499A JP 30375499 A JP30375499 A JP 30375499A JP 2001125783 A JP2001125783 A JP 2001125783A
Authority
JP
Japan
Prior art keywords
source program
comparison
unit
instruction group
compared
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.)
Pending
Application number
JP30375499A
Other languages
English (en)
Inventor
Akira Kumeta
明 久米田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP30375499A priority Critical patent/JP2001125783A/ja
Publication of JP2001125783A publication Critical patent/JP2001125783A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 同種命令群抽出方法に関し、指定の処理パタ
ーンに類似した同種命令群をソースプログラム中から抽
出することを目的とする。 【解決手段】 比較元ソースプログラムと比較対象ソー
スプログラムとを処理単位ごとに比較し、比較結果の比
較情報に基づき該比較元ソースプログラムに類似した同
種命令群を該比較対象ソースプログラムより抽出し出力
するように構成する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、指定した比較元ソ
ースプログラム(処理パターン)に類似する命令群をソ
ースプログラムから抽出する同種命令群抽出方法に関す
るものである。
【0002】
【従来の技術及び発明が解決しようとする課題】ソース
プログラム中の一連の同種命令群はサブルーチン化する
ことにより、オブジェクト効率と保守性を向上させるこ
とができる。しかし、ソースプログラム中の同種命令群
の抽出は、従来では人的なレビュー作業でしか行えず、
非効率的であるとともに漏れのない抽出が困難であっ
た。
【0003】本発明は上記課題に鑑み、指定した処理パ
ターンに類似した同種命令群をソースプログラム中から
抽出する同種命令群抽出方法及び同種命令群抽出装置を
提供することを目的とする。
【0004】
【課題を解決するための手段】上記課題を解決するた
め、本発明の同種命令群抽出方法および同種命令群抽出
装置は、図1本発明の原理図に示すように、以下のよう
に構成される。 (1) 第1の発明 第1の発明は、比較元ソースプログラム(処理パター
ン)と比較対象ソースプログラムとを処理単位(行)ご
とに比較し、比較結果の比較情報に基づき比較元ソース
プログラムに類似した同種命令群を比較対象ソースプロ
グラムより抽出し出力するものである。
【0005】以上のごとく、比較元ソースプログラムに
類似したプログラムが比較対象ソースプログラム中に存
在するか否かを両プログラムの比較により識別して出力
するようにしたので、指定した比較元ソースプログラム
に類似した同種命令群をソースプログラムから漏れなく
抽出することが可能となる。 (2) 第2の発明 第2の発明は、前記第1の発明における比較情報は、処
理単位のマッチ度を加算したトータルのマッチ度であ
り、加算したマッチ度が所定のしきい値以上の命令群を
同種命令群とする、というものである。
【0006】このように処理単位ごとに例えばパターン
マッチングにより比較してマッチ度を求め、このマッチ
度を比較処理単位数分(行数分)加算して命令群のマッ
チ度を求めるようにしたので、類似性を数式化すること
ができる。 (3)第3の発明 第3の発明は同種命令群抽出装置であって、複合機能演
算を単機能演算に変換し、且つオペランドおよびオペレ
ータを所定の順序に並び換える正規化部1と、正規化部
1で正規化した比較元ソースプログラムと比較対象ソー
スプログラムとを処理単位ごとにパターンマッチングに
より比較する比較部2と、比較結果のマッチ度が設定し
たしきい値以上で、且つ非マッチの行数が規定値以下の
ソースプログラムの命令群を同種命令群として出力する
出力部3とを有する。
【0007】
【発明の実施の形態】以下図を用いて本発明の実施の形
態例を詳細に説明する。図2は実施例の構成図、図3は
正規化例を表す図、図4は処理フローチャート図、図5
は比較処理例を表す図、図6は抑止出力例を表す図、図
7は表示出力例を表す図であり、全図を通じて同一符号
は同一対象物を表す。
【0008】本実施例では、ソースプログラムの構文解
析を行う構文解析装置に、ソースプログラムを正規化す
る正規化部、比較元ソースプログラムと比較対象ソース
プログラムとを処理単位(行)に比較する比較部、最も
類似度の高いものから順に出力表示する出力抑止部を付
加したものを説明する。また、ソースプログラムとして
はC言語を例として説明する。
【0009】図2において、比較対象ソースプログラム
10を入力すると、正規化部1で正規化された後、正規化
情報ファイル5に格納される。そしてソースプログラム
10内からユーザが任意に指定した比較元ソースプログラ
ム(処理パターン)11、または任意に設定した処理パタ
ーンを比較元ソースプログラムとして入力すると正規化
部1で正規化され、比較部2で正規化情報ファイル5か
ら正規化されたソースプログラムが順次読み出されて比
較される。この比較情報(マッチ度,非マッチ数,位置
情報)は、比較情報ファイル6に格納され、出力抑止部
4により、所定のしきい値に基づき抽出されて表示部7
に表示される。
【0010】以下、正規化処理、比較処理、出力処理に
ついて説明する。 (1) 正規化処理 図3に正規化例を表す。正規化部1は、構文解析により
オペランドおよびオペレータに分離された処理単位
(行,コンポーネント)を以下の規則に従って正規化す
る。
【0011】 x=a+1とx=1+aを同じとみな
すため、オペランドの左辺と右辺が入れ換え可能な演算
のオペランドはアルファベット順の変数の次に昇順の整
数定数、または昇順の浮動少数点の順に並び換える。
【0012】 (a=1,b=1)および(b=1,
a=1)等、入れ換え可能な命令についても、オペレー
タとオペランドの順番性に基づいて並び換える。
【0013】 ++演算や+=演算のような複合機能
演算については単機能演算に置き換える。
【0014】 条件部においては、else節はif
条件の反対条件のif節として、且つ、 並列条件の場合は、定数と定数の条件演算子の場合
のみ、&&,||,!=,<,<=の順に並び換える。
但し、並列条件中に変数からの代入があり、その代入後
の値と比較する場合、またはサブルーチンからの復帰値
(リターンコード)を比較する場合は、英数的な比較処
理にはならないため、ここでの正規化条件から除くこと
にする。
【0015】以上のようにして正規化部1は比較対象ソ
ースプログラム10を正規化して正規化情報ファイル5に
格納し、入力された比較元ソースプログラム11を正規化
して比較部2に渡す。
【0016】なお、図7では、比較元ソースプログラム
11の例として、比較対象ソースプログラム10中の、main
()に続く{ }内の命令群を指定しており、比較元ソ
ースプログラム11は正規化したもの、比較対象ソースプ
ログラム10は正規化前のものを示している。 (2) 比較処理 比較部2は、正規化情報ファイル5から比較対象ソース
プログラム10を順次読み出し、比較元ソースプログラム
11と比較する。先ず、比較対象ソースプログラム10から
比較命令群の起点、例えば、図7で示せば、main()を見
付けだす。
【0017】そして、続く{ }内に記述された命令群
の条件部や式文をコンポーネントとし、オペランドやオ
ペレータを1項という単位で扱い、比較はコンポーネン
ト単位で行う。ここで、コンポーネントとは、a=a+
1やa=func()+1などの1処理単位(1行で、
図7では;で区切られる条件部, 式文)のことである。
【0018】図5は類似性を表すマッチ度を求める方法
例を示したもので、比較元ソースプログラム11が自動変
数で、且つ比較対象ソースプログラム10が自動変数の場
合、すべてのオペランド, オペレータが一致している場
合はフルマッチングの同種命令と認識し、マッチ度=1
を与える。つまりマッチ度=1とは、一致した行数が1
であることを意味しており、マッチ度=マッチ数であ
る。
【0019】すべて不一致の場合は、異種命令として認
識する(マッチ度0)、一部一致の場合は、ハーフマッ
チングとして、例えば0.5のごとくマッチ度を与えて
同種命令と認識する。なお、指定パターンのコンポーネ
ントが自動変数で比較対象が外部変数のときは異種命令
とする。
【0020】以上の比較を処理単位で繰り返し行い、連
続して同種命令と認識した場合はマッチ度を加算し、異
種命令と認識した場合は非マッチ数に1を加算する。そ
して、全処理終了または非マッチ数が最大マッチ数にな
るまでこの比較処理を繰り返す。
【0021】比較処理を終了した後は、比較対象ソース
プログラム11中のその命令パターンと、その命令パター
ンが存在する位置的情報等の比較情報を比較情報ファイ
ル5に保存する。 (3) 出力処理 比較部2で出力した比較結果情報(同種命令群等のマッ
チング命令情報)を出力マッチ数、出力指摘数の設定値
に従って出力(表示)する。予め指定されている“最小
出力マッチ度”及び“最大出力指摘数”の範囲以外に達
したならば、情報出力(表示)を終了する。この制限を
設けることで、膨大な比較情報中から、最も度合いの高
いものだけを見つけることができる。
【0022】最小出力マッチ度とは、ある一定のマッチ
度を規定数として制限することである。例えば、最小出
力マッチ度に10を規定している場合、比較部1で比較
し、算出したマッチ度が9以下の比較結果情報を出力し
ないという意味である。
【0023】最大出力指摘数とは、出力する処理命令パ
ターン数(処理ブロック単位)を規定数として制限する
ということである。例えば、最大出力指摘数に20を設
定している場合、膨大なマッチング情報から20ブロッ
ク分の比較情報を出力するという意味である。
【0024】表示する比較情報は、ソースプログラム中
の位置的情報を含めた形式で出力する。比較情報の出力
はマッチしている処理命令ブロック内の一命令ごとに文
字上の色付けやアンダーライン等の修飾を施し、比較元
処理パターンと比較対象ソースプログラムとの間に同種
命令を表すスコープ表示を行う。 (4) その他の出力処理 C++言語等のオブジェクト指向プログラミング言語で
は、マッチ度およびまたは非マッチ数のしきい値を適切
に設定することにより、オーバーロード関数を含む命令
群を漏れなく抽出することができる。これにより、膨大
なプログラムからオーバーロード関数を効率的に目視で
抜き出すことができ、同名のサブルーチンで複数宣言で
きる仕組みにより、オーバーロード関数をサブルーチン
化することが可能となる。
【0025】また、比較元ソースプログラム11を比較対
象ソースプログラム10から指定するのではなく、比較元
ソースプログラム11を任意の命令群、例えばバグが発生
した命令群をフリーキーワードとし、この命令群が存在
するあるソースプログラム10を検索する(曖昧比較と称
する)ことができる。この場合、マッチ度のしきい値と
非マッチ数をある程度緩めるなど、異なる基準で抽出す
る。
【0026】
【発明の効果】以上説明したように、本発明によれば、
人的レビューを行っていたソースプログラム中の意味的
な欠陥や同種命令の抽出作業を自動化することにより、
ソースプログラム品質の向上作業が効率化できる。
【0027】また、その同種命令部分と障害情報(バグ
情報)をリンクさせることで、ソースプログラムに対す
る障害修正(バグ修正)と障害管理作業が効率化でき
る。
【図面の簡単な説明】
【図1】 本発明の原理図
【図2】 実施例の構成図
【図3】 正規化例を表す図
【図4】 処理フローチャート図
【図5】 比較処理例を表す図
【図6】 抑止出力例を表す図
【図7】 表示出力例を表す図
【符号の説明】
1 正規化部 2 比較部 3 出力部 4 出力抑止部 5 正規化情報ファイル 6 比較情報フ
ァイル 7 表示部 10 比較対象ソースプログラム 11 比較元ソー
スプログラム 20 構文解析装置

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 比較元ソースプログラムと比較対象ソ
    ースプログラムとを処理単位ごとに比較し、比較結果の
    比較情報に基づき該比較元ソースプログラムに類似した
    同種命令群を該比較対象ソースプログラムより抽出し出
    力することを特徴とする同種命令群抽出方法。
  2. 【請求項2】 該比較情報は、処理単位のマッチ度を
    加算したマッチ度であり、加算した該マッチ度が所定の
    しきい値以上の命令群を同種命令群とすることを特徴と
    する請求項1記載の同種命令群抽出方法。
  3. 【請求項3】 複合機能演算を単機能演算に変換し、
    且つオペランドおよびオペレータを所定の順序に並び換
    える正規化部と、 該正規化部で正規化した比較元ソースプログラムと比較
    対象ソースプログラムとを処理単位ごとにパターンマッ
    チングにより比較する比較部と、 比較結果のマッチ度が設定したしきい値以上で、且つ非
    マッチの行数が規定値以下のソースプログラムの命令群
    を同種命令群として出力する出力部とを有することを特
    徴とする同種命令群抽出装置。
JP30375499A 1999-10-26 1999-10-26 同種命令群抽出方法および同種命令群抽出装置 Pending JP2001125783A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30375499A JP2001125783A (ja) 1999-10-26 1999-10-26 同種命令群抽出方法および同種命令群抽出装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30375499A JP2001125783A (ja) 1999-10-26 1999-10-26 同種命令群抽出方法および同種命令群抽出装置

Publications (1)

Publication Number Publication Date
JP2001125783A true JP2001125783A (ja) 2001-05-11

Family

ID=17924881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30375499A Pending JP2001125783A (ja) 1999-10-26 1999-10-26 同種命令群抽出方法および同種命令群抽出装置

Country Status (1)

Country Link
JP (1) JP2001125783A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006018693A (ja) * 2004-07-02 2006-01-19 Fujitsu Ltd 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法
US7228530B2 (en) 2002-02-04 2007-06-05 Kabushiki Kaisha Toshiba Source program processing method
JP2010079447A (ja) * 2008-09-24 2010-04-08 Fujitsu Ltd バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
JP5327230B2 (ja) * 2008-12-05 2013-10-30 富士通株式会社 運用管理支援プログラム、該プログラムを記録した記録媒体、運用管理支援装置、および運用管理支援方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7228530B2 (en) 2002-02-04 2007-06-05 Kabushiki Kaisha Toshiba Source program processing method
US7886274B2 (en) 2002-02-04 2011-02-08 Kabushiki Kaisha Toshiba Source program processing method
JP2006018693A (ja) * 2004-07-02 2006-01-19 Fujitsu Ltd 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法
JP2010079447A (ja) * 2008-09-24 2010-04-08 Fujitsu Ltd バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
JP5327230B2 (ja) * 2008-12-05 2013-10-30 富士通株式会社 運用管理支援プログラム、該プログラムを記録した記録媒体、運用管理支援装置、および運用管理支援方法
US8751503B2 (en) 2008-12-05 2014-06-10 Fujitsu Limited Computer product, operation and management support apparatus and method

Similar Documents

Publication Publication Date Title
US4773007A (en) Complier code optimization method for a source program having a first and second array definition and use statements in a loop
US6654952B1 (en) Region based optimizations using data dependence graphs
US9122540B2 (en) Transformation of computer programs and eliminating errors
US20060004528A1 (en) Apparatus and method for extracting similar source code
EP0669574A2 (en) Program transformation processing system and method
US9684496B1 (en) Method for parsing programming languages and structured data
Semura et al. Ccfindersw: Clone detection tool with flexible multilingual tokenization
Sheneamer CCDLC detection framework-combining clustering with deep learning classification for semantic clones
CN102298552A (zh) 基于代码查询进行源代码插桩的方法
JP2001125783A (ja) 同種命令群抽出方法および同種命令群抽出装置
US9715374B2 (en) Multi-branch determination syntax optimization apparatus
CN113032366A (zh) 基于Flex和Bison的SQL语法树解析方法
US7844627B2 (en) Program analysis method and apparatus
Cholakov et al. Duplicate code detection algorithm
Lee et al. A fast detecting method for clone functions using global alignment of token sequences
KR20050065015A (ko) 프로그램의 복제 여부를 검사하는 방법 및 시스템
JP2002108652A (ja) プログラムの相関関係検出装置
Sieper et al. Semantic code search with neural bag-of-words and graph convolutional networks
JP3167386B2 (ja) プログラム自動並列化方法
CN117008919A (zh) 仿真模型文件的解析方法、装置、电子设备及存储介质
Wolberg et al. CONVERT‐A language for program and data file conversions
JP3141945B2 (ja) コンパイル装置
JPWO2022157941A5 (ja) プログラム解析支援装置、プログラム解析支援方法、及びプログラム
JPH0695890A (ja) コンパイラにおける名前置換方式
JPH02151973A (ja) 高速条件照合方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100112