JP2002222082A - 記録媒体およびプログラム - Google Patents
記録媒体およびプログラムInfo
- Publication number
- JP2002222082A JP2002222082A JP2001357893A JP2001357893A JP2002222082A JP 2002222082 A JP2002222082 A JP 2002222082A JP 2001357893 A JP2001357893 A JP 2001357893A JP 2001357893 A JP2001357893 A JP 2001357893A JP 2002222082 A JP2002222082 A JP 2002222082A
- Authority
- JP
- Japan
- Prior art keywords
- class
- information
- source file
- influence
- affected
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
ァイルに含まれる所定のクラスを変更する場合に影響を
受けるクラスおよびそのメンバを特定する。 【解決手段】 入力手段2aは、解析対象となるソース
ファイル1を入力し、参照関係調査手段2bに供給す
る。参照関係調査手段2bは、クラスとクラスに含まれ
ているメソッドの参照関係を調査する。具体的には、参
照関係調査手段2bは、クラスの定義に係るクラス定義
情報と、クラスメンバの定義に係るクラスメンバ定義情
報と、クラスメンバの内容に係るクラスメンバ内容情報
とを生成するとともに、クラス間の継承関係およびクラ
スの呼び出し関係を示す参照関係情報を生成し、影響ク
ラス特定手段2cに供給する。影響クラス特定手段2c
は、変更クラス名の入力を受け、クラス定義情報、クラ
スメンバ定義情報、クラスメンバ内容情報、および、参
照関係情報を参照して、影響クラス3を特定する。
Description
グラムに関し、特に、オブジェクト指向言語で記述され
たソースファイルを解析する処理をコンピュータに機能
させるプログラムを格納したコンピュータ読み取り可能
な記録媒体およびプログラムに関する。
COBOL(Common Business Oriented Language)に
よって記述されたソースファイルを変更する場合には、
その変更によって影響を受けるプログラムの部位を特定
し、それらの部位が誤動作しないように配慮しながらデ
バッグやアップデート等が行われていた。
を変更する際に、影響を受ける部位を特定するために使
用されていたクロスレファレンスと呼ばれる影響検索機
能について説明する図である。図32(A)は、変更の
対象となるソースファイルである。この例では、プログ
ラムAおよびプログラムCがCOPY A1とサブルー
チンB(PROGRAM SUB B)とを利用する構
造となっている。
索を行うと、図32(B)に示すような結果が得られ
る。この例では、各列にはプログラムの種類が列記さ
れ、各行には利用されるCOPYが列記され、利用関係
が存在する箇所には「○」が付されている。このような
表を用いることにより、例えば、COPY A1を利用
しているプログラムがプログラムAおよびプログラムC
であることを即座に理解することができる。
言語の場合には、メインのプログラムが共通機能(サブ
ルーチンまたは部品等)を呼び出すという構造が明確で
あり、また、呼び出し名の一意性が保証されていたた
め、1対1のクロスレファレンスという態様で修正の際
の影響を特定することが可能であった。
いるオブジェクト指向言語の場合では、プログラムは属
性(データ)と、操作(メソッド)を有するクラスとし
て定義され、計算機上でオブジェクトとして実体化さ
れ、オブジェクト同士がメッセージを授受することで動
作する構造が採用されている。
クラス(スーパークラス)が提供する属性や操作を子ク
ラス(サブクラス)が引き継ぐことが可能である。この
ような仕組みにより、あるクラスについて変更を加える
場合には、その子クラスのみならず、更に下位のクラス
(孫クラス、ひ孫クラス、・・・)についても参照状況
を調査する必要が生じ、1対1の対応関係ではないこと
から、影響範囲の把握を困難としているという問題点が
あった。
同一で引数の数または型が異なるクラス(またはメソッ
ド)を多重に定義するいわゆる「オーバーロード」が可
能である。また、スーパークラスのメソッドやメンバ変
数をサブクラスにおいて再定義するいわゆる「オーバー
ライド」も可能である。このような事情から、操作名
(メソッド名)と、処理内容とは1対1で対応するとは
限らず、操作名のみを用いて参照関係の特定を行うこと
が困難であるという問題点があった。
問題から、従来においては、クラス間の関連やクラスの
使用関係の調査については設計書等を参照して手作業で
行われていたため、多大な労力を要するとともに、注意
不足等に起因して見落としが発生する可能性が高く、そ
の結果、プログラムのデバッグ作業に多大な時間を要す
る結果となるという問題点もあった。
とが困難であることから、プログラムが変更された後
に、未使用のクラスが残存してしまう場合があり、その
ような場合にはリソースが不要に消費されてしまうとい
う問題点もあった。
のであり、オブジェクト指向言語の影響検索を容易に行
うことが可能なソースファイル解析方法およびそのよう
な方法をコンピュータに機能させるプログラムを記録し
た記録媒体およびプログラムを提供することを目的とす
る。
決するために、オブジェクト指向言語で記述されたソー
スファイルを解析する図1に示すような処理をコンピュ
ータに機能させるプログラムを格納したコンピュータ読
み取り可能な記録媒体において、コンピュータを、解析
対象となるソースファイルを入力する入力手段2a、前
記入力手段2aによって入力されたソースファイルに含
まれているクラスの参照関係を調査する参照関係調査手
段2b、前記参照関係調査手段2bによる調査結果に基
づいて、所定のクラスを変更した際に、影響を受けるク
ラスを特定する影響クラス特定手段2c、として機能さ
せるプログラムを記録したコンピュータ読み取り可能な
記録媒体が提供される。
ソースファイルを入力する。参照関係調査手段2bは、
入力手段2aによって入力されたソースファイルに含ま
れているクラスの参照関係を調査する。影響クラス特定
手段2cは、参照関係調査手段2bによる調査結果に基
づいて、所定のクラスを変更した際に、影響を受けるク
ラスを特定する。
を参照して説明する。図1は、本発明のソースファイル
解析方法に係るソースファイル解析装置の動作原理を説
明する原理図である。
装置2は、解析の対象となるソースファイルを入力する
とともに、変更の対象となるクラス名を入力し、変更の
影響を受けるクラスを特定して解析結果として出力する
構成になっている。
力手段2a、参照関係調査手段2b、および、影響クラ
ス特定手段2cによって構成されている。入力手段2a
は、解析対象となるソースファイル1を入力する。
よって入力されたソースファイルに含まれているクラス
の参照関係を調査する。影響クラス特定手段2cは、参
照関係調査手段2bによる調査結果に基づいて、所定の
クラスを変更した際に、影響を受けるクラスを特定し、
影響クラス3として出力する。
る。入力手段2aは、解析対象となるソースファイル1
を入力し、参照関係調査手段2bに供給する。
に含まれているメンバの参照関係を調査する。具体的に
は、参照関係調査手段2bは、クラスの定義に係るクラ
ス情報と、クラスメンバの定義に係るクラスメンバ情報
と、クラスメンバの内容に係るクラスメンバ内容情報と
を生成するとともに、クラス間の継承関係およびクラス
の呼び出し関係を示すクラス参照情報を生成し、影響ク
ラス特定手段2cに供給する。
lassB」に継承され、「ClassA」のメソッド
AAを「ClassC」が参照しており、「Class
A」を「ClassD」がインスタンス化して参照して
いるとすると、「ClassB」、「ClassC」、
「ClassD」は、「ClassA」に対して参照関
係を有することになるので、参照関係調査手段2bは、
このような参照関係を特定してクラス参照情報を生成す
るとともに、「ClassA」、「ClassB」、
「ClassC」、および、「ClassD」のそれぞ
れに関するクラス情報、クラスメンバ情報、および、ク
ラスメンバ内容情報を生成する。
入力し、参照関係調査手段2bによる調査結果であるク
ラス情報、クラスメンバ情報、クラスメンバ内容情報、
および、参照関係情報を参照し、変更クラスと参照関係
を有するサブクラスおよびメソッドを特定し、これらを
影響クラス3として出力する。
スとして指定された場合には、その下位に属する「Cl
assB」、「ClassC」、および、「Class
D」が影響クラスとして特定されることになる。その結
果、「ClassA」を変更した際に、影響を被る他の
クラスおよびメンバを特定することが可能となる。
る。図2は、本発明のソースファイル解析方法に係るソ
ースファイル解析装置の実施の形態の構成例を示すブロ
ック図である。この図に示すように、ソースファイル解
析装置10は、CPU(Central Processing Unit)1
0a、ROM(ReadOnly Memory)10b、RAM(Ran
dom Access Memory)10c、HDD(HardDisk Driv
e)10d、GB(Graphics Board)10e、I/F(I
nterface)10f、および、バス10gによって構成さ
れており、外部には表示装置11および入力装置12が
接続されている。
ているプログラムに従って、装置全体を制御するととも
に、各種演算処理を実行する。ROM10bは、CPU
10aが実行する基本的なプログラムやデータを格納し
ている。
プログラムや、演算途中のデータを一時的に格納する。
HDD10dは、装置全体を管理する基本的なプログラ
ムであるOS(Operating System)や、ソースファイル
解析を行うためのアプリケーションプログラム、およ
び、解析の対象となるソースプログラムや解析結果のデ
ータを格納する。
た描画命令に従って、描画処理を実行し、得られた画像
データを映像信号に変換して出力する。I/F10f
は、入力装置12から供給されたデータを、装置内部の
表現形式に変換する。
b、RAM10c、HDD10d、GB10e、およ
び、I/F10fを相互に電気的に接続し、これらの間
でデータの授受を可能とする。
e Ray Tube)モニタによって構成されており、GB10
eから出力された映像信号を表示する。入力装置12
は、例えば、キーボードやマウスによって構成されてお
り、ユーザの操作に応じたデータを生成して出力する。
装置10により、ソースファイルを解析する際には、H
DD10dに格納されているOSが起動され、その管理
の下で、ソースファイル解析方法を実現するためのアプ
リケーションプログラムが実行される。
るためのアプリケーションプログラムが実行された際に
形成される機能ブロックを説明するための図である。こ
の図において、ソースプログラム20は、HDD10d
に格納されている、解析対象となるプログラムであり、
JAVA(登録商標)等のオブジェクト指向言語で記述
されている。
プログラム20に対して解析処理を施すとともに、解析
の結果生成された解析情報を、データベース22に登録
する。
情報を格納したクラス定義情報DB(Data Base)22
aと、クラスの参照関係に係る情報を格納したクラス参
照情報DB22bによって構成されている。
すように、クラスの定義を示すクラス情報30a、クラ
スに含まれているメンバを示すクラスメンバ情報30
b、および、クラスメンバの内容を示すクラスメンバ内
容情報30cによって構成されている。
に示すように、クラスと利用クラスとの参照関係を示す
クラス参照情報31aによって構成されている。図5
は、クラス定義情報とクラス参照情報の詳細を示す図で
ある。この図に示すように、クラス情報は、クラス名、
パッケージ名、親クラス、スコープ、および、ファイル
名から構成されるクラス定義を有している。
ス、初期値、および、スコープから構成される変数定義
と、メソッド名、戻り値クラス、パラメタ名、パラメタ
クラス、スコープ、および、例外クラスから構成される
メソッド定義とを有している。
ラス、および、初期値から構成されるローカル変数定義
と、呼び出しメソッド名、および、利用クラスから構成
されるメソッド呼び出しと、利用クラスから構成される
キャスト利用と、throwクラス、および、catc
hクラスとから構成される例外利用とを有している。
類、利用クラス、および、利用名を有している。図3に
戻って、クラス影響検索処理部23は、入力された条件
24に該当するクラスを、データベース22から検索
し、得られた結果25を出力する。
ついて説明する。図6は、本実施の形態において解析の
対象となるソースファイルに含まれているクラスの階層
構造の一例を示す図である。この例では、最上位のクラ
スとしては、「ClassA」、「ClassAA」、
および、「Exception」が存在している。「C
lassA」の下層には、「ClassB」、「Cla
ssC」、および、「ClassD」が従属し、「Cl
assB」の下層には「ClassE」が従属してい
る。
「ClassBB」、「ClassCC」、および、
「ClassDD」が従属し、「ClassBB」の下
層には「ClassEE」が従属している。
は、「BBException」が従属している。図7
は、「ClassA」のソースファイルの一例を示す図
である。この例では、第1行目にパッケージ名である
「Package co.jp.xxx.aaa」が記
述されている。第2行目以降は、「ClassA」の具
体的な定義となっており、第3行目にてストリング変数
xが宣言され、第4行目〜6行目にて戻り値を有しない
(void)、パブリック(public)なメソッド
である「methodA1」が定義されている。また、
第7行目〜第9行目では、戻り値を有しないパブリック
なメソッドである「display」が定義されてい
る。
ルの一例を示す図である。この例では、第1行目にパッ
ケージ名である「Package co.jp.xx
x.aaa」が記述されている。第2行目以降は、「C
lassB」の具体的な定義となっており、第2行目に
て「ClassB」が「ClassA」を継承(ext
ends)することが宣言されている。第3行目および
第4行目では、「ClassDD」と「ClassE
E」のそれぞれのオブジェクトd,eが生成されてい
る。第5行目〜第13行目では、論理型(bool)の
データを戻り値とするパブリックなメソッド「meth
odB1」が定義されている。第6行目〜第9行目は
「methodB1」のメイン処理であり、スーパーク
ラスである「ClassA」のメソッドである「met
hodA1」および「displayx」が呼び出され
ており、また、オブジェクト「e」のメソッドである
「methodEE」が呼び出されている。
9行目の処理において、エラー等の例外が発生した場合
に実行される例外処理であり、エラーが発生した旨と、
そのエラーコードを表示するためのメソッドを呼び出し
ている。
る所定のクラスを変更した場合にその影響を受けるクラ
スを特定するためには、先ず、解析の対象となるクラス
を指定する必要がある。このような解析対象となるクラ
スを指定する方法として、本実施の形態では、図9に示
す画面40から、所望のクラスを指定することにより、
解析対象のクラスを選択することができる。
表示領域40a、解析結果のデータを登録するデータベ
ースを指定するテキストボックス40b、および、登録
の進行状況を示すインジケータ40c、および、各種ボ
タン40d〜40hが表示されている。
として選択されたクラスが一覧表示される。テキストボ
ックス40bには、解析の結果得られたクラス定義情報
と、クラス参照情報を登録するデータベース名を入力す
る。
れた場合に、処理の進行状況が表示される。ボタン40
dは、解析対象となるクラスが含まれているフォルダを
追加する際に操作される。ボタン40eは、解析対象と
なるクラスが含まれているファイルを追加する際に操作
される。ボタン40fは不要なファイルまたはフォルダ
を削除する際に操作される。
る際に、既存のフォルダやファイル名を参照する際に操
作される。ボタン40hは、入力された内容で、対象と
なるクラスを解析して登録する際に操作される。
0aに表示される内容を参照しつつ、ボタン40d〜4
0fを操作することにより、解析対象となるフォルダま
たはファイルを選択した後、参照ボタン40gを適宜操
作して、解析結果のデータを登録するデータベース名を
テキストボックス40bに入力し、登録開始ボタン40
hを操作すると、クラス解析情報登録処理部21は、指
定されたファイルを指定されたフォルダから読み出し、
解析処理を実行する。その際に、処理の進行状況がイン
ジケータ40cに表示される。
れたファイルを1つずつ読み込み、構文解析を行うが、
一例として、図7に示すソースファイルが解析対象とさ
れた場合には、クラス定義情報として以下の情報が抽出
されることになる。 (1)クラス情報 クラス名:ClassA クラスID:11(ユニークな番号を自動的に採番) 親クラス:なし スコープ:public パッケージ名:co.jp.xxx.aaa.Clas
sA (2)クラスメンバ情報 変数:x クラスメンバID:1111(ユニークな番号を自動的
に採番) 変数名:x 変数クラス:String メソッド:methodA1 クラスメンバID:1112(ユニークな番号を自動的
に採番) メソッド名:methodA1 メソッド戻り値クラス:なし メソッドパラメタ名:a メソッドパラメタクラス:String また、図8に示すソースファイルが解析対象とされた場
合には、クラス定義情報として以下の情報が抽出される
ことになる。 (1)クラス情報 クラス名:ClassB クラスID:22(ユニークな番号を自動的に採番) 親クラス:ClassA スコープ:public パッケージ名:co.jp.xxx.aaa.Clas
sB (2)クラスメンバ情報 変数:e クラスメンバID:1121(ユニークな番号を自動的
に採番) 変数名:e 変数クラス:ClassEE メソッド:methodB1 クラスメンバID:1122(ユニークな番号を自動的
に採番) メソッド名:methodB1 メソッド戻り値クラス:bool メソッドパラメタ名:なし メソッドパラメタクラス:なし (3)クラスメンバ内容テーブル メソッド:methodB1 メソッド呼び出しの情報格納例 クラスメンバ内容ID:3322(ユニークな番号を自
動的に採番) クラスメンバID:1122 利用種類:メソッド呼び出し メソッド呼び出し名:super.methodA
1(”call from ClassB”) メソッド呼び出しクラス名:ClassA 例外catchの情報格納例 クラスメンバ内容ID:3323(ユニークな番号を自
動的に採番) クラスメンバID:1122 利用種類:例外のキャッチ 呼び出し名:BBException 呼び出しクラス名:Exception クラス解析情報登録処理部21は、指定された全てのソ
ースファイルに対して以上のような解析処理を施し、抽
出したそれぞれのソースファイルのクラス情報、クラス
メンバ情報、および、クラスメンバ内容情報を総合し
て、クラス定義情報DB22aに登録する。
成されたクラス定義情報DB22aに格納される情報の
一例を示す図である。図10は、クラス情報を格納した
クラステーブルの一例を示す図である。この例では、抽
出されたそれぞれのクラスのクラスID、クラス名、パ
ッケージ名、親クラス名、親クラスID、および、スコ
ープが登録されている。例えば、第3行目の「Clas
sB」の例では、クラスIDは「22」であり、パッケ
ージ名は「co.jp.xxx.aaa.Class
B」であり、親クラス名は「ClassA」であり、ス
コープは「public」とされている。なお、親クラ
スIDは、後述する処理によって追加されるので、未格
納の状態とされている。
を格納したクラスメンバテーブルの一例を示す図であ
る。この例では、変数xと変数eに関する情報が登録さ
れており、登録項目としてはクラスメンバID、クラス
ID、種類、名前、利用クラス名、および、利用クラス
IDが含まれている。なお、利用クラスIDは、後述す
る処理によって追加されるので、未格納の状態とされて
いる。
情報を格納したクラスメンバテーブルの一例を示す図で
ある。この例では、「methodA1」と「meth
odB1」に関する情報が登録されており、登録項目と
してはクラスメンバID、クラスID、種類、名前、戻
り値クラス名、戻り値クラスID、パラメタ名、パラメ
タクラス名、および、パラメタクラスIDが挙げられて
いる。なお、戻り値クラスIDおよびパラメタクラスI
Dは、後述する処理によって付加されるので、未格納の
状態とされている。
スメンバ内容情報を格納したクラスメンバ内容テーブル
の一例を示す図である。この例では、「super.m
ethodA1(”call from Class
B”)」に関する情報が登録されており、登録項目とし
てはクラスメンバID、クラスID、種類、呼び出し
名、利用クラス名、および、利用クラスIDが挙げられ
ている。なお、利用クラスIDは、後述する処理によっ
て付加されるので、未格納の状態とされている。
関するクラスメンバ内容情報を格納したクラスメンバ内
容テーブルの一例を示す図である。この例では、呼び出
し名が「BBException」である例外キャッチ
に関する情報が登録されており、登録項目としてはクラ
スメンバID、クラスID、種類、呼び出し名、パラメ
タ名、例外クラス名、および、例外クラスIDが挙げら
れている。なお、例外クラスIDは、後述する処理によ
って付加されるので、未格納の状態とされている。
されると、クラス解析情報登録処理部21は、クラス参
照情報を生成する。本実施の形態では、前述した図10
〜図14の空欄とされている部分に該当するデータを抽
出することにより、参照情報を生成し、これをまとめる
ことにより、結果的にクラス参照情報を生成する。
ーブルの親クラスIDに対して、該当するデータを格納
した場合の一例を示す図である。例えば、「Class
A」の親クラスは存在しないことから、親クラスIDは
空欄とされている。また、「ClassB」〜「Cla
ssD」の親クラスは、「ClassA」であり、その
クラスIDは、「11」であることから、これらの親ク
ラスIDとして「11」が格納される。同様にして他の
親クラスIDも該当するデータが格納される。
スメンバテーブルの利用クラスIDに対して該当するデ
ータを格納した場合の一例を示す図である。例えば、変
数eの場合、利用クラスは「ClassEE」であるの
で、利用クラスIDとして「115」が格納されてい
る。
クラスメンバテーブルの戻り値クラスIDと、パラメタ
クラスIDに対して該当するデータを格納した場合の一
例を示す図である。例えば、「methodA1」の場
合、戻り値クラスは存在しないので、戻り値クラスID
は空欄とされており、また、パラメタクラスは「Str
ing」であるので該当するクラスIDとして「1」が
格納されている。
に関するクラスメンバ内容テーブルの利用クラスIDに
対して該当するデータを格納した場合の一例を示す図で
ある。「super.methodA1(”call
from ClassB”)」の場合、利用クラスは
「ClassA」であるので、該当するクラスIDとし
て「11」が格納されている。
するクラスメンバ内容テーブルの例外クラスIDに対し
て該当するデータを格納した場合の一例を示す図であ
る。呼び出し名が「BBException」の例外キ
ャッチの場合、例外クラス名は「BBExceptio
n」であるので、該当する例外クラスIDとして「11
11」が格納されている。
は、以上のようにして生成した情報を参照し、クラスど
うしの参照関係を抽出する。抽出する内容としては、利
用種類(継承、インターフェース、変数等)、利用元ク
ラスID、利用先クラスID、および、利用名を抽出す
る。なお、利用関係詳細情報としては以下の種類の情報
を抽出する。
するクラス参照情報としては、図20に示すようなテー
ブルが生成されることになる。この例では、「継承」、
「変数」、「メソッドパラメタ」、「メソッド戻り
値」、「メソッド内メソッド呼び出し」、および、「メ
ソッド内catch例外」が利用種類として抽出されて
おり、それぞれについて、利用クラス、利用メンバ、参
照クラス、および、利用名が格納されている。例えば、
「継承」の場合、「ClassB」は「ClassA」
を継承しているので、利用クラスとしてClassBを
示す「22」と、参照クラスとして「ClassA」を
示す「11」と、利用名として「ClassA」が格納
されている。
情報は、まとめられてクラス参照情報DB22bに格納
される。その結果、クラス定義情報DB22aとクラス
参照情報DB22bには、対象となるソースプログラム
20を解析した結果が格納されることになる。
22aと、クラス参照情報DB22bに登録された情報
を参照し、特定のクラスを変更した場合に影響を被るク
ラスを検索する場合の処理について説明する。
と、例えば、図21に示すような画面70が表示装置1
1に表示されることになる。この画面70では、クラス
を検索する際に操作されるボタン70a、クラスを再検
索する際に操作されるボタン70b、より詳細な項目に
ついて検索をする際に操作されるボタン70c、詳細な
検索を再度行う際に操作されるボタン70d、ファイル
を検索する際に操作されるボタン70e、および、どの
クラスからも参照されていない未使用資産を検索する際
に操作されるボタン70fが表示されている。その下の
表示領域70gには、クラスの階層構造を示す樹形図が
表示される。また、表示領域70hには、検索結果が表
示される。
ssA」の左に表示されているチェックボックスをチェ
ックし、クラス検索を行うためのボタン70aを操作す
ると、クラス影響検索処理部23は、「ClassA」
を利用しているクラスをクラス参照情報DB22bから
検索する。いまの例では、「ClassB」、「Cla
ssC」、および、「ClassD」が「Class
A」を継承していることから、これらが影響クラスとし
て取得される。
得されたクラスが下位のクラスを有している場合には、
その下位クラスについても同様の検索を行う。いまの例
では、「ClassB」が下位クラスを有しているの
で、該当する「ClassE」が取得されることにな
る。このような処理は、該当する下位クラスが存在しな
くなるまで繰り返される。
と、クラス影響検索処理部23は、検索結果を、図21
に示す表示領域70hに一覧表示する。このような表示
を参照することにより、ユーザは、「ClassA」を
変更した場合に影響を被るクラスについて知ることがで
きる。
所望のクラスを指定するようにしたが、ファイル名から
目的のクラスを指定することも可能である。図22は、
そのような場合に対応する検索画面の表示例である。
イルの名前を入力するテキストボックス80a、ファイ
ルに含まれている文字列を入力するテキストボックス8
0b、ファイルを探す場所を入力するテキストボックス
80cが表示されており、テキストボックス80cの右
隣りには検索対象となるフォルダを指定する際に操作さ
れるボタン80dが表示されている。
タン80eは、入力された条件で検索を実行する際に操
作される。ボタン80fは、入力された条件をクリアす
る際に操作される。
示される。ボタン80hは、表示領域80gに表示され
ている項目を選択し、その選択した項目についてクラス
検索を行う場合に操作される。
れている項目を選択し、その選択した項目について詳細
検索を行う場合に操作される。ボタン80jは、選択内
容をキャンセルする際に操作され、ボタン80kは、操
作等に関するヘルプ画面を表示する際に操作される。
「ClassA*」がテキストボックス80aに入力さ
れ、探す場所として「c:¥temp」がテキストボッ
クス80cに入力されたとする。なお、「*」はワイル
ドカードであり、任意の文字または文字列を示す。この
ような状態において、ボタン80eが操作されたとする
と、クラス影響検索処理部23は、文字列「Class
A*」を含むクラスを、「c:¥temp」から検索
し、得られた結果を表示領域80gに一覧表示する。こ
の例では、「ClassA」と「ClassAA」が検
索結果として表示されている。
ックボックスのうち、「ClassA」の左隣りに配置
されているチェックボックスをチェックした後、ボタン
80hを操作すると、前述の場合と同様に「Class
A」に対するクラス検索が実行され、図21に示す画面
70の表示領域70hに表示されているのと同様の内容
が表示されることになる。
「ClassEE」を検索対象として選択し、クラス検
索を行ったとする。図8に示すように、「ClassE
E」は、「ClassB」の第4行目においてインスタ
ンス化されており、第9行目においてそのメソッドが呼
び出されている。従って、「ClassEE」に対して
行った変更は、「ClassB」にも波及することにな
るので、クラス検索の結果、図23の表示領域70hに
示すように、影響クラスとして「ClassB」が表示
され、影響プロパティとして「e」と「methodB
1」が表示されることになる。
り、「ClassEE」を変更した場合において影響を
被るクラスとプロパティを特定することが可能となる。
次に、メソッドを変更した場合における影響範囲を特定
するためのメソッド影響検索(詳細検索)について説明
する。例えば、図21に示す画面70の表示領域70g
において、「ClassEE」を選択し、ボタン70c
を操作すると、図24に示す画面90が表示される。こ
の画面90では、「ClassEE」に含まれているメ
ソッドが表示領域90aに一覧表示されている。
1行目に表示されている「methodEE」を選択
し、ボタン90bを操作すると、クラス影響検索処理部
23は、指定された「methodEE」が変更された
場合に影響を被るクラスを、図20に示すクラス参照テ
ーブルから検索する。即ち、クラス参照テーブルにおい
て、参照クラスが指定された変更クラスと一致し、利用
種類がメソッド呼び出しであり、かつ、メソッド呼び出
し名が一致する項目を検索する。いまの例では、「Cl
assEE」の「methodEE」を呼び出している
全てのクラスが特定され、図25に示すような検索結果
を示す画面70が表示されることになる。この例では、
表示領域70hに対して、「ClassEE」の「me
thodEE」を変更した場合に影響を被る影響クラス
として「ClassB」が、また、影響プロパティとし
て「methodB1」が、更に、呼び出し名として
「e.methodB1」が表示されている。
り、あるメソッドを変更した場合に、その変更の影響を
被るクラスとそのメソッドを特定することが可能とな
る。次に、図25に示す画面70において、未使用資産
を検索するためのボタン70fが操作された場合の動作
について説明する。
影響検索処理部23は、クラステーブルに定義されてい
るにも拘わらず、クラス参照情報テーブルの参照クラス
に一度も出現しないクラスを検索する。
6に示すように、クラス参照情報テーブルの参照クラス
と、クラステーブルのクラスIDとを照合し、参照クラ
スに一度も出現しないクラスIDが存在するか否かを判
定する。そして、存在する場合には、該当するクラスを
取得し、図27に示すように、未使用資産一覧画面10
0に表示する。
assCC」と「ClassBB」が表示領域100a
に表示されており、そのパッケージ名とソースファイル
名が表示されている。
クラスからも参照されていない、いわば不要なクラスを
特定し、これを削除することにより、プログラムをスリ
ム化し、メモリ等の必要量を削減することが可能とな
る。
るフローチャートについて説明する。図28は、ソース
ファイルを解析し、クラス情報、クラスメンバ情報、ク
ラスメンバ内容情報、および、クラス参照情報を生成す
るフローチャートの一例である。このフローチャートが
開始されると、以下のステップが実行される。
部21は、クラス抽出条件を読み込む。なお、クラスの
抽出条件としては、図9に示す画面40から入力された
内容を用いる。なお、それ以外にも、抽出条件を記述し
たファイルやレジストリから情報を入力するようにして
もよい。
部21は、解析対象となるソースファイルをHDD10
dから読み込む。
部21は、ソースファイルの読み込みが終了したか否か
を判定し、読み込みが終了した場合にはステップS16
に進み、それ以外の場合にはステップS13に進む。
部21は、クラス情報およびクラスメンバ情報をソース
ファイルから抽出し、データベース22のクラス定義情
報DB22aに登録する。
部21は、詳細情報(クラスメンバ内容情報)の抽出を
除外するか否かを判定し、詳細情報の抽出を除外する場
合にはステップS11に進み、それ以外の場合にはステ
ップS15に進む。具体的には、パッケージが除外指定
されたパッケージと前方一致していない場合にはステッ
プS15に進む。
部21は、クラスメンバ詳細情報を抽出し、クラス定義
情報DB22aに登録した後、ステップS11に戻って
前述の場合と同様の処理を繰り返す。
部21は、各クラスを参照している関係を全てリンクす
ることにより、クラスリンク情報を登録する。
部21は、ステップS16において登録したリンクを参
照し、クラス参照情報を生成した後、クラス参照情報D
B22bに登録する。
行う際に実行されるフローチャートについて説明する。
このフローチャートが開始されると、以下のステップが
実行される。
3は、図21に示す画面70において入力された変更ク
ラス条件を読み込む。
3は、ステップS30において指定されたクラスを利用
しているクラスを、クラス参照情報DB22bから検索
する。
3は、対象となるクラスに下位クラスが存在するか否か
を判定し、存在する場合にはステップS33に進み、そ
れ以外の場合にはステップS34に進む。
3は、変更クラス条件、即ち、検索の対象となるクラス
をステップS32で特定した下位クラスに変更する。
3は、検索結果を生成し、例えば、図21に示す表示領
域70hに表示する。
索を行う場合に実行されるフローチャートについて説明
する。このフローチャートが開始されると、以下のステ
ップが実行される。
3は、変更しようとするメンバとそのクラスとを、変更
クラスメンバ条件として、例えば、図24に示す画面9
0から読み込む。
3は、指定されたクラスをメソッド呼び出しにより利用
しているクラスであって、メソッド呼び出しが指定され
た条件と一致するクラスを、クラス参照情報DB22b
から検索する。
3は、指定されたクラスに下位クラスが存在するか否か
を判定し、存在する場合にはステップS53に進み、そ
れ以外の場合にはステップS55に進む。
3は、ステップS52で特定した下位クラスに同一のメ
ソッドが存在するか否かを判定し、同一のメソッド(名
前、パラメタが一致)が存在する場合には、オーバーラ
イドされているので、その場合にはステップS55に進
み、それ以外の場合にはステップS54に進む。
3は、変更クラス条件を下位クラスに変更した後、ステ
ップS51に戻って前述の場合と同様の処理を繰り返
す。その結果、サブクラスが存在しなくなるまで同様の
処理が繰り返される。
3は、検索結果を生成し、例えば、図25に示すような
画面70に表示する。
索する際に実行されるフローチャートについて説明す
る。このフローチャートが開始されると、以下の処理が
実行される。
3は、検索対象の条件を受ける。具体的には、クラス影
響検索処理部23は、検索対象パッケージの指定を受け
る。
3は、参照クラスにおいて未参照のクラスを検索する。
3は、検索結果を生成し、例えば、図27に示すような
画面100に対して表示する。
ば、図3に示す実施の形態において実行される機能を実
現することが可能となる。なお、以上の実施の形態で
は、オブジェクト指向言語として、JAVAを例に挙げ
て説明したが、その他のオブジェクト指向言語に対して
本発明を適用することも可能である。
あるので、本発明はこのような場合のみに限定されるも
のではないことはいうまでもない。なお、上記の処理機
能は、コンピュータによって実現することができる。そ
の場合、ソースファイル解析装置が有すべき機能の処理
内容は、コンピュータで読み取り可能な記録媒体に記録
されたプログラムに記述されており、このプログラムを
コンピュータで実行することにより、上記処理がコンピ
ュータで実現される。コンピュータで読み取り可能な記
録媒体としては、磁気記録装置や半導体メモリ等があ
る。市場へ流通させる場合には、CD−ROM(Compact
Disk Read Only Memory)やフレキシブルディスク等の
可搬型記録媒体にプログラムを格納して流通させたり、
ネットワークを介して接続されたコンピュータの記憶装
置に格納しておき、ネットワークを通じて他のコンピュ
ータに転送することもできる。コンピュータで実行する
際には、コンピュータ内のハードディスク装置等にプロ
グラムを格納しておき、メインメモリにロードして実行
する。
されたソースファイルを解析する処理をコンピュータに
機能させるプログラムを格納したコンピュータ読み取り
可能な記録媒体において、コンピュータを、解析対象と
なるソースファイルを入力する入力手段、前記入力手段
によって入力されたソースファイルに含まれているクラ
スの参照関係を調査する参照関係調査手段、前記参照関
係調査手段による調査結果に基づいて、所定のクラスを
変更した際に、影響を受けるクラスを特定する影響クラ
ス特定手段、として機能させるプログラムを記録したコ
ンピュータ読み取り可能な記録媒体。
記クラスの参照関係の調査結果に応じて、クラスの定義
内容に係るクラス定義情報と、クラスの参照関係に係る
クラス参照情報と有する調査結果情報を生成し、前記影
響クラス特定手段は、前記調査結果情報のうちクラス参
照情報を参照して、影響を受けるクラスを特定すること
を特徴とする付記1記載の記録媒体。
スの定義に係るクラス情報と、クラスメンバの定義に係
るクラスメンバ情報と、クラスメンバの内容に係るクラ
スメンバ内容情報とを有し、前記影響クラス特定手段
は、検索対象となるクラスに応じて、前記クラス情報、
前記クラスメンバ情報、または、前記クラスメンバ内容
情報のうち、必要な情報を選択し、影響を受けるクラス
を特定する、ことを特徴とする付記2記載の記録媒体。
ースファイル単位の解析を行った後、データベース単位
で前記クラス定義情報と前記クラス参照情報を生成する
ことを特徴とする付記2記載の記録媒体。
変更の対象となるクラスに参照関係を有する下位のクラ
スを順次検索して影響の有無を特定することを特徴とす
る付記1記載の記録媒体。
所定のクラスのメンバが変更された場合に、その影響を
受けるクラスを特定することを特徴とする付記1記載の
記録媒体。
結果を参照し、他のクラスから参照されていない未使用
のクラスを検出する未使用クラス検出手段を更に有する
ことを特徴とする付記1記載の記録媒体。
されたソースファイルを解析するソースファイル解析方
法において、解析対象となるソースファイルを入力する
入力ステップと、前記入力ステップによって入力された
ソースファイルに含まれているクラスの参照関係を調査
する参照関係調査ステップと、前記参照関係調査ステッ
プによる調査結果に基づいて、所定のクラスを変更した
際に、影響を受けるクラスを特定する影響クラス特定ス
テップと、を有することを特徴とするソースファイル解
析方法。
されたソースファイルを解析する処理をコンピュータに
機能させるプログラムにおいて、コンピュータを、解析
対象となるソースファイルを入力する入力手段、前記入
力手段によって入力されたソースファイルに含まれてい
るクラスの参照関係を調査する参照関係調査手段、前記
参照関係調査手段による調査結果に基づいて、所定のク
ラスを変更した際に、影響を受けるクラスを特定する影
響クラス特定手段、として機能させるプログラム。
ェクト指向言語で記述されたソースファイルを解析する
処理をコンピュータに機能させるプログラムを格納した
コンピュータ読み取り可能な記録媒体およびプログラム
により、コンピュータを、解析対象となるソースファイ
ルを入力する入力手段、入力手段によって入力されたソ
ースファイルに含まれているクラスの参照関係を調査す
る参照関係調査手段、参照関係調査手段による調査結果
に基づいて、所定のクラスを変更した際に、影響を受け
るクラスを特定する影響クラス特定手段、として機能さ
せるようにしたので、オブジェクト指向言語で記述され
たソースファイルの所定のクラスを変更する際に、その
影響を受けるクラスを容易に特定することができる。
リケーションプログラムが実行された際に形成される機
能ブロックを説明するための図である。
図である。
ファイルに含まれているクラスの階層構造を示す図であ
る。
ある。
ある。
一例である。
を示す図である。
ラスメンバテーブルの一例を示す図である。
たクラスメンバテーブルの一例を示す図である。
情報を格納したクラスメンバ内容テーブルの一例を示す
図である。
メンバ内容情報を格納したクラスメンバ内容テーブルの
一例を示す図である。
に対して該当するデータを格納した場合の一例を示す図
である。
ブルの利用クラスIDに対して該当するデータを格納し
た場合の一例を示す図である。
テーブルの戻り値クラスIDと、パラメタクラスIDに
対して該当するデータを格納した場合の一例を示す図で
ある。
スメンバ内容テーブルの利用クラスIDに対して該当す
るデータを格納した場合の一例を示す図である。
ンバ内容テーブルの例外クラスIDに対して該当するデ
ータを格納した場合の一例を示す図である。
ラス参照情報の一例を示す図である。
示される画面の一例を示す図である。
の一例を示す図である。
示される画面の一例を示す図である。
て、「ClassEE」を選択し、ボタン70cを操作
した場合に表示される画面の一例である。
に表示される画面の一例である。
テーブルの参照クラスと、クラステーブルのクラスID
とを照合し、参照クラスに一度も出現しないクラスID
が存在するか否かを判定する場合の様子を示す図であ
る。
一例である。
スメンバ情報、クラスメンバ詳細情報、および、クラス
参照情報を生成するフローチャートの一例である。
チャートの一例である。
ローチャートの一例である。
チャートの一例である。
に、影響を受ける部位を特定するために使用されていた
クロスレファレンスと呼ばれる影響検索機能について説
明する図である。
Claims (6)
- 【請求項1】 オブジェクト指向言語で記述されたソー
スファイルを解析する処理をコンピュータに機能させる
プログラムを格納したコンピュータ読み取り可能な記録
媒体において、 コンピュータを、 解析対象となるソースファイルを入力する入力手段、 前記入力手段によって入力されたソースファイルに含ま
れているクラスの参照関係を調査する参照関係調査手
段、 前記参照関係調査手段による調査結果に基づいて、所定
のクラスを変更した際に、影響を受けるクラスを特定す
る影響クラス特定手段、 として機能させるプログラムを記録したコンピュータ読
み取り可能な記録媒体。 - 【請求項2】 前記参照関係調査手段は、前記クラスの
参照関係の調査結果に応じて、クラスの定義内容に係る
クラス定義情報と、クラスの参照関係に係るクラス参照
情報と有する調査結果情報を生成し、 前記影響クラス特定手段は、前記調査結果情報のうちク
ラス参照情報を参照して、影響を受けるクラスを特定す
ることを特徴とする請求項1記載の記録媒体。 - 【請求項3】 前記クラス定義情報は、クラスの定義に
係るクラス情報と、クラスメンバの定義に係るクラスメ
ンバ情報と、クラスメンバの内容に係るクラスメンバ内
容情報とを有し、 前記影響クラス特定手段は、検索対象となるクラスに応
じて、前記クラス情報、前記クラスメンバ情報、また
は、前記クラスメンバ内容情報のうち、必要な情報を選
択し、影響を受けるクラスを特定する、 ことを特徴とする請求項2記載の記録媒体。 - 【請求項4】 前記影響クラス特定手段は、所定のクラ
スのメンバが変更された場合に、その影響を受けるクラ
スを特定することを特徴とする請求項1記載の記録媒
体。 - 【請求項5】 前記参照関係調査手段の調査結果を参照
し、他のクラスから参照されていない未使用のクラスを
検出する未使用クラス検出手段を更に有することを特徴
とする請求項1記載の記録媒体。 - 【請求項6】 オブジェクト指向言語で記述されたソー
スファイルを解析する処理をコンピュータに機能させる
プログラムにおいて、 コンピュータを、 解析対象となるソースファイルを入力する入力手段、 前記入力手段によって入力されたソースファイルに含ま
れているクラスの参照関係を調査する参照関係調査手
段、 前記参照関係調査手段による調査結果に基づいて、所定
のクラスを変更した際に、影響を受けるクラスを特定す
る影響クラス特定手段、 として機能させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001357893A JP2002222082A (ja) | 2000-11-24 | 2001-11-22 | 記録媒体およびプログラム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000-356878 | 2000-11-24 | ||
JP2000356878 | 2000-11-24 | ||
JP2001357893A JP2002222082A (ja) | 2000-11-24 | 2001-11-22 | 記録媒体およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002222082A true JP2002222082A (ja) | 2002-08-09 |
Family
ID=26604497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001357893A Pending JP2002222082A (ja) | 2000-11-24 | 2001-11-22 | 記録媒体およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2002222082A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123254A (ja) * | 2006-11-13 | 2008-05-29 | Nippon Shoken Technology Kk | Java言語プログラムを用いた大規模業務系の影響分析ツール |
JP2009251769A (ja) * | 2008-04-02 | 2009-10-29 | Hitachi Ltd | クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置 |
JP2012038029A (ja) * | 2010-08-05 | 2012-02-23 | Toshiba Corp | 自動書き換えプログラムおよび自動書き換え装置 |
JP2012203860A (ja) * | 2011-03-28 | 2012-10-22 | Toshiba Corp | オントロジ更新装置、方法、およびシステム |
JP2016053838A (ja) * | 2014-09-03 | 2016-04-14 | 三菱電機株式会社 | ソースコード解析装置及びソースコード解析方法及びプログラム |
-
2001
- 2001-11-22 JP JP2001357893A patent/JP2002222082A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008123254A (ja) * | 2006-11-13 | 2008-05-29 | Nippon Shoken Technology Kk | Java言語プログラムを用いた大規模業務系の影響分析ツール |
JP2009251769A (ja) * | 2008-04-02 | 2009-10-29 | Hitachi Ltd | クラス構造生成方法、クラス構造生成プログラムおよびクラス構造生成装置 |
JP2012038029A (ja) * | 2010-08-05 | 2012-02-23 | Toshiba Corp | 自動書き換えプログラムおよび自動書き換え装置 |
JP2012203860A (ja) * | 2011-03-28 | 2012-10-22 | Toshiba Corp | オントロジ更新装置、方法、およびシステム |
JP2016053838A (ja) * | 2014-09-03 | 2016-04-14 | 三菱電機株式会社 | ソースコード解析装置及びソースコード解析方法及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4365142B2 (ja) | プロパティをオブジェクトに関連付けするための、コンピュータ可読媒体、システム、および、方法 | |
US6571247B1 (en) | Object oriented technology analysis and design supporting method | |
US7437722B2 (en) | Determining which software component versions of an issue resolution are included in a version of a software development project at a particular time | |
US6668371B2 (en) | Method and apparatus for software component analysis | |
US7194475B2 (en) | Method, system, and program for performing an impact analysis of program statements in at least one source code file | |
JP5367947B2 (ja) | 用語データベース拡張のための方法およびシステム | |
US8850388B2 (en) | Controlling application features | |
US20080120601A1 (en) | Information processing apparatus, method and program for deciding priority of test case to be carried out in regression test background of the invention | |
US20120110560A1 (en) | Data type provider for a web semantic store | |
JP2005011345A (ja) | コードセグメント作成方法及びそのシステム | |
Garcés et al. | White-box modernization of legacy applications: The oracle forms case study | |
US8607197B2 (en) | Displaying HTTP session entry and exit points | |
EP3314409B1 (en) | Tracing dependencies between development artifacts in a software development project | |
US8776010B2 (en) | Data type provider for a data store | |
JP2020119348A (ja) | 解析プログラム、解析方法および解析装置 | |
US7069542B2 (en) | Method and system for incremental actions relating to notify and target models | |
US8032858B2 (en) | Method and system for navigationally displaying HTTP session entry and exit points | |
JP4330559B2 (ja) | グリーン調達装置及びグリーン調達処理プログラム | |
US20050246773A1 (en) | System and methods for processing partial trust applications | |
JP2002222082A (ja) | 記録媒体およびプログラム | |
US7707569B2 (en) | Method and apparatus for customizing model to code transformations | |
US6735762B2 (en) | Record medium and method for analyzing a source file | |
US20060225047A1 (en) | Generic software requirements analyzer | |
JP4535906B2 (ja) | Umlモデル作成支援方法及びその装置 | |
JP2004310279A (ja) | 業務処理システムおよびその構築支援装置、業務処理システム用プログラム、業務処理システムの構築支援用プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040524 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061010 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070109 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070508 |