JP2003050722A - プログラム解析システムとプログラム解析方法 - Google Patents

プログラム解析システムとプログラム解析方法

Info

Publication number
JP2003050722A
JP2003050722A JP2001236630A JP2001236630A JP2003050722A JP 2003050722 A JP2003050722 A JP 2003050722A JP 2001236630 A JP2001236630 A JP 2001236630A JP 2001236630 A JP2001236630 A JP 2001236630A JP 2003050722 A JP2003050722 A JP 2003050722A
Authority
JP
Japan
Prior art keywords
node
program
flow graph
cfg
memory
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
JP2001236630A
Other languages
English (en)
Inventor
Masayuki Yokoyama
正幸 横山
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2001236630A priority Critical patent/JP2003050722A/ja
Publication of JP2003050722A publication Critical patent/JP2003050722A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 十分にプログラムを解析することができ、か
つ汎用性を有するプログラム解析システム及びプログラ
ム解析方法を提供する。 【解決手段】 プログラムを解析するプログラム解析方
法であって、構造化プログラミング言語により記述され
たプログラムを字句解析してトークン列を生成するステ
ップS1と、トークン列を構文解析して、解析木と構文
木を生成するステップS2と、解析木に対してCFGを
生成すると共に、構文木に対して第一のDFGを生成す
るステップS3と、生成されたCFGの節点に対応する
第二のDFGを生成するステップS4と、生成されたC
FGと前記第一及び第二のDFGを表示するステップS
5とを有することを特徴とするプログラム解析方法を提
供する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータに関
するソフトウェア及びハードウェアの開発において利用
されるプログラム解析システム及びプログラム解析方法
に関するものである。
【0002】
【従来の技術】近年においては、コンピュータハードウ
ェアの高機能化により、高速で複雑な処理を要求するソ
フトウェアを該ハードウェア上で実行可能になってきて
いる。このため、ソフトウェア開発は従来のアセンブラ
言語等に代表される低水準言語から、C言語等の手続き
型言語やC++及びJava(登録商標)等のオブジェクト
指向言語によって開発されるようになっている。また、
近年のソフトウェア開発においては、ソフトウェアが大
規模化しているため、コーディングを複数の開発者が分
担して、個々の開発者により作成されたサブモジュール
を組み合わせる手法が一般的になっている。このため、
他の設計者により作成されたプログラムを容易に解読し
たいといった要求が高まっている。
【0003】ここで、従来においては、特開平10−2141
80号公報に示されるように、オブジェクト指向言語によ
り記述されたプログラムに示された処理手順を視覚的に
表現する手法が提案されている。すなわち、このような
手法により、例えば図11に示されたソースコードに対
応して、図12に示されるような表記図が生成される。
【0004】しかしながら、上記手法においては、図1
2に示されるように、クラス及び関数等のデータ処理単
位間における関係を表記するが、該データ処理単位内に
おける演算子同士の依存関係などといった処理の詳細に
ついてまで表記しないため、ソフトウェアやハードウェ
アの開発に必要とされる程度まで十分にプログラムの解
析を行えないという問題があった。
【0005】また、上記手法では、解析対象とするプロ
グラミング言語がオブジェクト指向言語に特化されてい
るため、十分な汎用性を有しないといった問題がある。
【0006】
【発明が解決しようとする課題】本発明は上記のような
問題を解消するためになされたもので、ソフトウェアや
ハードウェアの開発に必要な程度まで十分にプログラム
を解析することができ、かつ汎用性を有するプログラム
解析システム及びプログラム解析方法を提供することを
目的とする。
【0007】
【課題を解決するための手段】本発明の目的は、プログ
ラムを解析するプログラム解析システムであって、構造
化プログラミング言語により記述されたプログラムをデ
ータ処理単位に分割し、データ処理単位間における相互
関係、及び各々のデータ処理単位内におけるデータの処
理手順を画像により表示する解析手段を備えたことを特
徴とするプログラム解析システムを提供することにより
達成される。
【0008】このような手段によれば、構造化プログラ
ミング言語により記述されたプログラムに関して、デー
タ処理単位相互の関係のみならず、該データ処理単位内
における処理手順まで容易に解析することができる。こ
こで、より具体的には、上記解析手段は、プログラムを
字句解析してトークン列を生成し、トークン列より構文
木及び解析木を生成するものとすることができ、さら
に、データ処理単位の相互依存関係を示すコントロール
フローグラフやデータ処理単位内におけるデータの処理
の相互依存関係を示すデータフローグラフを生成するも
のとすることができる。
【0009】このような手段によれば、構造化プログラ
ミング言語により記述されたプログラムを、人間にとっ
て理解し易いような画像により表現することができる。
【0010】また、解析手段はメモリを含み、コントロ
ールフローグラフの節点を特定する情報と、節点に対応
して関連付けられたデータフローグラフをメモリへ格納
し、ユーザにより節点が選択されたときは、選択された
節点に関連付けられつつメモリに格納されたデータフロ
ーグラフを表示するものとすれば、コントロールフロー
グラフと対応するデータフローグラフとを必要に応じて
容易に参照することができる。また、本発明の目的は、
プログラムを解析するプログラム解析方法であって、構
造化プログラミング言語により記述されたプログラムを
字句解析してトークン列を生成するステップと、トーク
ン列を構文解析して、解析木と構文木を生成するステッ
プと、解析木に対してコントロールフローグラフを生成
すると共に、構文木に対して第一のデータフローグラフ
を生成するステップと、生成されたコントロールフロー
グラフの節点に対応する第二のデータフローグラフを生
成するステップと、生成されたコントロールフローグラ
フと第一及び第二のデータフローグラフを表示するステ
ップとを有することを特徴とするプログラム解析方法を
提供することにより達成される。
【0011】このような手段によれば、構造化プログラ
ミング言語により記述されたプログラムを、データ処理
単位相互の関係のみならず、該データ処理単位内におけ
る処理手順まで明瞭に表示することができる。
【0012】
【発明の実施の形態】以下において、本発明の実施の形
態を図面を参照しつつ詳しく説明する。なお、図中同一
符号は同一または相当部分を示す。
【0013】図1は、本発明の実施の形態に係るプログ
ラム解析システムの構成を示す図である。図1に示され
るように、本実施の形態に係るプログラム解析システム
は、メモリ1とバス2、CPU3、入力装置5、及び表
示装置7を備えたものである。ここで、メモリ1とCP
U3、入力装置5及び表示装置7はそれぞれバス2に接
続される。
【0014】そして、メモリ1には、後述する字句解析
や構文解析、コントロールフローグラフ(CFG)及び
データフローグラフ(DFG)の生成と表示を実行する
ためのプログラム、及び解析対象とされるプログラムが
予め格納される。
【0015】なお、「CFG」とは関数節点と条件分岐
節点、及びループ節点という三種類の節点と、該節点相
互間の関係を示す枝とによってデータ処理の手順を視覚
的に示すグラフ、「DFG」とは演算と変数、命令文、
ラベル、関数呼び出し、ループ、及び条件分岐を表す節
点と、該演算の依存関係を表す枝とによってデータ処理
の手順を視覚的に示すグラフを意味する。
【0016】以下において、上記のような構成を有する
本発明の実施の形態に係るプログラム解析システムの動
作を説明する。
【0017】図2は、本プログラム解析システムの動作
を説明するフローチャートである。図2に示されるよう
に、まずステップS1において、CPU3はメモリ1に
格納された所定のプログラムを実行することによって、
メモリ1に格納された解析対象とするプログラム(以下
においては、「動作記述」ともいう。)を字句解析し、
トークン列を生成する。なお、以下においてはC言語に
よるプログラムを動作記述の例として説明する。また、
上記において「トークン列」とは、プログラミング言語
の予約語や演算子、識別子、括弧、区切り文字等として
予め定義された文字列をいう。
【0018】CPU3は、ステップS1においてメモリ
1から読み出した動作記述を予め定義された文字列と順
次比較することによって、トークン列を生成する。な
お、動作記述に付記されたコメントは、この字句解析時
に削除するようにしても良い。また、CPU3は認識で
きない字句を読み出した場合には、該字句解析を中断し
て表示装置7に「字句エラー」と表示する。
【0019】ここで例えば、CPU3は、図3に示され
た動作記述をスペース文字(スペース、タブ、改行)及
び区切り文字(括弧、句読点、セミコロン、コロン)に
よって区切り、図4に示されたようにトークン列に分解
する。なおこのとき、動作記述に含まれたスペース文字
はトークン列として保持されることなく削除される。
【0020】そしてCPU3は、上記のような方法によ
り生成したトークン列をメモリ1へ格納する。
【0021】次に、ステップS2において、CPU3は
メモリ1に格納された所定のプログラムを実行すること
によって、メモリ1に格納された上記トークン列を構文
解析し、解析木と構文木を生成する。
【0022】CPU3は読み出したトークン列に構文上
のエラーを見出した場合には、該構文解析を中断して表
示装置7に「構文エラー」と表示する。
【0023】ここで例えば、CPU3は、図4に示され
たトークン列をC言語の構文に従って、図5に示される
ように解析木に変換する。なおこのとき、CPU3は各
節点を「int」や「if」などと表記される識別子と、他
の節点への参照先を保持するブロックとから構成する。
【0024】また、CPU3はC言語における構文の定
義や演算優先順位に応じて、図6に示されるような構文
木を生成する。なお、図6は図3に示された(式1)を
構文木に変換した例である。CPU3は、図6に示され
るように、優先順位が最も高い演算を葉節点(葉ノー
ド)とし、優先順位が最も低い演算を根節点(根ノー
ド)として構文木を構成し、各節点は識別子及び他の節
点への参照先を保持するブロックから構成する。
【0025】そしてCPU3は、上記のような方法によ
り生成した解析木と構文木とをメモリ1へ格納する。
【0026】次に、図2に示されたステップS3におい
て、CPU3はまず最初に、メモリ1に格納された所定
のプログラムを実行することによってメモリ1に格納さ
れた上記解析木を入力し、CFGに変換する。ここで、
CPU3は、解析木を根節点から順に探索し、探索され
た節点が関数本体や分岐あるいはループ処理のいずれか
である場合に、対応するCFGの節点をCFGに追加す
る。以下において、このような該CFGへの変換方法
を、図7に示されたフローチャートを参照しつつ具体的
に説明する。なお、以下の方法はCPU3により実行さ
れる。
【0027】ステップS1において、CPU3は、図5
に示されるように、まず解析木の最初のブロックをCF
Gの初期節点(節点ブロックBpt)として初期化する
と共に、該節点ブロックBptを含む節点を他の節点に
対する接続先とすべく根節点Ncpとして設定する。
【0028】次に、ステップS2において、解析木の中
に未処理ブロックがないか否かを判断し、ない場合には
CFGの生成動作を終了し、ある場合にはステップS3
へ進む。ステップS3では、節点ブロックBptの参照
先Pptが関数であるか否かを判断し、関数である場合
にはステップS4へ進むと共に、関数でない場合にはス
テップS20へ進む。
【0029】ステップS20では、外部変数やプロトタ
イプの型、識別子、引数を根節点Ncpの情報として登
録し、節点ブロックBptを次の未処理ブロックへ移動
させると共に、ステップS2へ戻る。一方、ステップS
4では、図5に示されるように階層的に節点Ncを生成
し(create(Nc))、ステップS5において該節点Ncを
上記根節点Ncpに子節点として接続する。
【0030】次に、ステップS6では節点ブロックBp
tを特定する情報をメモリ1の所定領域に格納し(push
(Bpt))、ステップS7において該関数の型や識別子を
節点Ncの情報として登録する。そして、CPU3は指
定する節点ブロックBptを次の未処理ブロックへ移動
させる。
【0031】ステップS8では、参照先Pptが引数で
あるか否か判断し、引数であると判断された場合にはス
テップS30へ進み、引数でないと判断された場合には
ステップS9へ進む。ここで、ステップS30では、該
引数の型や識別子を上記節点Ncの情報として登録す
る。なお、このときCPU3は指定する節点ブロックB
ptをさらに次の未処理ブロックへ移動させ、ステップ
S8へ戻る。
【0032】ステップS9では、参照先Pptが位置す
る節点の先頭ブロックを節点ブロックBptとし、ステ
ップS10において未処理ブロックがないか否かを判断
する。そして、未処理ブロックがあると判断した場合に
はステップS11へ進むと共に、未処理ブロックがない
と判断した場合にはステップS40へ進む。
【0033】ステップS40では、根節点Ncpについ
てメモリ1内にスタックされた情報が空であるか否かを
判断し、空であると判断した場合にはステップS41へ
進み、空でないと判断した場合にはステップS50へ進
む。このとき、ステップS41で元の根節点Ncpへ戻
り、ステップS2へ進む一方、ステップS50では根節
点Ncpの情報として最後に登録された情報を読み出し
(pop(Ncp))、かつ節点Ncの情報として最後に登録
された情報を読み出し(pop(Nc))、さらに節点ブロ
ックBptの情報として最後に登録された情報を読み出
す(pop(Bpt))。なお、このような処理を実行した
CPU3は、後述するステップS11の処理へ進む。
【0034】ステップS11では、参照先Pptが変数
(変数宣言)であるか否か判断し、変数であると判断さ
れた場合にはステップS60へ進み、変数でないと判断
された場合にはステップS12へ進む。ここで、ステッ
プS60では、該変数を上記節点Ncの情報として登録
する。なお、このときCPU3は指定する節点ブロック
Bptをさらに次の未処理ブロックへ移動させ、ステッ
プS11へ戻る。
【0035】また、ステップS12では、参照先Ppt
が分岐命令であるか否か判断し、分岐命令であると判断
された場合にはステップS15へ進み、分岐命令でない
と判断された場合にはステップS13へ進む。
【0036】ステップS15では、根節点Ncpを特定
する情報をメモリ1の第一領域にスタック(順に格納)
すると共に、最後に作成した節点Ncを特定する情報を
メモリ1の第二領域にスタックし、さらに節点ブロック
Bptを特定する情報をメモリ1の第三領域にスタック
する。
【0037】そして、ステップS16においては、上記
第二領域へ最後に格納された節点Ncを新たな根節点N
cpとして設定する。その後、ステップS17で節点N
cを生成し、ステップS18において該節点Ncを子節
点として上記根節点Ncpに接続する。なお、このよう
な動作を終えた後は、ステップS9へ戻る。
【0038】一方、ステップS13では、参照先Ppt
がループ命令であるか否か判断し、ループ命令であると
判断された場合にはステップS15へ進み、ループ命令
でないと判断された場合にはステップS14へ進む。ス
テップS14では、該参照先Pptのループ命令を節点
Ncの情報として登録し、ステップS12へ戻る。
【0039】以上が、本実施の形態における解析木のC
FGへの変換方法であるが、上記においてCFGの各節
点は、その作成時に型や識別子、引数の型及び識別子、
条件式、内部処理に関する情報のうち、各節点において
保持できるものを例えばメンバといった節点に付随する
情報として保持する。そして、これらのメンバは、トー
クン列やトークン列の先頭アドレス、解析木の節点、解
析木の節点の先頭アドレス、該アドレスが一意に定まる
インデックスのいずれであっても良い。
【0040】次に、図2に示されたステップS3におけ
る構文木からのDFGの生成、及び同じく図2に示され
たステップS4に示されたCFGの節点に対応するDF
Gの生成について説明する。CPU3はCFGの節点一
つに対応してDFGを一つ以上生成するが、このときC
PU3はDFG生成時に、DFGを表す情報をメンバな
どCFGの節点に付随する情報としてメモリ1へ保持す
る。なお、このDFGを表す情報は、例えばDFG根節
点のアドレス等とされる。
【0041】また、DFGの生成において、ループや条
件分岐の節点では内部処理をDFGで構成する必要がな
く、CPU3は対応するCFGの節点又はDFGが一意
に定まる情報を上記メンバ等の節点に付随する情報とし
てメモリ1に保持する。なおDFGの節点は、例えばイ
ンデックスやCFGを示すアドレス等からなる該情報が
メンバとして関連付けられる。
【0042】ここで、図8に動作記述と該動作記述に対
応して生成されたDFGの例が示される。CPU3はD
FGの節点に対応させて、変数又は他の節点との接続情
報をメモリ1へ格納する。また、図8に示されるよう
に、演算式に対応したDFGは上記の構文木と同様な形
態に生成される。すなわち例えば、図8に示されたX=
(a+b)*cという演算を実行する場合には、加算の
対象とされる変数aと変数bがそれぞれ該加算節点ND
Aに接続されると共に、該加算節点NDAが乗算節点N
DMに接続される。また、変数cが乗算節点NDMに接
続され、乗算節点NDM及び変数xはそれぞれイコール
節点NDEに接続される。
【0043】なお、このような表記は、呼び出される関
数のCFG及びDFGを先に生成し、若しくは、呼び出
される関数に対応する部分を解析木や構文木から順次生
成する方法により得ることができる。
【0044】また、上記の加算節点や乗算節点等の関数
呼び出し節点を作成することなく、字句解析前に該演算
についての動作記述を全動作記述に組み込み(インライ
ン展開)、その後該全動作記述を図式化するようにして
も良い。
【0045】さらに、DFGは全ての節点同士が直接的
又は間接的に接続されている必要は無く、実行する節点
の順序が一意に定まっていればよい。すなわち例えば、
図8に示されたfor文に対応する節点とbreak文に対応す
る節点は互いに枝によって接続される必要は無く、節点
の情報が格納されているメモリ1の番地をCPU3が比
較すること等により、実行順序が定められるようにして
も良い。
【0046】次に、図2に示されるように、CPU3は
ステップS5において、上記のように生成されたCFG
及びDFGを表示装置7に表示させる。より具体的に
は、CPU3は上記のような方法により生成されたCF
Gを表示装置7に表示するコンポーネントに関連付け、
CFG表示用のフレームに表示する。ここで、例えば関
数の節点と分岐及びループに対して、それぞれ図9
(1)から図9(3)に示されるような表示コンポーネ
ントが関連付けられ、図10に示されるように、動作記
述に含まれるCFGの各節点がこれらの表示コンポーネ
ントにより表記される。
【0047】なお、上記表示コンポーネントとしては、
条件分岐とループに対応するコンポーネントがあればよ
く、たとえ関数が文法上存在する言語であっても、存在
する全ての関数を字句解析前にインライン展開すること
により、関数に対応したコンポーネントは必要とされな
い。すなわち、本実施の形態に係るプログラム解析装置
は、関数用のコードを含まない動作記述も解析すること
ができる。
【0048】上記において各表示コンポーネントは、C
PU3により対応するCFGの節点に関する情報に関連
付けられる。これによって、入力装置5でコンポーネン
トを選択すると、CPU3により対応するCFGの節点
が一意に定められると共に、該CFGに付随する情報が
表示装置7に表示される。
【0049】またCPU3は、上記のCFG生成時に各
節点に対応してメモリ1に保持される型や識別子、引数
の型、及び識別子や条件式、あるいは内部処理に関する
情報から各CFG節点に対応する動作記述のトークン列
をメモリ1から読み出し、該トークン列をスペース文字
で区切った文字列を生成することにより、CFGの各節
点に対応する動作記述を表示装置7に表示する機能を有
するものとすることができる。
【0050】なおこのとき、CPU3が各トークンとプ
ログラム言語の予約語とを比較することにより、表示装
置7において例えば該予約語のみ色を変えて表示するよ
うにしても良い。
【0051】また、CPU3は上記のように、CFGの
各節点に対応させつつDFG生成時に得られたDFGの
情報をメモリ1に格納する。これより例えば、CPU3
は、CFGの節点に関連付けられたDFGの情報をもと
に、各CFGの節点に対応するDFGを表示装置7に表
示することができる。なお、この場合における表示形式
は、節点の種類や実行順序、あるいは節点相互の依存関
係といった情報を表すことができる形式であれば足り
る。
【0052】また、CPU3は、CFGの節点に関連付
けられたDFGの情報から、例えば各CFGの節点に対
応する処理内に含まれた演算や命令、あるいは変数の数
や種類を算出し、表示装置7に表示することもできる。
なお、このときCPU3は、例えばDFGのメンバのう
ち算出対象に相当するデータのみをカウントすることに
より、上記数や種類を算出する。また、DFGの各節点
同士が直接的又は間接的に枝により接続されている場合
には、DFGを根節点から探索することにより該数や種
類を探索することもできる。
【0053】表示装置7上においては、例えば表示画面
を3つのフレームに分割し、第一フレームでCFGを表
示し、第二フレームで動作記述を表示し、第三フレーム
でDFGを表示することができる。このような表示方法
によれば、動作記述により表された処理同士の依存関係
や処理内容を視覚的に容易に理解できるよう表示させる
ことができる。
【0054】また、CPU3はCFGを表示するフレー
ム上でCFGの節点を選択できる表示形式にして、該C
FGの節点が選択されたとき、該節点が保持するDFG
や動作記述、及び変数や演算、命令の種類や個数に対応
するメンバにアクセスすることにより、該節点に対応す
る各々の情報を他のフレームに表示することができる。
【0055】以上のように、本実施の形態に係るプログ
ラム解析システムは、構造化プログラム言語の動作記述
を解析し、該動作記述により表された処理を条件分岐、
ループ、関数を表すブロックに分割し、各ブロック同士
の依存関係及びブロック内の演算及び命令文をGUI
(Graphical User Interface)上に視覚的に表現するも
のである。そして、主として以下の四つの特徴を有する
システムとされる。
【0056】まず第一に、CPU3は、予めメモリ1に
格納されたプログラムを実行することによって、構造化
プログラミング言語による動作記述から分岐処理、ルー
プ処理、関数といった処理単位を抽出してグラフ化し、
表示装置7に表示する。
【0057】また、二つ目の特徴として、CPU3は、
各処理単位内の演算や命令を動作記述及び変数、演算、
命令の種類や数といった形式で表示装置7に表示する。
【0058】また、三つ目の特徴として、CPU3は、
動作記述に表された処理内容を異なる複数の形式で表示
装置7上に同時に表示することができる。
【0059】さらに、四つ目の特徴として、CPU3
は、ユーザに対して表示装置7上でCFGの節点を任意
に選択できるようにし、CFGと共に選択されたCFG
の節点に対応するDFGや動作記述及び演算や変数、命
令の種類や個数を同時に表示することができる。
【0060】以上より、本発明の実施の形態に係るプロ
グラム解析システム及びプログラム解析方法によれば、
構造化プログラミング言語による動作記述(プログラ
ム)において、実行時間を要する部分の検証や、かかる
部分をハードウェアにより実現するために必要とされる
回路等を容易に解析できるため、ソフトウェア/ハード
ウェア分割などの作業を簡易化して、ソフトウェア及び
ハードウェア相互の開発を促進することができる。
【0061】また、該動作記述に表された処理全体の流
れと、選択された処理単位内の流れを同時に表示するこ
とにより、一部の処理の抽出や、検証対象とされる処理
の処理全体における位置付けの把握などを容易に実現す
ることができる。
【0062】
【発明の効果】本発明に係るプログラム解析システム及
びプログラム解析方法によれば、構造化プログラミング
言語により記述されたプログラムに関して、データ処理
単位相互の関係のみならず、該データ処理単位内におけ
る処理手順まで容易に解析することができるため、ソフ
トウェア開発、及びプログラム解析の必要なハードウェ
ア開発を有効に促進することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係るプログラム解析シス
テムの構成を示すブロック図である。
【図2】図1に示されたプログラム解析システムの動作
を示すフローチャートである。
【図3】動作記述の例を示すプログラムである。
【図4】図3に示されたプログラムに対応するトークン
列を示す図である。
【図5】図3に示されたプログラムに対応する解析木を
示す図である。
【図6】図3に示された式1に対応する構文木を示す図
である。
【図7】CFGの生成方法を示すフローチャートであ
る。
【図8】動作記述とDFGとの関係を示す図である。
【図9】表示コンポーネントの例を示す図である。
【図10】動作記述と図9に示された表示コンポーネン
トとの関係を示す図である。
【図11】ソースコードの例を示す図である。
【図12】図11に示されたソースコードに対応して作
成された従来の表記図である。
【符号の説明】
1 メモリ、2 バス、3 CPU、5 入力装置、7
表示装置。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 プログラムを解析するプログラム解析シ
    ステムであって、 構造化プログラミング言語により記述されたプログラム
    をデータ処理単位に分割し、前記データ処理単位間にお
    ける相互関係、及び各々の前記データ処理単位内におけ
    るデータの処理手順を画像により表示する解析手段を備
    えたことを特徴とするプログラム解析システム。
  2. 【請求項2】 前記解析手段は、前記プログラムを字句
    解析してトークン列を生成し、前記トークン列より構文
    木及び解析木を生成する請求項1に記載のプログラム解
    析システム。
  3. 【請求項3】 前記解析手段は、前記データ処理単位の
    相互依存関係を示すコントロールフローグラフを生成す
    る請求項1に記載のプログラム解析システム。
  4. 【請求項4】 前記解析手段は、前記データ処理単位内
    におけるデータの処理の相互依存関係を示すデータフロ
    ーグラフを生成する請求項1から3のいずれかに記載の
    プログラム解析システム。
  5. 【請求項5】 前記解析手段はメモリを含み、 前記コントロールフローグラフの節点を特定する情報
    と、前記節点に対応して関連付けられた前記データフロ
    ーグラフを前記メモリへ格納し、ユーザにより前記節点
    が選択されたときは、選択された前記節点に関連付けら
    れつつ前記メモリに格納された前記データフローグラフ
    を表示する請求項4に記載のプログラム解析システム。
  6. 【請求項6】 プログラムを解析するプログラム解析方
    法であって、 構造化プログラミング言語により記述されたプログラム
    を字句解析してトークン列を生成するステップと、 前記トークン列を構文解析して、解析木と構文木を生成
    するステップと、 前記解析木に対してコントロールフローグラフを生成す
    ると共に、前記構文木に対して第一のデータフローグラ
    フを生成するステップと、 生成された前記コントロールフローグラフの節点に対応
    する第二のデータフローグラフを生成するステップと、 生成された前記コントロールフローグラフと前記第一及
    び第二のデータフローグラフを表示するステップとを有
    することを特徴とするプログラム解析方法。
JP2001236630A 2001-08-03 2001-08-03 プログラム解析システムとプログラム解析方法 Pending JP2003050722A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001236630A JP2003050722A (ja) 2001-08-03 2001-08-03 プログラム解析システムとプログラム解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001236630A JP2003050722A (ja) 2001-08-03 2001-08-03 プログラム解析システムとプログラム解析方法

Publications (1)

Publication Number Publication Date
JP2003050722A true JP2003050722A (ja) 2003-02-21

Family

ID=19067857

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001236630A Pending JP2003050722A (ja) 2001-08-03 2001-08-03 プログラム解析システムとプログラム解析方法

Country Status (1)

Country Link
JP (1) JP2003050722A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010507165A (ja) * 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出
US9141806B2 (en) 2010-08-24 2015-09-22 Checkmarx Ltd. Mining source code for violations of programming rules
JP2017204035A (ja) * 2016-05-09 2017-11-16 日本電信電話株式会社 単機能部化システム、単機能部化方法および単機能部化プログラム
US11087002B2 (en) 2017-05-10 2021-08-10 Checkmarx Ltd. Using the same query language for static and dynamic application security testing tools
US11836258B2 (en) 2020-07-28 2023-12-05 Checkmarx Ltd. Detecting exploitable paths in application software that uses third-party libraries

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06161773A (ja) * 1992-11-20 1994-06-10 Sanyo Electric Co Ltd 並列処理プログラムの作成装置
JPH0793144A (ja) * 1993-09-20 1995-04-07 Fujitsu Ltd プログラム解析装置
JPH08190475A (ja) * 1995-01-05 1996-07-23 Fujitsu Ltd プログラム解析装置
JPH10214180A (ja) * 1997-01-31 1998-08-11 Meidensha Corp ソフトウェアの開発支援方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06161773A (ja) * 1992-11-20 1994-06-10 Sanyo Electric Co Ltd 並列処理プログラムの作成装置
JPH0793144A (ja) * 1993-09-20 1995-04-07 Fujitsu Ltd プログラム解析装置
JPH08190475A (ja) * 1995-01-05 1996-07-23 Fujitsu Ltd プログラム解析装置
JPH10214180A (ja) * 1997-01-31 1998-08-11 Meidensha Corp ソフトウェアの開発支援方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010507165A (ja) * 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出
US9128728B2 (en) 2006-10-19 2015-09-08 Checkmarx Ltd. Locating security vulnerabilities in source code
US9141806B2 (en) 2010-08-24 2015-09-22 Checkmarx Ltd. Mining source code for violations of programming rules
JP2017204035A (ja) * 2016-05-09 2017-11-16 日本電信電話株式会社 単機能部化システム、単機能部化方法および単機能部化プログラム
US11087002B2 (en) 2017-05-10 2021-08-10 Checkmarx Ltd. Using the same query language for static and dynamic application security testing tools
US11836258B2 (en) 2020-07-28 2023-12-05 Checkmarx Ltd. Detecting exploitable paths in application software that uses third-party libraries

Similar Documents

Publication Publication Date Title
US9513880B2 (en) Graphical function specialization
TWI493464B (zh) 用於晚期繫結可程式化輔助的系統與方法
US7478366B2 (en) Debugger and method for debugging computer programs across multiple programming languages
US5640558A (en) Identifying and analyzing multiple level class relationships in an object oriented system by parsing source code without compilation
US8201140B2 (en) System and method for creating and using graphical object instances in a statechart environment
US11579856B2 (en) Multi-chip compatible compiling method and device
US20050223363A1 (en) Evaluation of a code segment
US11675575B2 (en) Checking source code validity at time of code update
US9164744B2 (en) Method and system for program building
JPH0844547A (ja) オブジェクト指向ソフトウェアの視覚化
US20090328016A1 (en) Generalized expression trees
US20060200796A1 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
WO2018161509A1 (zh) 条件编译预处理方法、终端及存储介质
JP2012063868A (ja) 言語処理パーサーを組み合わせて、組み合わせパーサーを生成する方法、並びにそのコンピュータ及びコンピュータ・プログラム
US20140298290A1 (en) Identification of code changes using language syntax and changeset data
JP2007511834A (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
JP2001522084A (ja) 機械語記述からisaシミュレータとアセンブラを生成する方法
US8701086B2 (en) Simplifying analysis of software code used in software systems
US20170075668A1 (en) Methods and Systems for Generating Client-Server Applications for Target Devices
Zhang et al. Automated Extraction of Grammar Optimization Rule Configurations for Metamodel-Grammar Co-evolution
JP2003050722A (ja) プログラム解析システムとプログラム解析方法
KR20040103497A (ko) 그래픽 유저 인터페이스 생성 방법 및 장치
GB2420638A (en) Method of substituting code fragments in Internal Representation
DeLine et al. Lessons on converting batch systems to support interaction: Experience report
WO2008015110A2 (en) Methods, apparatus and computer programs for modelling computer programs

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110426

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110816