JPH0926897A - Program analyzer and program analyzing method - Google Patents
Program analyzer and program analyzing methodInfo
- Publication number
- JPH0926897A JPH0926897A JP8113728A JP11372896A JPH0926897A JP H0926897 A JPH0926897 A JP H0926897A JP 8113728 A JP8113728 A JP 8113728A JP 11372896 A JP11372896 A JP 11372896A JP H0926897 A JPH0926897 A JP H0926897A
- Authority
- JP
- Japan
- Prior art keywords
- information
- source code
- data
- program analysis
- processing
- 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)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、コンピュータプロ
グラムのソースコードを静的解析によって効率的に解析
し、解析結果によって、処理内容及び入出力仕様を含む
ソースコードの内容の理解を容易にするプログラム解析
装置及びプログラム解析方法に関するものである。The present invention relates to a program for efficiently analyzing the source code of a computer program by static analysis and facilitating the understanding of the content of the source code including the processing content and the input / output specifications based on the analysis result. The present invention relates to an analysis device and a program analysis method.
【0002】[0002]
【従来の技術】ソフトウェア開発における検査や保守の
工程において、コンピュータプログラムのソースコード
をレビューして検査したり、改良のためリバースエンジ
ニアリングを行う場合、ソースコードの内容すなわち処
理内容や入出力仕様を解析する必要がある。2. Description of the Related Art In the process of inspection and maintenance in software development, when the source code of a computer program is reviewed and inspected, or when reverse engineering is performed for improvement, the content of the source code, that is, the processing content and input / output specifications are analyzed. There is a need to.
【0003】ソースコードの解析をするための従来技術
の一つは、実行モジュールを生成したりインタプリタを
用いてプログラムのテスト実行をし、実際にデータを処
理してみることである(動的解析)。One of the conventional techniques for analyzing the source code is to generate an execution module or test-execute the program by using an interpreter and actually process the data (dynamic analysis). ).
【0004】また、解析の他の手法は、プログラムの記
号実行すなわち静的解析である。代表的な静的解析の手
法では、プログラム中の変数などの要素を、具体的な属
性値ではなく、エラー値の可能性など抽象的な記号で表
す。そして、プログラムの処理の様子をこれら記号の組
み合わせで表す。Another method of analysis is symbolic execution of programs, that is, static analysis. In a typical static analysis method, elements such as variables in a program are represented by abstract symbols such as the possibility of an error value instead of concrete attribute values. The state of processing of the program is represented by a combination of these symbols.
【0005】さらに、ソースコードの解析の他の手法と
しては、人間が手作業でソースコードを読解して内容を
把握することも行われる。Further, as another method of analyzing the source code, a human may manually read the source code and grasp the contents.
【0006】[0006]
【発明が解決しようとする課題】しかしながら、上記の
ような従来の手法には、次のような問題点が存在してい
た。However, the conventional method as described above has the following problems.
【0007】まず、動的解析では、プログラムの不具合
がそもそも実際に動作できないことである場合に適用で
きない。また、プログラムの変更のたびに実行モジュー
ルを生成することは繁雑である。さらに、プログラムの
一部のみをテスト実行するには、ドライバやスタブな
ど、そのための特殊なプログラムモジュールを要する点
で繁雑である。また、テスト実行にはテストデータが必
要であるが、解析の目的に完全に一致した条件に基づい
てテストデータを作成することは、困難かつ繁雑であっ
た。First, the dynamic analysis cannot be applied to the case where the program malfunction is that the program cannot actually operate in the first place. Moreover, it is complicated to generate an execution module each time the program is changed. Further, in order to test and execute only a part of the program, a special program module for the driver or stub is required, which is complicated. Moreover, although test data is required for test execution, it is difficult and complicated to create test data based on conditions that completely match the purpose of analysis.
【0008】また、従来の記号実行では、データの変遷
を抽象的に解析することは可能であったが、入力する具
体的なデータに応じて実行内容が変化する場合など、い
わばソースコードの入出力仕様を把握することが困難で
あった。Further, in the conventional symbolic execution, it is possible to analyze the transition of data in an abstract manner. However, in the case where the execution content changes according to the concrete data to be input, so to speak, the source code is input. It was difficult to understand the output specifications.
【0009】また、ソースコードの手作業による読解
は、繁雑で非常な労力を伴ううえ、行う者の技量によっ
て作業品質が異なるという問題点を有していた。Further, the manual reading of the source code has problems that it is complicated and requires a lot of labor, and that the work quality varies depending on the skill of the person who performs the reading.
【0010】本発明は、上記のような従来技術の問題点
を解決するために提案されたもので、その目的は、ソー
スコードを静的解析によって効率的に解析し、解析結果
によって、処理内容及び入出力仕様を含むソースコード
の内容の理解を容易にするプログラム解析装置及びプロ
グラム解析方法を提供することである。また、本発明の
他の目的は、処理手順が容易なプログラム解析装置及び
プログラム解析方法を提供することである。The present invention has been proposed to solve the problems of the prior art as described above, and its purpose is to efficiently analyze the source code by static analysis and to analyze the processing contents according to the analysis result. And a program analysis device and a program analysis method for facilitating the understanding of the contents of the source code including the input / output specifications. Another object of the present invention is to provide a program analysis device and a program analysis method whose processing procedure is easy.
【0011】[0011]
【課題を解決するための手段】上記の目的を達成するた
め、本発明は次のような構成及び作用を有する。すなわ
ち、請求項1の発明は、データに対する処理を表すコン
ピュータプログラムのソースコードを解析するプログラ
ム解析装置において、前記ソースコードから、前記各デ
ータの構造を表す情報であるデータ情報を抽出するデー
タ情報抽出手段と、前記ソースコードと前記データ情報
とに基づいて、ソースコードの所定の位置について、デ
ータ間の関連情報を抽出する関連情報抽出手段と、を有
することを特徴とする。In order to achieve the above object, the present invention has the following configuration and operation. That is, the invention of claim 1 is, in a program analysis device that analyzes a source code of a computer program that represents a process for data, extracting data information that is information representing the structure of each data from the source code. Means, and related information extracting means for extracting related information between data at a predetermined position of the source code based on the source code and the data information.
【0012】請求項14の発明は、請求項1の発明を方
法の観点から把握したものであって、データに対する処
理を表すコンピュータプログラムのソースコードを解析
するプログラム解析方法において、前記ソースコードか
ら、前記各データの構造を表す情報であるデータ情報を
抽出するデータ抽出ステップと、前記ソースコードと前
記データ情報とに基づいて、ソースコードの所定の位置
について、データ間の関連情報を抽出する関連抽出ステ
ップと、を含むことを特徴とする。According to a fourteenth aspect of the present invention, the invention of the first aspect is grasped from the viewpoint of a method, and in a program analysis method for analyzing a source code of a computer program that represents a process for data, A data extraction step of extracting data information which is information representing the structure of each data, and a relation extraction for extracting relation information between data at a predetermined position of the source code based on the source code and the data information. And a step.
【0013】請求項1,14の発明では、ソースコード
から、当該ソースコードに含まれるデータの構造を表す
データ情報が抽出される。これは、ソースコード中のデ
ータについてテーブルを獲得することを意味する。この
ため、データの理解を通じて、ソースコードの内容の把
握が容易になる。また、前記ソースコードと前記データ
情報とに基づいて、ソースコードの所定の位置につい
て、データ間の関連情報が抽出される。これは、抽出さ
れた各データがソースコードのどこでどの様な関連を持
っているかを特定することを意味する。このため、デー
タ間の関連の理解を通じて、ソースコードの内容の把握
が容易になる。According to the inventions of claims 1 and 14, data information representing a structure of data included in the source code is extracted from the source code. This means getting a table for the data in the source code. Therefore, it becomes easy to understand the contents of the source code through understanding the data. Also, based on the source code and the data information, related information between data is extracted at a predetermined position of the source code. This means identifying where and in the source code each extracted data has a relationship. Therefore, it becomes easy to understand the contents of the source code by understanding the relationship between the data.
【0014】なお、請求項1記載のプログラム解析装置
において、前記ソースコードの各部分に位置IDを付加
するラベリング手段を設けたり、請求項14記載のプロ
グラム解析方法において、前記ソースコードの各部分に
位置IDを付加するラベリングステップを含めてもよ
い。In the program analysis device according to claim 1, labeling means for adding a position ID to each part of the source code is provided, or in the program analysis method according to claim 14, each part of the source code is added. A labeling step of adding the position ID may be included.
【0015】このようにすれば、ソースコードの各部分
に位置IDが付加されるので、抽出された情報の格納・
検索・出力などの各処理を位置IDに基づいて行うこと
ができ、また、テキスト出力及びテキスト入力のみをベ
ースに解析や出力などの処理の対象範囲を指定すること
が容易になる。In this way, since the position ID is added to each part of the source code, it is possible to store the extracted information.
Each processing such as search / output can be performed based on the position ID, and it becomes easy to specify the target range of processing such as analysis and output based on only text output and text input.
【0016】また、請求項1記載のプログラム解析装置
において、前記ソースコードに当該ソースコードのイン
クルードファイルを加入するプリプロセッサを設けた
り、請求項14記載のプログラム解析装置において、前
記ソースコードに当該ソースコードのインクルードファ
イルを加入するステップを含めてもよい。Further, in the program analysis device according to claim 1, a preprocessor for adding an include file of the source code to the source code is provided, or in the program analysis device according to claim 14, the source code is associated with the source code. May include the step of subscribing to the include file.
【0017】このようにすれば、C言語のようにインク
ルードファイルを用いる言語の場合も、ソースコードに
インクルードファイルが加入されるので、ユーザがあら
かじめこの作業を行っておく必要がない。また、処理中
にインクルードファイルを参照する手順が省略できる。In this way, even in a language using an include file such as C language, the include file is added to the source code, so that the user does not need to perform this work in advance. Also, the step of referring to the include file during processing can be omitted.
【0018】請求項2の発明は、請求項1記載のプログ
ラム解析装置において、前記ソースコードに関連する他
のファイルを参照する参照手段を備えたことを特徴とす
る。The invention according to claim 2 is the program analysis apparatus according to claim 1, characterized by further comprising a reference means for referring to another file related to the source code.
【0019】請求項15の発明は、請求項2の発明を方
法の観点から把握したものであって、請求項14記載の
プログラム解析方法において、前記ソースコードに関連
する他のファイルを参照する参照ステップを含むことを
特徴とする。A fifteenth aspect of the present invention is obtained by grasping the second aspect of the invention from the viewpoint of a method. In the program analysis method according to the fourteenth aspect, reference is made to another file related to the source code. It is characterized by including a step.
【0020】請求項2,15の発明では、C言語のよう
に分割コンパイルをサポートする言語の場合も、処理中
に他のファイルが参照されるので、必要な情報をあらか
じめソースコードに加入しておく手順が省略できる。According to the second and fifteenth aspects of the invention, even in the case of a language such as C language which supports division compilation, other files are referred to during processing, so that necessary information is added to the source code in advance. The step of setting can be omitted.
【0021】請求項3の発明は、請求項1記載のプログ
ラム解析装置において、前記データ情報は、データごと
の情報を格納する構造体Dと、データの型ごとの情報を
格納する構造体Tとを含み、前記構造体Dは該当する前
記構造体Tに対し関係付けられていることを特徴とす
る。According to a third aspect of the present invention, in the program analysis apparatus according to the first aspect, the data information includes a structure D that stores information for each data, and a structure T that stores information for each data type. And the structure D is related to the corresponding structure T.
【0022】請求項16の発明は、請求項3の発明を方
法の観点から把握したものであって、請求項14記載の
プログラム解析方法において、前記データ情報は、デー
タごとの情報を格納する構造体Dと、データの型ごとの
情報を格納する構造体Tとを含み、前記構造体Dは該当
する前記構造体Tに対し、関連づけられていることを特
徴とする。The invention of claim 16 is obtained by grasping the invention of claim 3 from the viewpoint of a method. In the program analysis method of claim 14, the data information is a structure for storing information for each data. The structure D includes a body D and a structure T that stores information for each data type, and the structure D is associated with the corresponding structure T.
【0023】また、請求項3,16の発明では、データ
の型ごとの情報がデータごとの情報とは異別の構造体T
に格納されているので、同じ型のデータが複数存在する
場合でもメモリ効率が向上する。また、構造体Dと構造
体Tはポインタで接続されているので、データ検索も容
易である。Further, in the invention of claims 3 and 16, the information for each data type is different from the information for each data structure T.
Since it is stored in, the memory efficiency is improved even when there are multiple data of the same type. Further, since the structure D and the structure T are connected by the pointer, data retrieval is easy.
【0024】請求項4の発明は、請求項1記載のプログ
ラム解析装置において、前記関連情報抽出手段は、前記
関連の種別を抽出するように構成されたことを特徴とす
る。The invention according to claim 4 is the program analyzing apparatus according to claim 1, wherein the related information extracting means is configured to extract the type of the relationship.
【0025】請求項17の発明は、請求項4の発明を方
法の観点から把握したものであって、請求項14記載の
プログラム解析方法において、前記関連抽出ステップ
は、前記関連の種別を抽出することを特徴とする。The invention of claim 17 is the invention of claim 4 grasped from the viewpoint of a method, and in the program analysis method of claim 14, the relation extracting step extracts the type of the relation. It is characterized by
【0026】また、請求項4,17の発明では、データ
間の関連の存在のみならず、関連の種別も抽出される。
このため、データ間の関連をより具体的に理解すること
を通じて、ソースコードの内容の把握が容易になる。Further, in the inventions of claims 4 and 17, not only the existence of the relation between the data but also the type of the relation is extracted.
Therefore, it becomes easier to understand the contents of the source code by more specifically understanding the relation between the data.
【0027】請求項1記載のプログラム解析装置又は請
求項14記載のプログラム解析方法において、前記デー
タ情報は、データごとの情報を格納する構造体Dと、デ
ータの型ごとの情報を格納する構造体Tとを含み、前記
構造体Dは該当する前記構造体Tに対し、関連づけら
れ、関連情報は、位置ごとの関連のIDを格納する構造
体R1と、関連ごとの具体的情報を格納する構造体R2
とを含み、前記構造体R1は該当する前記構造体R2に
対し、関連づけられ、各構造体R2は関連を有する各デ
ータの前記構造体Dにポインタで接続されている、とい
う構成をとってもよい。In the program analysis device according to claim 1 or the program analysis method according to claim 14, the data information includes a structure D that stores information for each data and a structure D that stores information for each data type. The structure D is associated with the corresponding structure T, and the related information includes a structure R1 that stores an ID of a relationship for each position and a structure that stores specific information for each relationship. Body R2
And the structure R1 is associated with the corresponding structure R2, and each structure R2 is connected to the structure D of each related data by a pointer.
【0028】このようにすれば、関連ごとの情報が位置
ごとの情報とは異別の構造体R2に格納されているの
で、同じ関連が複数の位置に存在する場合でもメモリ効
率が向上する。また、構造体R1と構造体R2、構造体
R2と構造体Dはそれぞれポインタで接続されているの
で、データ検索も容易である。In this way, since the information for each association is stored in the structure R2 different from the information for each location, the memory efficiency is improved even when the same association exists in a plurality of locations. Further, since the structure R1 and the structure R2 are connected by the pointer and the structure R2 and the structure D are connected by the pointer, data retrieval is also easy.
【0029】また、請求項1記載のプログラム解析装置
又は請求項14記載のプログラム解析方法において、前
記構造体R1は、位置ごとの各関連を有するデータの集
合のIDを格納し、当該集合に含まれるデータのIDは
構造体Cに格納され、前記構造体R1は該当する前記構
造体Cにポインタで接続されている、という構成をとっ
てもよい。Further, in the program analysis device according to claim 1 or the program analysis method according to claim 14, the structure R1 stores an ID of a set of data having each relation for each position and is included in the set. The ID of the data to be stored may be stored in the structure C, and the structure R1 may be connected to the corresponding structure C by a pointer.
【0030】このようにすれば、位置ごとの各関連を有
する集合のデータのIDが構造体Cに格納されるので、
各種情報の検索が容易になる。By doing so, since the ID of the data of the set having each relation for each position is stored in the structure C,
Various information can be searched easily.
【0031】請求項5の発明は、請求項1記載のプログ
ラム解析装置において、前記ソースコード、前記データ
情報及び前記関連情報に基づいて、前記ソースコード中
の所定の処理に関する関連情報を、処理情報として抽出
する処理情報抽出手段を有することを特徴とする。According to a fifth aspect of the present invention, in the program analysis device according to the first aspect, based on the source code, the data information, and the related information, the related information regarding a predetermined process in the source code is processed information. It is characterized by having a processing information extracting means for extracting as.
【0032】請求項18の発明は、請求項5の発明を方
法の観点から把握したものであって、請求項14記載の
プログラム解析方法において、前記ソースコード、前記
データ情報及び前記関連情報に基づいて、前記ソースコ
ード中の所定の処理に関する関連情報を、処理情報とし
て抽出する処理情報抽出ステップを含むことを特徴とす
る。The invention of claim 18 is obtained by grasping the invention of claim 5 from the viewpoint of a method, and in the program analysis method of claim 14, based on the source code, the data information and the related information. And a process information extracting step of extracting, as process information, related information relating to a predetermined process in the source code.
【0033】請求項5,18の発明では、前記ソースコ
ード、データ情報及び前記関連情報に基づいて、ソース
コード中の各処理に関わる各関連情報が、当該処理を表
す情報である処理情報として抽出される。このため、ソ
ースコードに含まれる各処理を、データ間の関連が、当
該処理前後でどの様に変化するかによって把握すること
ができ、ソースコードの内容の把握が容易になる。In the inventions of claims 5 and 18, based on the source code, the data information and the related information, each related information related to each processing in the source code is extracted as processing information which is information representing the processing. To be done. Therefore, each process included in the source code can be grasped by how the relation between the data changes before and after the process, and the contents of the source code can be grasped easily.
【0034】請求項6の発明は、請求項5記載のプログ
ラム解析装置において、前記処理情報抽出手段は、前記
ソースコードに基づいて行われるべき処理について、当
該処理前の前記関連情報及び当該処理後の前記関連情報
の組を抽出するように構成されたことを特徴とする。According to a sixth aspect of the present invention, in the program analysis apparatus according to the fifth aspect, the processing information extracting means, regarding the processing to be performed based on the source code, the related information before the processing and the related information. Is configured to extract the set of related information of
【0035】請求項19の発明は、請求項6の発明を方
法の観点から把握したものであって、請求項18記載の
プログラム解析方法において、前記処理情報抽出ステッ
プは、前記ソースコードに基づいて行われるべき処理に
ついて、当該処理前の前記関連情報及び当該処理後の前
記関連情報の組を抽出することを特徴とする。The invention of claim 19 is the invention of claim 6 grasped from the viewpoint of a method, and in the program analysis method of claim 18, the processing information extracting step is based on the source code. With respect to the processing to be performed, a set of the related information before the processing and the related information after the processing is extracted.
【0036】また、請求項6,19の発明では、各処理
に係る前記処理情報として、当該処理前の前記関連情報
及び当該処理後の前記関連情報の組が抽出される。この
ため、処理前後での関連情報の相違のみならず、処理前
と処理後それぞれの関連情報自体についても検討・理解
・処理が容易になる。Further, in the inventions of claims 6 and 19, a set of the related information before the processing and the related information after the processing is extracted as the processing information related to each processing. Therefore, not only the related information before and after the processing but also the related information before and after the processing can be easily examined, understood, and processed.
【0037】請求項7の発明は、請求項6記載のプログ
ラム解析装置において、前記処理情報抽出手段は、前記
処理情報の抽出に際し、前記関連情報を辿ることにより
得られるデータ間の整合性を検出する整合性検出手段
と、この手段により検出された整合性に基づいて、前記
関連情報を修正する修正手段を有することを特徴とす
る。According to a seventh aspect of the present invention, in the program analysis apparatus according to the sixth aspect, the processing information extracting means detects consistency between data obtained by tracing the related information when extracting the processing information. And a correction means for correcting the related information based on the consistency detected by this means.
【0038】請求項20の発明は、請求項7の発明を方
法の観点から把握したものであって、請求項18記載の
プログラム解析方法において、前記処理情報抽出ステッ
プは、前記処理情報の抽出に際し、前記関連情報を辿る
ことにより得られるデータ間の整合性を検出する整合性
検出ステップと、この手段により検出された整合性に基
づいて、前記関連情報を修正する修正ステップを含むこ
とを特徴とする。The invention of claim 20 is obtained by grasping the invention of claim 7 from the viewpoint of a method, and in the program analysis method of claim 18, the processing information extracting step is performed when the processing information is extracted. , A consistency detecting step of detecting consistency between data obtained by tracing the related information, and a correcting step of correcting the related information based on the consistency detected by the means. To do.
【0039】また、請求項7,20の発明では、ポイン
タを介する間接的関係も前記関連情報に反映されるの
で、関連情報の正確さが向上する。Further, in the inventions of claims 7 and 20, since the indirect relationship via the pointer is also reflected in the related information, the accuracy of the related information is improved.
【0040】請求項5記載のプログラム解析装置又は請
求項18記載のプログラム解析方法において、前記デー
タ情報は、データごとの情報を格納する構造体Dと、デ
ータの型ごとの情報を格納する構造体Tとを含み、前記
構造体Dは該当する前記構造体Tに対し、関連づけら
れ、関連情報は、位置ごとの関連のIDを格納する構造
体R1と、関連ごとの具体的情報を格納する構造体R2
とを含み、前記構造体R1は該当する前記構造体R2に
対し、関連づけられ、各構造体R2は関連を有する各デ
ータの前記構造体Dに対し、関連づけられ、前記処理情
報は、実行文ごとに処理前及び処理後の関連情報の各位
置IDを格納する構造体Pを有し、各構造体Pは該当す
る構造体R1にポインタで接続されている、という構成
をとってもよい。In the program analysis device according to claim 5 or the program analysis method according to claim 18, the data information includes a structure D for storing information for each data and a structure for storing information for each data type. The structure D is associated with the corresponding structure T, and the related information includes a structure R1 that stores an ID of a relationship for each position and a structure that stores specific information for each relationship. Body R2
And the structure R1 is associated with the corresponding structure R2, each structure R2 is associated with the structure D of each related data, and the processing information is for each execution statement. May have a structure P that stores each position ID of the related information before and after processing, and each structure P is connected to the corresponding structure R1 by a pointer.
【0041】このようにすれば、実行文ごとの処理前後
の位置IDが構造体Pに格納されているので、各構造体
Pは該当する構造体R1にポインタで接続されているの
で、データ検索も容易である。In this way, since the position IDs before and after the processing for each execution statement are stored in the structure P, each structure P is connected to the corresponding structure R1 by the pointer, so that the data retrieval is performed. Is also easy.
【0042】請求項8の発明は、請求項1又は5記載の
プログラム解析装置において、前記抽出の範囲を指定す
る解析範囲指定手段を有することを特徴とする。The invention according to claim 8 is the program analyzing apparatus according to claim 1 or 5, characterized by further comprising an analysis range designating means for designating a range of the extraction.
【0043】請求項21の発明は、請求項8の発明を方
法の観点から把握したものであって、請求項14又は1
8記載のプログラム解析方法において、前記抽出の範囲
を指定する解析範囲指定ステップを含むことを特徴とす
る。The invention of claim 21 comprehends the invention of claim 8 from the viewpoint of a method, and claims 14 or 1
8. The program analysis method according to 8, further comprising an analysis range designating step of designating the extraction range.
【0044】請求項8,21記載の発明では、情報抽出
の対象とする範囲がソースコード全体ではなく必要な一
部に限定できるので、処理が効率化される。In the invention described in claims 8 and 21, the range to be subjected to the information extraction can be limited to a necessary part instead of the entire source code, so that the processing efficiency is improved.
【0045】請求項9の発明は、請求項1又は5記載の
プログラム解析装置において、出力する情報の範囲を指
定する出力範囲指定手段と、抽出された前記各情報から
前記指定された範囲に対応する情報を選択する選択手段
を備えたことを特徴とする。According to a ninth aspect of the present invention, in the program analysis apparatus according to the first or fifth aspect, the output range designation means for designating a range of information to be output and the designated range from each of the extracted information. It is characterized by comprising a selecting means for selecting information to be stored.
【0046】請求項22の発明は、請求項9の発明を方
法の観点から把握したものであって、請求項14又は1
8記載のプログラム解析方法において、出力する情報の
範囲を指定する出力範囲指定ステップと、抽出された前
記各情報から前記指定された範囲に対応する情報を選択
する選択ステップを備えたことを特徴とする。The invention of claim 22 comprehends the invention of claim 9 from the viewpoint of a method, and claims 14 or 1
8. The program analysis method according to 8, further comprising an output range specifying step for specifying a range of information to be output, and a selecting step for selecting information corresponding to the specified range from each of the extracted information. To do.
【0047】請求項9,22の発明では、出力する情報
の範囲をソースコード全体ではなく、必要な一部に限定
できるので、情報の理解が容易になる。According to the ninth and twenty-second aspects of the present invention, the range of the information to be output can be limited to a necessary part instead of the entire source code, so that the information can be easily understood.
【0048】請求項10の発明は、請求項9記載のプロ
グラム解析装置において、前記ソースコード中の反復構
造を検出する第1の検出手段を有し、前記選択手段は、
検出された反復構造に係る部分については、反復複数回
及び1回以下に係る処理に関する情報を選択するように
構成されたことを特徴とする。According to a tenth aspect of the present invention, in the program analyzing apparatus according to the ninth aspect, there is provided a first detecting means for detecting a repetitive structure in the source code, and the selecting means comprises:
With respect to the part related to the detected repetitive structure, it is characterized in that it is configured to select the information regarding the processing related to the plurality of times of repetition and one or less times.
【0049】請求項23の発明は、請求項10の発明を
方法の観点から把握したものであって、請求項22記載
のプログラム解析方法において、前記ソースコード中の
反復構造を検出する第1の検出ステップを有し、前記選
択ステップは、検出された反復構造に係る部分について
は、反復複数回及び1回以下に係る処理に関する情報を
選択することを特徴とする。The invention of claim 23 is obtained by grasping the invention of claim 10 from the viewpoint of a method, and in the program analysis method of claim 22, the first structure for detecting an iterative structure in the source code. The method further includes a detection step, and the selection step is characterized by selecting information regarding a process related to a plurality of times of repetition and one or less times with respect to a portion related to the detected repetitive structure.
【0050】請求項10,23の発明では、反復構造に
ついて必要十分な反復回数に係る処理に関する情報が出
力されるので、解析が効率化される。According to the tenth and twenty-third aspects of the present invention, the information regarding the processing relating to the necessary and sufficient number of iterations of the iterative structure is output, so that the analysis is made efficient.
【0051】請求項11の発明は、請求項9記載のプロ
グラム解析装置において、前記ソースコード中の選択構
造を検出する第2の検出手段を有し、前記選択手段は、
検出された選択構造に係る部分については、選択の条件
の各判断結果に対応する各処理に関する情報を選択する
ように構成されたことを特徴とする。The eleventh aspect of the invention is the program analyzing apparatus according to the ninth aspect, further comprising second detecting means for detecting a selection structure in the source code, wherein the selecting means comprises:
With respect to the detected part related to the selection structure, it is characterized in that the information about each process corresponding to each judgment result of the selection condition is selected.
【0052】請求項24の発明は、請求項11の発明を
方法の観点から把握したものであって、請求項22記載
のプログラム解析方法において、前記ソースコード中の
選択構造を検出する第2の検出ステップを有し、前記選
択ステップは、検出された選択構造に係る部分について
は、選択の条件の各判断結果に対応する各処理に関する
情報を選択することを特徴とする。A twenty-fourth aspect of the present invention is obtained by grasping the eleventh aspect of the invention from the viewpoint of a method, and in the program analysis method of the twenty-second aspect, a second structure for detecting a selection structure in the source code is provided. It is characterized in that it has a detecting step, and in the selecting step, for a part related to the detected selection structure, information regarding each process corresponding to each judgment result of the selection condition is selected.
【0053】請求項11,24の発明では、選択構造に
ついて、選択の条件の各判断結果に対応する各処理に関
する情報が出力されるので、選択構造に関する情報の理
解が容易になる。According to the eleventh and twenty-fourth aspects of the present invention, as for the selection structure, the information about each process corresponding to each judgment result of the selection condition is output, so that the information about the selection structure can be easily understood.
【0054】請求項1又は5記載のプログラム解析装置
において、情報の出力の態様を指定する出力範囲指定手
段と、選択された抽出された各情報を指定された態様で
出力する出力手段とを設けてもよい。また、請求項14
又は18記載のプログラム解析方法において、情報の出
力の態様を指定する出力範囲指定ステップと、選択され
た抽出された各情報を指定された態様で出力する出力ス
テップとを含めてもよい。In the program analyzing apparatus according to claim 1 or 5, there is provided an output range designating means for designating an output mode of information and an output means for outputting each selected and extracted information in a designated mode. May be. Claim 14
Alternatively, the program analysis method according to Item 18 may include an output range designating step for designating an output mode of the information and an output step for outputting each selected and extracted information in the designated mode.
【0055】このようにすれば、出力する情報の態様す
なわち詳細度や形式などを自由に指定できるので、目的
にあった出力が容易になる。In this way, the form of the information to be output, that is, the degree of detail, the format, etc., can be freely specified, so that the output suitable for the purpose becomes easy.
【0056】請求項12の発明は、請求項1又は5記載
のプログラム解析装置において、前記ソースコードと、
抽出されたいずれかの前記情報を、同一の表示装置又は
相互に隣接する表示装置に表示するように構成された出
力手段を有することを特徴とする。According to a twelfth aspect of the present invention, in the program analysis device according to the first or fifth aspect, the source code,
It is characterized by having an output means configured to display any one of the extracted information on the same display device or a display device adjacent to each other.
【0057】請求項25の発明は、請求項12の発明を
方法の観点から把握したものであって、請求項14又は
18記載のプログラム解析方法において、前記ソースコ
ードの全部又は一部と、抽出されたいずれかの前記情報
のうち全部又は一部に対応する情報を、同一の表示装置
又は相互に隣接する表示装置に表示する出力ステップを
含むことを特徴とする。The invention of claim 25 is obtained by grasping the invention of claim 12 from the viewpoint of a method, and in the program analysis method according to claim 14 or 18, the whole or a part of the source code and the extraction are extracted. It is characterized by including an output step of displaying information corresponding to all or a part of any one of the above-mentioned generated information on the same display device or a display device adjacent to each other.
【0058】請求項12,25の発明では、例えば解析
結果上で問題点が発見された場合に、当該問題点がソー
スコード上のどの部分に起因するのかを容易に特定でき
る。逆に、ソースコードによる実装が意図したとおりの
結果を生成していることを確認するために、当該実装部
が解析結果上のどの部分に影響しているのかを容易に特
定できる。In the twelfth and twenty-fifth aspects of the invention, for example, when a problem is found in the analysis result, it is possible to easily specify which part of the source code causes the problem. On the contrary, in order to confirm that the implementation by the source code produces the intended result, it is possible to easily specify which part on the analysis result the mounting part affects.
【0059】請求項13の発明は、請求項12記載のプ
ログラム解析装置において、前記出力手段は、前記ソー
スコード又は前記情報の一方の一部が指定された場合
に、当該指定された部分に対応する他方の部分を強調表
示するように構成されたことを特徴とする。According to a thirteenth aspect of the present invention, in the program analysis apparatus according to the twelfth aspect, the output means corresponds to the designated portion when one portion of the source code or the information is designated. It is characterized in that the other part is highlighted.
【0060】請求項26の発明は、請求項13の発明を
方法の観点から把握したものであって、請求項25記載
のプログラム解析方法において、前記出力ステップは、
前記ソースコード又は前記情報の一方の一部が指定され
た場合に、当該指定された部分に対応する他方の部分を
強調表示することを特徴とする。The invention of claim 26 is obtained by grasping the invention of claim 13 from the viewpoint of a method, and in the program analysis method according to claim 25, the output step is:
When a part of one of the source code and the information is designated, the other part corresponding to the designated part is highlighted.
【0061】請求項13,26の発明では、対応する部
分が強調表示されるので、情報の把握が一層容易にな
る。According to the thirteenth and twenty-sixth aspects of the present invention, since the corresponding portion is highlighted, the information can be grasped more easily.
【0062】[0062]
【発明の実施の形態】次に、本発明の実施の形態(以下
「実施形態」という)について図面にしたがって具体的
に説明する。なお、実施形態の各機能は、所定のソフト
ウェアが、周辺機器を含むコンピュータを制御すること
で実現されるが、コンピュータ及びソフトウェアの構成
は種々考えられるので、実施形態の各機能や各処理に対
応する仮想的回路ブロックを想定して説明する。DESCRIPTION OF THE PREFERRED EMBODIMENTS Next, embodiments of the present invention (hereinafter referred to as "embodiments") will be specifically described with reference to the drawings. It should be noted that each function of the embodiment is realized by a predetermined software controlling a computer including peripheral devices. However, since various configurations of the computer and software are conceivable, each function and each process of the embodiment are supported. The description will be made assuming a virtual circuit block to be used.
【0063】(1)第1実施形態の構成 第1実施形態は、請求項1〜9に対応するプログラム解
析装置及びこのプログラム解析装置で実行されるプログ
ラム解析方法(請求項14〜22に対応する)を示すも
ので、その目的は、ソースコードを静的解析によって効
率的に解析し、解析結果によって、処理内容及び入出力
仕様を含むソースコードの内容の理解を容易にするプロ
グラム解析装置及びプログラム解析方法を提供すること
である。また、第1実施形態の他の目的は、処理手順が
容易なプログラム解析装置及びプログラム解析方法を提
供することである。(1) Configuration of the First Embodiment The first embodiment is a program analysis device corresponding to claims 1 to 9 and a program analysis method executed by this program analysis device (corresponding to claims 14 to 22). ), The purpose of which is to efficiently analyze the source code by static analysis and to facilitate understanding of the content of the source code including the processing content and the input / output specifications based on the analysis result. It is to provide an analysis method. Another object of the first embodiment is to provide a program analysis device and a program analysis method whose processing procedure is easy.
【0064】まず、図1は、第1実施形態のプログラム
解析装置の構成を示す機能ブロック図である。この図に
示すように、第1実施形態のプログラム解析装置(以下
「本装置」という)は、コンピュータプログラムのソー
スコードから、当該ソースコードに含まれる各データの
構造を表す情報であるデータ情報を抽出するデータ情報
抽出手段1と、抽出された情報を出力する出力手段2
と、を有する(請求項1)。First, FIG. 1 is a functional block diagram showing the configuration of the program analysis device of the first embodiment. As shown in this figure, the program analysis device of the first embodiment (hereinafter referred to as “this device”) extracts data information, which is information representing the structure of each data included in the source code, from the source code of the computer program. Data information extraction means 1 for extracting and output means 2 for outputting the extracted information
And (claim 1).
【0065】また、本装置は、前記ソースコードの各部
分に位置IDを付加するラベリング手段3と、前記ソー
スコードに当該ソースコードのインクルードファイルを
加入するプリプロセッサ4を有する。The apparatus further comprises labeling means 3 for adding a position ID to each part of the source code, and a preprocessor 4 for adding an include file of the source code to the source code.
【0066】また、本装置は、ソースコードと前記デー
タ情報とに基づいて、ソースコードの各位置ごとに、デ
ータ間に存在する関連を表す情報である関連情報を抽出
する関連情報抽出手段5を有する(請求項1)。The present apparatus further includes the related information extracting means 5 for extracting the related information, which is the information indicating the relationship existing between the data, for each position of the source code based on the source code and the data information. Have (claim 1).
【0067】また、本装置は、前記ソースコード、前記
データ情報及び前記関連情報に基づいて、ソースコード
中の各処理に関わる各関連情報を、当該処理を表す情報
である処理情報として抽出する処理情報抽出手段6を有
する(請求項5)。Further, the present apparatus extracts, based on the source code, the data information and the related information, each related information related to each processing in the source code as processing information which is information representing the processing. The information extraction means 6 is provided (Claim 5).
【0068】また、本装置は、前記抽出の範囲、出力の
範囲及び出力の態様を指定する指定部7(前記解析範囲
指定手段(請求項8)及び前記出力範囲指定手段(請求
項9)に相当するもの)を有する。また、本装置は、抽
出された前記各情報から前記指定された範囲に対応する
情報を選択する選択手段8を有する(請求項9)。な
お、出力手段2は、選択された抽出された各情報を指定
された態様で出力するように構成されている。Further, the present apparatus further comprises a designation unit 7 (the analysis range designation means (claim 8) and the output range designation means (claim 9) for designating the extraction range, the output range and the output mode. Equivalent). Further, the present apparatus has a selection means 8 for selecting information corresponding to the specified range from the extracted respective information (claim 9). The output unit 2 is configured to output each selected and extracted information in a designated manner.
【0069】(2)第1実施形態の作用及び効果 上記のような構成を有する第1実施形態において、コン
ピュータプログラムのソースコードの全部又は一部の解
析と出力は、次のように行われる。ここで、図2は、第
1実施形態の動作手順を示すフローチャートである。す
なわち、まず、解析対象とするソースコードをキーボー
ド入力やファイル読み込みなどで与える(ステップ
1)。(2) Operation and effect of the first embodiment In the first embodiment having the above-mentioned configuration, analysis or output of all or part of the source code of the computer program is performed as follows. Here, FIG. 2 is a flowchart showing the operation procedure of the first embodiment. That is, first, the source code to be analyzed is given by keyboard input or file reading (step 1).
【0070】[プリプロセッシング]そして、C言語の
ように、インクルードファイルを用いる言語のソースコ
ードの場合、プリプロセッサ4が、ソースコードに当該
ソースコードのインクルードファイルを加入する(ステ
ップ2)。より具体的には、一般に実行及びコンパイル
前に行われるべき処理、例えば、コメント行除去、マク
ロ文展開などが行われる。このため、第1実施形態で
は、ユーザがあらかじめこの作業を行っておく必要がな
い。また、処理中にインクルードファイルを参照する手
順が省略できる。例えば、図3のソースコードに図4の
インクルードファイルを加入した結果を図5に示す。[Preprocessing] In the case of a source code of a language using an include file such as C language, the preprocessor 4 adds the include file of the source code to the source code (step 2). More specifically, processing generally executed before execution and compilation, such as comment line removal and macro statement expansion, is performed. Therefore, in the first embodiment, the user does not need to perform this work in advance. Also, the step of referring to the include file during processing can be omitted. For example, FIG. 5 shows the result of adding the include file of FIG. 4 to the source code of FIG.
【0071】但し、プリプロセッサは必ずしも本装置に
組み込む必要はなく、ユーザがあらかじめプリプロセッ
サでインクルードファイルを包含した状態にしてから本
装置にソースコードを与えてもよい。However, the preprocessor does not necessarily have to be incorporated in the device, and the user may give the source code to the device after the include file is included in the preprocessor in advance.
【0072】また、前記ソースコードとともに当該ソー
スコードに現われるデータ、手続きなどを定義する他の
ファイルなど参照する参照手段を備えてもよい(請求項
2)。このようにすれば、C言語のように分割コンパイ
ルをサポートする言語の場合も、処理中に他のファイル
が参照されるので(請求項2、15)、必要な情報をあ
らかじめソースコードに加入しておく手順が省略でき
る。Further, reference means may be provided for referring to the source code and other files defining data, procedures, etc. appearing in the source code (claim 2). By doing this, even in the case of a language that supports separate compilation, such as C, another file is referenced during processing (claims 2 and 15), so that necessary information is added to the source code in advance. It is possible to omit the procedure to save.
【0073】[ラベリングのステップ]次に、ラベリン
グ手段3が、ソースコードの各部分に位置ID(実行文
IDを含む)を付加する(ステップ3)。例えば、図3
のソースコードの実行文に実行文ID("@S"に続く4桁
の番号)を付加し、実行文と実行文の間、最初の実行文
の直前及び最後の実行文の直後に位置ID("@P"に続く
4桁の番号)を付加した結果を図6に示す。なお、ラベ
リングは、インクルードファイルを加入したソースコー
ドとは別個に元のソースコードに対して施してもよい
が、もちろん、インクルードファイルを加入したソース
コードに対して施してもよい。[Labeling Step] Next, the labeling means 3 adds the position ID (including the execution statement ID) to each part of the source code (step 3). For example, FIG.
The position ID is added between the execution statement of the source code of the source code and the execution statement ID (four-digit number following "@S") immediately before the first execution statement and immediately after the last execution statement. The result of adding (four-digit number following "@P") is shown in FIG. Note that the labeling may be performed on the original source code separately from the source code to which the include file is added, but may be of course performed on the source code to which the include file is added.
【0074】このように、第1実施形態では、ソースコ
ードの各部分に位置IDが付加されるので、抽出された
情報の格納・検索・出力などの各処理を位置IDに基づ
いて行うことができ、また、テキスト出力及びテキスト
入力のみをベースに、解析や出力などの処理の対象範囲
を指定することが容易になる。As described above, in the first embodiment, since the position ID is added to each part of the source code, each process such as storing, retrieving and outputting the extracted information can be performed based on the position ID. It is possible to specify the target range of processing such as analysis and output based on only text output and text input.
【0075】[解析範囲指定のステップ]なお、抽出の
対象とする解析範囲は、指定部7によって指定すること
ができる(ステップ4/請求項21)。第1実施形態で
は、各種範囲の指定はソースコードに付された位置ID
を入力することによって行うことができるが、各種範囲
の指定は、マウスなどのポインティングデバイスによっ
て制御されるカーソルによって指し示すなど、他の手法
によって行ってもよい。このように、第1実施形態で
は、情報抽出の対象とする範囲をソースコード全体では
なく必要な一部に限定し、処理を効率化することができ
る(請求項8、21)。[Step of Specifying Analysis Range] The analysis range to be extracted can be specified by the specifying unit 7 (step 4 / claim 21). In the first embodiment, the designation of various ranges is performed by the position ID attached to the source code.
It is possible to specify various ranges by other methods such as pointing by a cursor controlled by a pointing device such as a mouse. As described above, in the first embodiment, the range of the information extraction target is limited to a necessary part instead of the entire source code, and the processing efficiency can be improved (claims 8 and 21).
【0076】[データ抽出のステップ]続いて、まず、
データ情報抽出手段1が、ソースコードから、当該ソー
スコードに含まれる各データの構造を表す情報であるデ
ータ情報を抽出する(ステップ5/請求項14)。これ
は、ソースコード中のデータについてテーブルを獲得す
ることを意味する。この処理は、具体的には、対象言語
のパーザを用いて構文解析を行うことにより、予約語、
その他の識別子の抽出を行うことによって可能となる。
このため、データの理解を通じて、ソースコードの内容
の把握が容易になる。[Data Extraction Step] Next, first,
The data information extracting means 1 extracts data information, which is information representing the structure of each data included in the source code, from the source code (step 5 / claim 14). This means getting a table for the data in the source code. This process is performed by parsing the target language parser,
It becomes possible by extracting other identifiers.
Therefore, it becomes easy to understand the contents of the source code through understanding the data.
【0077】ここで、図7は、本実施形態において抽出
される各情報の一般的格納形式を示す概念図である。す
なわち、この図に示すように、データ情報は、データご
との情報を格納する構造体Dと、データの型ごとの情報
を格納する構造体Tを含み、構造体Dは該当する構造体
Tにポインタで接続されている(請求項3、16)。Here, FIG. 7 is a conceptual diagram showing a general storage format of each information extracted in this embodiment. That is, as shown in this figure, the data information includes a structure D that stores information for each data and a structure T that stores information for each data type, and the structure D corresponds to the corresponding structure T. They are connected by a pointer (claims 3 and 16).
【0078】各「構造体」は固定長又は可変長のデータ
領域である。具体的には、各構造体Dは、検索のための
キーであるデータID、ソースコード中でのデータ名、
当該データの属する型を表す型ID、当該データのポイ
ンタ演算子の多重度であるポインタ多重度を含む。Each “structure” is a fixed-length or variable-length data area. Specifically, each structure D is a data ID that is a key for searching, a data name in the source code,
It includes a type ID indicating the type to which the data belongs and a pointer multiplicity that is the multiplicity of the pointer operator of the data.
【0079】また、構造体Tは、検索のためのキーであ
る型ID、ソースコード中での型名、当該型の定義内容
を表す型定義情報を含む。型定義情報は構成情報であ
り、この構成情報には構造体定義や共用体定義の構成要
素、即ち型名、メンバ名、タグ名が、定義文に記述され
ている順に要素として格納されており、最後の要素の直
後には、例えば、0値がデリミタとして格納されてい
る。またint やcharなどの基本型の場合は構成情報は空
であり、0値だけが格納される。Further, the structure T includes a type ID which is a key for retrieval, a type name in the source code, and type definition information indicating the definition contents of the type. The type definition information is configuration information. The configuration information stores the structure definition and union definition components, that is, the type name, member name, and tag name as elements in the order described in the definition statement. Immediately after the last element, for example, a 0 value is stored as a delimiter. In the case of basic types such as int and char, the configuration information is empty and only 0 value is stored.
【0080】例えば、図5のソースコードからは図8の
データ情報が得られる。この例は、構造体struct List
の型定義情報であり、int 型のメンバdummy とstruct L
ist* 型のメンバnextを構成要素とすることが記録され
ている。For example, the data information of FIG. 8 can be obtained from the source code of FIG. This example shows the structure struct List
Type definition information for the int members dummy and struct L
It is recorded that the ist * type member next is a component.
【0081】このように、第1実施形態では、データの
型ごとの情報がデータごとの情報とは異別の構造体Tに
格納されているので、同じ型のデータが複数存在する場
合でもメモリ効率が向上する。また、構造体Dと構造体
Tはポインタで接続されているので、データ検索も容易
である(請求項3、16)。As described above, in the first embodiment, the information for each data type is stored in the structure T which is different from the information for each data. Efficiency is improved. Further, since the structure D and the structure T are connected by the pointer, data retrieval is easy (claims 3 and 16).
【0082】[関連抽出のステップ]次に、関連情報抽
出手段5が、ソースコードとデータ情報とに基づいて、
ソースコード上の各位置ごとに、データ間に存在する関
連を表す関連情報を抽出する(ステップ6/請求項1
4)。これは、抽出された各データがソースコードのど
こでどの様な関連を持っているかを特定することを意味
する。このため、データ間の関連の理解を通じて、ソー
スコードの内容の把握が容易になる。[Relationship Extracting Step] Next, the related information extracting means 5 determines, based on the source code and the data information.
For each position on the source code, the related information indicating the relationship existing between the data is extracted (step 6 / claim 1).
4). This means identifying where and in the source code each extracted data has a relationship. Therefore, it becomes easy to understand the contents of the source code by understanding the relationship between the data.
【0083】具体的には、ソースコードの各位置ID
(実行文ID)毎に、その位置に記述されている実行文
やデータ定義文がもたらすデータ間の相互関連につい
て、代入関係、等価関係、ポインタ参照などの種別を特
定し、その結果を関連データとして抽出・格納する(請
求項4、17)。例えば、代入文については、データの
型に応じて、代入関係やポインタ参照関係を表すデータ
を生成し、条件比較文については、内容に応じた様々な
等価関係を表すデータを生成する。このような文ごとの
典型的なパターンと、生成されるべきデータ間の相関関
係との対応は、あらかじめ知識ベースなどの形で蓄えて
おく。このように、第1実施形態では、データ間の関連
の存在のみならず、関連の種別も抽出される。このた
め、データ間の関連をより具体的に理解することを通じ
て、ソースコードの内容の把握が容易になる。Specifically, each position ID of the source code
For each (execution statement ID), the type of assignment relationship, equivalence relationship, pointer reference, etc. is specified for the mutual relationship between the data provided by the execution statement or data definition statement described at that position, and the result is specified as the related data. And is stored (claims 4 and 17). For example, for an assignment statement, data representing an assignment relationship or pointer reference relationship is generated according to the type of data, and for a condition comparison statement, data representing various equivalence relationships depending on the content is generated. The correspondence between such a typical pattern for each sentence and the correlation between the data to be generated is stored in advance in the form of a knowledge base. As described above, in the first embodiment, not only the existence of the relation between the data but also the type of the relation is extracted. Therefore, it becomes easier to understand the contents of the source code by more specifically understanding the relation between the data.
【0084】ここで、図7に示すように、関連情報は、
位置ごとの関連のIDを格納する構造体R1と、関連ご
との具体的情報を格納する構造体R2とを含み、前記構
造体R1は該当する構造体R2にポインタで接続され、
各構造体R2は関連を有する各データの構造体Dにポイ
ンタで接続されている。Here, as shown in FIG. 7, the related information is
A structure R1 that stores the ID of the relation for each position and a structure R2 that stores the specific information of each relation, and the structure R1 is connected to the corresponding structure R2 by a pointer,
Each structure R2 is connected to the structure D of each related data by a pointer.
【0085】なお、構造体R1は、ソースコード上での
位置を特定するためのキーである位置ID、当該位置で
の各関連に含まれるデータの集合を特定するためのキー
である集合ID、当該位置での各関連を特定するための
キーであるいくつかの関連IDを含む。また、集合ID
ごとに、当該集合に含まれるいくつかのデータIDを含
む構造体Cが対応して設けられている。このように、第
1実施形態では、位置ごとの各関連を有する集合のデー
タのIDが構造体Cに格納されるので、各種情報の検索
が容易になる。The structure R1 is a position ID which is a key for specifying a position on the source code, and a set ID which is a key for specifying a set of data included in each relation at the position. It contains several relationship IDs that are keys to identify each relationship at that location. Also, the set ID
A structure C including some data IDs included in the set is provided corresponding to each. As described above, in the first embodiment, since the ID of the data of the set having each relation for each position is stored in the structure C, various information can be easily searched.
【0086】また、構造体R2は、検索のためのキーで
ある関連ID、当該関連に関わる各データを特定するた
めの各データIDを含み、要素は、各データの詳細な要
素の指定である。関連の具体的な種別は関連種別によっ
て示される。Further, the structure R2 includes a relation ID which is a key for retrieval and each data ID for specifying each data related to the relation, and the element is a detailed element designation of each data. . The specific type of association is indicated by the association type.
【0087】ここで、図9は、データ情報及び関連情報
の例である。この図に示すデータ情報でデータ名がnil
となっているものは、ポインタで参照されている領域や
代入でダミーとなる右辺値を示す。ポインタで参照され
ている領域は、ソースコード中で具体的なデータ名で直
接記載されることはなく、指し示すポインタが入出力仕
様として前提とされているものである。また、関連情報
で要素がnil となっているものは、関連の対象が要素で
はなくデータIDで示されるデータ自身であることを示
し、関連種別の" →" 、"=="、":="はそれぞれポインタ
参照関連、等価関連、代入関連を示している。Here, FIG. 9 is an example of data information and related information. In the data information shown in this figure, the data name is nil
Indicates the area referenced by the pointer and the right-hand side value that is dummy in the assignment. The area referred to by the pointer is not directly described with a specific data name in the source code, and the pointer to point is premised on the input / output specifications. In addition, if the element in the related information is nil, the related target is not the element but the data itself indicated by the data ID, and the related types "→", "==", ": = "Indicates pointer reference relation, equivalence relation, and assignment relation, respectively.
【0088】すなわち、図9において、位置ID0003の
構造体(R1)1301は集合ID1003と関連ID2002と20
05とを要素として持つ。さらに、集合ID1003の構造体
(C)1302はデータID1101と1102と1104とを要素とし
て持つ。That is, in FIG. 9, the structure (R1) 1301 with the position ID 0003 is the set ID 1003 and the related IDs 2002 and 20.
It has 05 and as an element. Further, the structure (C) 1302 of the set ID 1003 has the data IDs 1101, 1102 and 1104 as elements.
【0089】このような各構造体においては、例えば、
データID1101に対応する構造体(D)1303を参照する
ことによって、データ名がlist、データ型は型ID0001
すなわちstruct List 、多重度1のポインタ型という情
報が得られる。このように、第1実施形態では、関連情
報の構造体R1の集合IDをキーとしてデータ集合の構
造体Cをたどり、さらに、集合の構造体CのデータID
をキーとしてデータ情報の構造体Dの情報を読み出すこ
とにより、特定の関連情報における関係する全てのデー
タの情報が得られる。In each such structure, for example,
By referring to the structure (D) 1303 corresponding to the data ID 1101, the data name is list and the data type is the type ID 0001.
That is, information of struct List and pointer type with multiplicity of 1 is obtained. As described above, in the first embodiment, the structure C of the data set is traced using the set ID of the structure R1 of the related information as a key, and the data ID of the structure C of the set is further used.
By reading the information of the structure D of the data information by using as a key, the information of all the related data in the specific related information can be obtained.
【0090】同様に、例えば、関連ID2005の構造体
(R2)1304から、データID1104、即ちstructList型
のデータ領域のレコードnextにデータID1102、即ちst
ruct List のポインタ型のデータitemの値が代入されて
いる、という関連を知ることができる。Similarly, for example, from the structure (R2) 1304 having the relation ID 2005 to the data ID 1104, that is, the record next of the data area of the structList type, the data ID 1102, that is, st
You can know the relation that the value of pointer type data item of ruct List is assigned.
【0091】このように、第1実施形態では、関連ごと
の情報が位置ごとの情報とは異別の構造体R2に格納さ
れているので、同じ関連が複数の位置に存在する場合で
もメモリ効率が向上する。また、構造体R1と構造体R
2、構造体R2と構造体Dはそれぞれポインタで接続さ
れているので、データ検索も容易である。As described above, in the first embodiment, since the information for each association is stored in the structure R2 different from the information for each location, even if the same association exists in a plurality of locations, the memory efficiency is high. Is improved. Further, the structure R1 and the structure R
2. Since the structure R2 and the structure D are connected to each other by pointers, data retrieval is easy.
【0092】[処理抽出のステップ]さらに、処理情報
抽出手段6が、ソースコード、データ情報及び関連情報
に基づいて、ソースコード中の各処理(各実行文)に関
わる各関連情報を、当該処理を表す情報である処理情報
として抽出する(ステップ7/請求項18)。このた
め、ソースコードに含まれる各処理を、データ間の関連
が、当該処理前後でどの様に変化するかによって把握す
ることができ、ソースコードの内容の把握が容易にな
る。[Process Extraction Step] Further, the process information extracting means 6 processes the relevant information relating to each process (each execution statement) in the source code based on the source code, the data information and the relevant information. Is extracted as processing information that is information indicating (step 7 / claim 18). Therefore, each process included in the source code can be grasped by how the relation between the data changes before and after the process, and the contents of the source code can be grasped easily.
【0093】ここでは、各処理に係る処理情報として、
当該処理前の関連情報及び当該処理後の関連情報の組を
抽出する(請求項6、19)。このため、処理前後での
関連情報の相違のみならず、処理前と処理後それぞれの
関連情報自体についても検討・理解・処理が容易にな
る。但し、処理情報の内容は自由であり、例えば、処理
前後の各関連情報の相違点のみを処理情報として抽出し
てもよい。Here, as the processing information related to each processing,
A set of related information before the processing and related information after the processing is extracted (claims 6 and 19). Therefore, not only the related information before and after the processing but also the related information before and after the processing can be easily examined, understood, and processed. However, the content of the processing information is arbitrary, and for example, only the differences between the related information before and after the processing may be extracted as the processing information.
【0094】処理情報は、図7に示すように、実行文ご
とに処理前及び処理後の関連情報の各位置IDを格納す
る構造体Pを有し、各構造体Pは該当する構造体R1に
ポインタで接続されているので、データ検索も容易であ
る。As shown in FIG. 7, the processing information has a structure P that stores each position ID of the related information before and after the processing for each execution statement, and each structure P has a corresponding structure R1. Since it is connected to the with a pointer, data retrieval is easy.
【0095】なお、構造体Pは、ソースコード中での実
行文に対応した実行文IDと、当該実行文の処理前の関
連情報の位置IDと、処理後の関連情報の位置IDを有
する。また、処理の抽出では、処理情報の抽出にあた
り、ポインタによって間接的に関連しているデータ間の
関係に基づいて関連情報が修正される(請求項7、2
0)。このため、関連情報の正確さが向上する。The structure P has an execution statement ID corresponding to the execution statement in the source code, a position ID of the related information before processing of the execution statement, and a position ID of the related information after processing. Further, in the process extraction, in extracting the process information, the related information is modified based on the relation between the data indirectly related by the pointer (claims 7 and 2).
0). Therefore, the accuracy of the related information is improved.
【0096】すなわち、各実行文の処理で暗に前提とさ
れている関連情報が修正される。例えば、図9では、位
置@P0001においてデータ集合(ID1001)の内容はlist
とitemの二つのポインタ値だけとなっているが、実行文
@S0001(図6)の記述からわかるように、実際には二つ
のポインタは空値ではなく、即ちある領域をポイントし
ている。このため位置@P0001におけるデータ集合は、位
置@P0002と同じであると仮定しなければならない。That is, the related information implicitly premised in the processing of each executable statement is corrected. For example, in FIG. 9, the contents of the data set (ID1001) at position @ P0001 are list
There are only two pointer values of item and item, but the execution statement
As can be seen from the description of @ S0001 (FIG. 6), actually the two pointers are not null values, that is, they point to a certain area. For this reason it must be assumed that the data set at position @ P0001 is the same as position @ P0002.
【0097】また関連ID2005の関連についても、実際
にはポインタlist->nextがポインタitemの指し示す領
域、即ちデータID1103のデータを指し示す事実に基づ
いて修正する必要がある。Further, the relationship of the related ID 2005 also needs to be corrected based on the fact that the pointer list-> next actually points to the area pointed to by the pointer item, that is, the data of the data ID 1103.
【0098】以上のような修正を行った関連情報を図1
0に示す。図9と比較して修正された部分は網掛けされ
ている部分である。この結果、各実行文について処理前
後のデータ相互関連が全て決定される。なお、ここで
は、処理情報として、図11に示すような情報が得られ
る。FIG. 1 shows the related information modified as described above.
0 is shown. The modified portion compared to FIG. 9 is the shaded portion. As a result, all data correlations before and after processing are determined for each execution statement. Here, as the processing information, the information as shown in FIG. 11 is obtained.
【0099】[出力範囲指定のステップ]解析結果の出
力に際しては、指定部7によって、出力の範囲を指定す
ることができ(ステップ8)、選択手段8が、抽出され
た前記各情報から指定された範囲に対応する情報を選択
する(ステップ10/請求項22)。このように、第1
実施形態では、出力する情報の範囲をソースコード全体
ではなく、必要な一部に限定できるので、情報の理解が
容易になる。[Step of Specifying Output Range] When outputting the analysis result, the specifying section 7 can specify the range of output (step 8), and the selecting means 8 is specified from each of the extracted information. The information corresponding to the selected range is selected (step 10 / claim 22). Thus, the first
In the embodiment, the range of information to be output can be limited to a necessary part rather than the entire source code, so that the information can be easily understood.
【0100】ここでは、出力手段として画面表示装置を
用いるものとするが、表示範囲は、例えば、最初と最後
の実行文のラベルで指定してもよいし、画面に表示され
たソースコードからカーソルやマウスで指定してもよ
い。情報の選択(ステップ10)では、指定範囲に関わ
る処理情報と、この処理情報の構造体Pから直接間接に
たどることができるすべての関連情報並びにデータ情報
が出力対象として選択される。Here, the screen display device is used as the output means, but the display range may be specified by, for example, the labels of the first and last executable statements, or the cursor may be selected from the source code displayed on the screen. You can specify it with the or mouse. In the selection of information (step 10), the processing information related to the specified range and all the related information and data information that can be directly and indirectly traced from the structure P of this processing information are selected as output targets.
【0101】[出力態様指定のステップ]また、出力に
際して、指定部7によって、出力の態様を指定できる
(ステップ9)。態様としては、典型的には詳細度や出
力形式が考えられ、例えば、詳細度としては、関連情報
と共にデータの型の内容に関する情報まで表示するか否
かなどが考えられる。また、出力形式としては、例え
ば、テキスト出力のみかグラフィカルな表現かなどが考
えられる。このように、第1実施形態では、出力する情
報の態様すなわち詳細度や出力形式などを自由に指定で
きるので、目的にあった出力が容易になる。[Step of Specifying Output Mode] When outputting, the specifying unit 7 can specify the output mode (step 9). As the aspect, typically, the level of detail and the output format can be considered. For example, as the level of detail, it is possible to consider whether to display the information about the content of the data type together with the related information. As the output format, for example, only text output or graphical expression can be considered. As described above, in the first embodiment, the mode of the information to be output, that is, the degree of detail, the output format, and the like can be freely specified, so that the output suitable for the purpose is facilitated.
【0102】[出力のステップ]そして、出力手段2
が、抽出された各情報を指定された態様で出力する(ス
テップ11)。例えば、実行文@S0001から実行文@S0002
が指定された場合、図11で示される処理情報が指定し
た態様で出力されるので、処理内容を確認することが可
能であり、同時に入出力仕様を確認することが可能にな
る。なお、図12は出力例を、図13は出力例の凡例を
示す。[Output Step] And the output means 2
Outputs the extracted information in a specified manner (step 11). For example, execution statement @ S0001 to execution statement @ S0002
When is designated, the processing information shown in FIG. 11 is output in the designated manner, so that the processing content can be confirmed, and at the same time, the input / output specifications can be confirmed. 12 shows an output example, and FIG. 13 shows a legend of the output example.
【0103】例えば、図12では、表示範囲の表示部1
601には表示範囲が実行文IDで示されている。また
データ関連の表示部1602、1603、1604に
は、位置IDとその位置IDにおけるデータ相互関連が
図示される。なお、ソースコード中に直接記述はされて
いないが、入出力仕様として前提とされているデータに
ついては、点線で表示される。また、図14はデータ名
だけに着目した可視化の例である。For example, in FIG. 12, the display area 1 of the display range is displayed.
In 601 the display range is indicated by the executable sentence ID. Further, in the data-related display units 1602, 1603, 1604, position IDs and data mutual relationships at the position IDs are shown. Data that is not directly described in the source code but is assumed as input / output specifications is displayed by dotted lines. Further, FIG. 14 is an example of visualization focusing only on the data name.
【0104】なお、一旦解析を行った後は、ステップ8
からステップ12までの手順を繰り返すことにより様々
な抽象度や形式で出力結果を確認することができる。ま
た、別のソースコードを解析する場合にはステップ1か
らの処理を改めて行う。After the analysis is once performed, step 8
It is possible to confirm the output result with various degrees of abstraction and formats by repeating the procedure from to step 12. When analyzing another source code, the processing from step 1 is performed again.
【0105】以上のように、第1実施形態によれば、コ
ンピュータプログラムのソースコードに実現されている
処理内容及び入出力仕様を静的な解析によって効率的に
解析し、任意の抽象度で出力することができる。これに
より、ソースコードのインスペクション作業が容易にな
り、ソフトウェアの試験工程に於いては不具合の確認な
どの作業効率の向上を図ることができる。また、保守工
程に於いても、機能追加などに伴う修正作業の効率向上
を図ることができる。As described above, according to the first embodiment, the processing contents and the input / output specifications realized in the source code of the computer program are efficiently analyzed by static analysis and output at an arbitrary degree of abstraction. can do. As a result, the inspection work of the source code becomes easy, and it is possible to improve the work efficiency such as confirmation of defects in the software testing process. Also, in the maintenance process, it is possible to improve the efficiency of the correction work accompanying the addition of functions.
【0106】(3)第2実施形態 次に制御構造を含んだプログラムの解析の例を示す。す
なわち、C言語の様な構造化言語の場合、制御構造は順
次、反復、及び選択であるが、このうち順次に関しては
上記のように解析が可能である。(3) Second Embodiment Next, an example of analysis of a program including a control structure will be shown. That is, in the case of a structured language such as the C language, the control structure is sequential, iterative, and selective, of which the sequential analysis can be performed as described above.
【0107】そこで、次に反復構造の解析について説明
する。すなわち、反復構造の構成要素は、大まかに、反
復のための初期化(例えばカウンタの初期化などであ
り、以下「初期化処理部」という)と、反復の対象とな
る部分(以下「反復対象部」という)に分けられる。な
お、反復対象部には反復を行うための条件を判定する部
分も含まれる。Therefore, the analysis of the repetitive structure will be described below. That is, the components of the iterative structure are roughly the initialization for iteration (for example, initialization of a counter, etc., and hereinafter referred to as “initialization processing unit”), and the part to be iterated (hereinafter “iteration target”). It is divided into parts). It should be noted that the repetition target portion also includes a portion that determines a condition for performing the repetition.
【0108】この場合、ソースコード中の反復構造を検
出する第1の検出手段を設け、選択手段について、検出
された反復構造に係る部分については、反復0回及び2
回に係る処理に関する情報を選択するように構成する
(請求項10、23)。このようにすれば、反復構造に
ついて必要十分な反復回数に係る処理に関する情報が出
力されるので、解析が効率化される。In this case, the first detecting means for detecting the repetitive structure in the source code is provided, and the selecting means has 0 repetitions and 2 repetitions for the portion related to the detected repetitive structure.
It is configured to select the information related to the processing related to the time (claims 10 and 23). In this way, the information regarding the processing relating to the necessary and sufficient number of iterations for the iterative structure is output, which improves the efficiency of the analysis.
【0109】具体的には、まず、C言語においては反復
構造を実現するための構文は複数存在するが、これらは
いずれも上記2つの構成要素を含む点では共通する。そ
こで、ここでは、for 文を含むプログラムを例にとり
(図15)、インクルードファイルは図4と同一とす
る。Specifically, although there are a plurality of syntaxes for realizing the repetitive structure in the C language, they are common in that they each include the above-mentioned two constituent elements. Therefore, here, the program including the for statement is taken as an example (FIG. 15), and the include file is the same as that in FIG.
【0110】反復構造を含むこのプログラムの解析で
は、上記の初期化処理部と反復対象部に対しての解析結
果を準備する。すなわち、反復構造において、一般には
複数の結果が生成され得るが、データ処理の正当性を確
認するためには反復回数0回、及び2回の解析だけに注
目すれば十分である(参考文献:"Detection of Data F
low Anomaly Through Program Instrumentation"、ヒュ
ーストン大学・J.C.Huang 著)。In the analysis of this program including the repetitive structure, the analysis results for the initialization processing section and the repetitive target section are prepared. That is, in the iterative structure, generally, a plurality of results can be generated, but in order to confirm the correctness of the data processing, it is sufficient to pay attention only to the analysis of 0 times and the analysis of 2 times (Reference: "Detection of Data F
low Anomaly Through Program Instrumentation ", University of Houston, JCHuang).
【0111】この場合、反復構造を含む場合の出力範囲
は第1の検出手段や選択手段によって判断してもよい
が、反復回数を指示するように途中の実行文IDを指定
することにより行うこともできる。いずれの場合も、例
えば、反復回数0回については、@P1012、@S1012、及び
@P1013の順に選択される結果、図16の結果が得られ
る。また、反復回数2回については、@P1012、@S1012、
@S1012、@S1012、及び@P1013の順に選択される結果、図
17の結果が得られる。In this case, the output range in the case of including the repeating structure may be judged by the first detecting means or the selecting means, but it is performed by designating the execution statement ID in the middle so as to instruct the number of repetitions. You can also In either case, for example, @ P1012, @ S1012, and
As a result of being selected in the order of @ P1013, the result of FIG. 16 is obtained. Also, regarding the number of repetitions twice, @ P1012, @ S1012,
As a result of selection in the order of @ S1012, @ S1012, and @ P1013, the result of FIG. 17 is obtained.
【0112】なお、同一箇所の反復実行の有無に応じた
情報が得られれば十分であるから、反復回数は0回及び
2回には限定されず、複数回及び1回以下からなる所望
の反復回数の組み合わせを対象とすればよい。すなわ
ち、特に反復構造からなるソースコードにおいて、一度
も反復構造内を実行しない場合のデータの関連性及び、
複数回実行した場合のデータの関連性を比較することに
よって、よりデータの関連性が明確になることが知られ
ている。Since it is sufficient to obtain information according to the presence / absence of repeated execution of the same place, the number of iterations is not limited to 0 and 2 but a desired number of iterations of 1 or less. A combination of times may be targeted. In other words, especially in the source code that consists of an iterative structure, the relevance of the data when it never executes in the iterative structure,
It is known that the data relevance becomes clearer by comparing the data relevance when executed multiple times.
【0113】(4)第3実施形態 次に、選択構造の解析について説明する。選択構造の構
成要素は、大まかに、選択の条件を判定する部分(以下
「選択条件判定部」という)と、選択によって実際に実
行される部分(以下「選択対象部」という)に分けられ
る。この場合、選択対象部は選択条件判定部における選
択肢の数だけ存在することになる。(4) Third Embodiment Next, the analysis of the selection structure will be described. The components of the selection structure are roughly divided into a part that determines a selection condition (hereinafter referred to as a "selection condition determination part") and a part that is actually executed by selection (hereinafter referred to as a "selection target part"). In this case, there are as many selection target parts as there are options in the selection condition judging part.
【0114】この場合、ソースコード中の選択構造を検
出する第2の検出手段を設け、選択手段について、検出
された選択構造に係る部分については、選択の条件の各
判断結果に対応する各処理に関する情報を選択するよう
に構成する(請求項11、24)。このようにすれば、
選択構造について、選択の条件の各判断結果に対応する
各処理に関する情報が出力されるので、選択構造に関す
る情報の理解が容易になる。In this case, the second detecting means for detecting the selection structure in the source code is provided, and with respect to the part relating to the detected selection structure in the selection means, each processing corresponding to each judgment result of the selection condition. It is configured to select information regarding (claims 11 and 24). If you do this,
With respect to the selection structure, information about each process corresponding to each determination result of the selection condition is output, so that the information about the selection structure can be easily understood.
【0115】具体的には、まず、C言語においては選択
構造を実現するための構文も複数存在するが、いずれも
上記2種類の構成要素を含む点では共通する。ここで
は、if文を含んだプログラムを例にとり(図18)、イ
ンクルードファイルは図4と同一とする。Specifically, although there are a plurality of syntaxes for realizing the selection structure in the C language, they are common in that they include the above-mentioned two types of constituent elements. Here, the program including the if statement is taken as an example (FIG. 18), and the include file is the same as that in FIG.
【0116】選択構造を含むこのプログラムの解析で
は、上記の選択条件判定部と選択対象部に対しての解析
結果を準備する。この場合、選択構造を含む場合の表示
範囲の判断は、第2の検出手段及び選択手段によって行
ってもよいし、解析の対象とする選択対象部を指示する
ように途中の実行文IDを指定してもよい。いずれの場
合も、例えば、条件が真の時については、@P1023、@S10
24、及び@P1027の順に選択される結果、図19の結果が
得られる。また、偽の時については、@P1023、@S1025、
及び@P1027の順に選択される結果、図20の結果が得ら
れる。In the analysis of this program including the selection structure, the analysis results for the selection condition judging section and the selection target section are prepared. In this case, the display range may be judged when the selection structure is included, or the execution sentence ID in the middle may be designated so as to instruct the selection target part to be analyzed. You may. In either case, for example, @ P1023, @ S10 when the condition is true
As a result of selecting 24 and @ P1027 in this order, the result of FIG. 19 is obtained. For false times, @ P1023, @ S1025,
As a result of selecting in the order of and @ P1027, the result of FIG. 20 is obtained.
【0117】(5)第4実施形態 与えられたソースコードと、このソースコードに基づく
解析の結果を、対応付けて表示すれば、両者の対応関係
の理解が一層容易になる(請求項12、25)。(5) Fourth Embodiment If the given source code and the analysis result based on this source code are displayed in association with each other, it becomes easier to understand the correspondence relationship between them (claim 12, 25).
【0118】具体的には、ソースコードと解析結果を、
同一の表示装置又は隣接する表示装置に同時に表示する
(請求項12、25)。ユーザは、マウスやキーボード
などの入力装置を用いて、ソースコードの所望の文又は
範囲を指定する。ソースコードに含まれる各文は、冗長
な文を除いて、最終的な出力結果に含まれる特定のデー
タ間関連の生成に対応しているはずである。そこで、指
定された範囲に対応する部分の解析結果を、反転などで
強調表示する(請求項13、26)。Specifically, the source code and the analysis result are
The images are simultaneously displayed on the same display device or an adjacent display device (claims 12 and 25). The user designates a desired sentence or range of the source code by using an input device such as a mouse or a keyboard. Each statement included in the source code should correspond to the generation of a specific data relation included in the final output result, except for redundant statements. Therefore, the analysis result of the portion corresponding to the designated range is highlighted by inversion or the like (claims 13 and 26).
【0119】逆に、解析結果のうち所望のデータ間関連
を指定してもよい。各データ間関連は、必ずソースコー
ドの特定の文、あるいは文の組によって生成されている
はずである。そこで、指定されたデータ間関連に対応す
るソースコード上の文、あるいは文の組が、反転などで
強調表示される(請求項13、26)。On the contrary, a desired data relation among the analysis results may be designated. Each data relation must be generated by a specific sentence or set of sentences in the source code. Therefore, the sentence on the source code or the set of sentences corresponding to the specified data relation is highlighted by inversion or the like (claims 13 and 26).
【0120】図21は、第4実施形態における表示例を
示す図である。この表示例において、ソースコードの文
101と、破線矢印で表される関連102は、相互に対
応しており、いずれを指定しても他方が強調表示され
る。FIG. 21 is a diagram showing a display example in the fourth embodiment. In this display example, the source code sentence 101 and the relation 102 represented by a dashed arrow correspond to each other, and the other one is highlighted regardless of which one is designated.
【0121】これにより、例えば解析結果上で問題点が
発見された場合に、当該問題点がソースコード上のどの
部分に起因するのかを容易に特定できる。逆に、ソース
コードによる実装が意図したとおりの結果を生成してい
ることを確認するために、当該実装部が解析結果上のど
の部分に影響しているのかを容易に特定できる。Thus, for example, when a problem is found in the analysis result, it is possible to easily specify which part of the source code causes the problem. On the contrary, in order to confirm that the implementation by the source code produces the intended result, it is possible to easily specify which part on the analysis result the mounting part affects.
【0122】(6)他の実施形態 本発明は、上記各実施形態に限定されるものではなく、
実施態様の変更は自由であるから、次に例示するような
他の実施形態をも包含するものである。例えば、解析対
象とするプログラミング言語はC言語には限定されず、
各種構造化言語を含む他の言語を対象とすることができ
る。もちろん、非構造的な構文、例えばgoto文などを含
むような場合でも、実行文IDを明示的に指示すること
によって解析結果を得ることが可能である。(6) Other Embodiments The present invention is not limited to the above embodiments,
Since the embodiment can be freely changed, the embodiment includes other embodiments as illustrated below. For example, the programming language to be analyzed is not limited to C language,
Other languages, including various structured languages, can be targeted. Of course, even when an unstructured syntax such as a goto statement is included, the analysis result can be obtained by explicitly instructing the executable statement ID.
【0123】また、データの具体的な形式は上記各実施
形態に示したものには限定されず、自由に定めることが
できる。また、出力対象指定手段、第1の検出手段、第
2の検出手段、出力範囲指定手段、選択手段、解析範囲
指定手段、処理情報抽出手段、関連情報抽出手段、参照
手段、プリプロセッサなどは必ずしも設ける必要はな
い。Further, the specific format of the data is not limited to that shown in each of the above embodiments, and can be freely determined. Further, the output target designation means, the first detection means, the second detection means, the output range designation means, the selection means, the analysis range designation means, the processing information extraction means, the related information extraction means, the reference means, the preprocessor and the like are necessarily provided. No need.
【0124】制御構造の任意の組合せ(例えば、第2実
施形態の反復構造、及び第3実施形態の選択構造の任意
の組合せによるネスト)についても、対象とすることが
可能である。Any combination of control structures (for example, a nest formed by any combination of the repeating structure of the second embodiment and the selection structure of the third embodiment) can also be a target.
【0125】また、本発明は、一般的にはコンピュータ
のプログラムによって実現されるが、このプログラムを
記録したフロッピーでディスクなどの記録媒体を、独立
して取引することも本発明の一態様である。Although the present invention is generally realized by a computer program, it is also an aspect of the present invention to independently trade a recording medium such as a disk with a floppy disk in which this program is recorded. .
【0126】[0126]
【発明の効果】以上説明したように、本発明によれば、
ソースコードを静的解析によって効率的に解析し、解析
結果によって、処理内容及び入出力仕様を含むソースコ
ードの内容の理解を容易にすることができる。As described above, according to the present invention,
The source code can be efficiently analyzed by static analysis, and the analysis result can facilitate understanding of the content of the source code including the processing content and the input / output specifications.
【図1】本発明の第1実施形態のプログラム解析装置の
構成を示すブロック図。FIG. 1 is a block diagram showing a configuration of a program analysis device according to a first embodiment of the present invention.
【図2】本発明の第1実施形態のプログラム解析装置の
動作手順を示すフローチャート。FIG. 2 is a flowchart showing an operation procedure of the program analysis device according to the first embodiment of the present invention.
【図3】本発明の第1実施形態におけるC言語プログラ
ムのソースコードの例を示す図。FIG. 3 is a diagram showing an example of a source code of a C language program according to the first embodiment of the present invention.
【図4】本発明の第1実施形態におけるC言語プログラ
ムのインクルードファイルの例を示す図。FIG. 4 is a diagram showing an example of an include file of a C language program according to the first embodiment of the present invention.
【図5】本発明の第1実施形態において、図3のソース
コードに図4のインクルードファイルを加入した結果た
るソースコードの例を示す図。5 is a diagram showing an example of source code obtained as a result of adding the include file of FIG. 4 to the source code of FIG. 3 in the first embodiment of the present invention.
【図6】本発明の第1実施形態において図3のソースコ
ードにラベリングを行った結果たるソースコードの例を
示す図。FIG. 6 is a diagram showing an example of a source code obtained as a result of labeling the source code of FIG. 3 in the first embodiment of the present invention.
【図7】本発明の第1実施形態において抽出される各情
報の一般的格納形式を示す図。FIG. 7 is a diagram showing a general storage format of each piece of information extracted in the first embodiment of the present invention.
【図8】本発明の第1実施形態におけるデータ情報の例
を示す図。FIG. 8 is a diagram showing an example of data information according to the first embodiment of the present invention.
【図9】本発明の第1実施形態におけるデータ情報及び
関連情報の例を示す図。FIG. 9 is a diagram showing an example of data information and related information according to the first embodiment of the present invention.
【図10】本発明の第1実施形態において、図9の関連
情報に修正を加えた結果たる関連情報の例を示す図。FIG. 10 is a diagram showing an example of related information as a result of modifying the related information of FIG. 9 in the first embodiment of the present invention.
【図11】本発明の第1実施形態における処理情報の例
を示す図。FIG. 11 is a diagram showing an example of processing information according to the first embodiment of the present invention.
【図12】本発明の第1実施形態における出力の例を示
す図。FIG. 12 is a diagram showing an example of output in the first embodiment of the present invention.
【図13】本発明の第1実施形態において、図12の出
力例の凡例を示す図。FIG. 13 is a diagram showing a legend of the output example of FIG. 12 in the first embodiment of the present invention.
【図14】本発明の第1実施形態における出力の他の例
を示す図。FIG. 14 is a diagram showing another example of output in the first embodiment of the present invention.
【図15】本発明の第2実施形態における反復構造を含
むプログラムのソースコードの例を示す図。FIG. 15 is a diagram showing an example of source code of a program including a repetitive structure according to the second embodiment of the present invention.
【図16】本発明の第2実施形態において、図15のソ
ースコードの反復0回の処理に係る出力の例を示す図。FIG. 16 is a diagram showing an example of an output related to the process of repeating the source code of FIG. 15 0 times in the second embodiment of the invention.
【図17】本発明の第2実施形態において、図15のソ
ースコードの反復2回の処理に係る出力の例を示す図。FIG. 17 is a diagram showing an example of an output related to a process of repeating the source code of FIG. 15 twice in the second embodiment of the present invention.
【図18】本発明の第3実施形態における選択構造を含
むプログラムのソースコードの例を示す図。FIG. 18 is a diagram showing an example of source code of a program including a selection structure according to the third embodiment of the present invention.
【図19】本発明の第3実施形態において、図18のソ
ースコードの条件が真の場合の処理に係る出力の例を示
す図。FIG. 19 is a diagram showing an example of output related to processing when the condition of the source code of FIG. 18 is true in the third embodiment of the invention.
【図20】本発明の第3実施形態において、図18のソ
ースコードの条件が偽の場合の処理に係る出力の例を示
す図。FIG. 20 is a diagram showing an example of output related to processing when the condition of the source code of FIG. 18 is false in the third embodiment of the present invention.
【図21】本発明の第4実施形態における表示例を示す
図。FIG. 21 is a view showing a display example according to the fourth embodiment of the present invention.
1…データ抽出手段 2…出力手段 3…ラベリング手段 4…プリプロセッサ 5…関連抽出手段 6…処理抽出手段 7…指定部 8…選択手段 DESCRIPTION OF SYMBOLS 1 ... Data extraction means 2 ... Output means 3 ... Labeling means 4 ... Preprocessor 5 ... Related extraction means 6 ... Process extraction means 7 ... Designation part 8 ... Selection means
Claims (26)
プログラムのソースコードを解析するプログラム解析装
置において、 前記ソースコードから、前記各データの構造を表す情報
であるデータ情報を抽出するデータ情報抽出手段と、 前記ソースコードと前記データ情報とに基づいて、ソー
スコードの所定の位置について、データ間の関連情報を
抽出する関連情報抽出手段と、 を有することを特徴とするプログラム解析装置。1. A program analysis device for analyzing a source code of a computer program representing a process for data, comprising: A related information extracting unit that extracts related information between data at a predetermined position of the source code based on the source code and the data information.
ルを参照する参照手段を備えたことを特徴とする請求項
1記載のプログラム解析装置。2. The program analysis apparatus according to claim 1, further comprising a reference unit that refers to another file related to the source code.
格納する構造体Dと、データの型ごとの情報を格納する
構造体Tとを含み、 前記構造体Dは該当する前記構造体Tに対し関係付けら
れていることを特徴とする請求項1記載のプログラム解
析装置。3. The data information includes a structure D that stores information for each data and a structure T that stores information for each data type, and the structure D corresponds to the corresponding structure T. The program analysis apparatus according to claim 1, wherein the program analysis apparatus is associated with each other.
別を抽出するように構成されたことを特徴とする請求項
1記載のプログラム解析装置。4. The program analyzing apparatus according to claim 1, wherein the related information extracting means is configured to extract the type of the relationship.
前記関連情報に基づいて、前記ソースコード中の所定の
処理に関する関連情報を、処理情報として抽出する処理
情報抽出手段を有することを特徴とする請求項1記載の
プログラム解析装置。5. A processing information extracting means for extracting, as processing information, related information relating to a predetermined processing in the source code, based on the source code, the data information and the related information. Item 1. The program analysis device according to item 1.
ードに基づいて行われるべき処理について、当該処理前
の前記関連情報及び当該処理後の前記関連情報の組を抽
出するように構成されたことを特徴とする請求項5記載
のプログラム解析装置。6. The processing information extracting means is configured to extract a set of the related information before the processing and the related information after the processing for processing to be performed based on the source code. The program analysis device according to claim 5, wherein
の抽出に際し、前記関連情報を辿ることにより得られる
データ間の整合性を検出する整合性検出手段と、 この手段により検出された整合性に基づいて、前記関連
情報を修正する修正手段を有することを特徴とする請求
項6記載のプログラム解析装置。7. The processing information extracting means, when extracting the processing information, detects the consistency between the data obtained by tracing the related information, and the consistency detected by this means. 7. The program analysis apparatus according to claim 6, further comprising a correction unit that corrects the related information based on the.
手段を有することを特徴とする請求項1又は5記載のプ
ログラム解析装置。8. The program analysis apparatus according to claim 1, further comprising an analysis range designating unit that designates the extraction range.
指定手段と、 抽出された前記各情報から前記指定された範囲に対応す
る情報を選択する選択手段を備えたことを特徴とする請
求項1又は5記載のプログラム解析装置。9. An output range designating means for designating a range of information to be output, and a selecting means for selecting information corresponding to the designated range from each of the extracted information. 1. The program analysis device according to 1 or 5.
する第1の検出手段を有し、 前記選択手段は、検出された反復構造に係る部分につい
ては、反復複数回及び1回以下に係る処理に関する情報
を選択するように構成されたことを特徴とする請求項9
記載のプログラム解析装置。10. A first detecting means for detecting a repetitive structure in the source code, wherein the selecting means processes a plurality of repetitions and one or less times for a portion related to the detected repetitive structure. 10. An arrangement adapted to select information regarding
A program analyzer as described.
する第2の検出手段を有し、 前記選択手段は、検出された選択構造に係る部分につい
ては、選択の条件の各判断結果に対応する各処理に関す
る情報を選択するように構成されたことを特徴とする請
求項9記載のプログラム解析装置。11. A second detection unit for detecting a selection structure in the source code, wherein the selection unit corresponds to each judgment result of selection conditions for a portion related to the detected selection structure. The program analysis device according to claim 9, wherein the program analysis device is configured to select information regarding each process.
れかの前記情報を、同一の表示装置又は相互に隣接する
表示装置に表示する出力手段を有することを特徴とする
請求項1又は5記載のプログラム解析装置。12. The output means for displaying the source code and any of the extracted information on the same display device or a display device adjacent to each other, according to claim 1 or 5. Program analysis device.
は前記情報の一方の一部が指定された場合に、当該指定
された部分に対応する他方の部分を強調表示するように
構成されたことを特徴とする請求項12記載のプログラ
ム解析装置。13. The output means is configured to, when a part of one of the source code or the information is designated, highlight another part corresponding to the designated part. 13. The program analysis device according to claim 12, which is characterized in that.
タプログラムのソースコードを解析するプログラム解析
方法において、 前記ソースコードから、前記各データの構造を表す情報
であるデータ情報を抽出するデータ抽出ステップと、 前記ソースコードと前記データ情報とに基づいて、ソー
スコードの所定の位置について、データ間の関連情報を
抽出する関連抽出ステップと、 を含むことを特徴とするプログラム解析方法。14. A program analysis method for analyzing a source code of a computer program representing a process for data, the data extraction step of extracting data information, which is information representing a structure of each of the data, from the source code, and the source. And a relation extracting step of extracting relation information between data at a predetermined position of the source code based on the code and the data information.
イルを参照する参照ステップを含むことを特徴とする請
求項14記載のプログラム解析方法。15. The program analysis method according to claim 14, further comprising a reference step of referring to another file related to the source code.
を格納する構造体Dと、データの型ごとの情報を格納す
る構造体Tとを含み、 前記構造体Dは該当する前記構造体Tに対し、関連づけ
られていることを特徴とする請求項14記載のプログラ
ム解析方法。16. The data information includes a structure D that stores information for each data and a structure T that stores information for each data type, and the structure D corresponds to the corresponding structure T. 15. The program analysis method according to claim 14, wherein the program analysis method is associated with each other.
種別を抽出することを特徴とする請求項14記載のプロ
グラム解析方法。17. The program analysis method according to claim 14, wherein the association extraction step extracts the type of the association.
び前記関連情報に基づいて、前記ソースコード中の所定
の処理に関する関連情報を、処理情報として抽出する処
理情報抽出ステップを含むことを特徴とする請求項14
記載のプログラム解析方法。18. A processing information extracting step of extracting, as processing information, related information related to a predetermined processing in the source code based on the source code, the data information and the related information. Item 14
Described program analysis method.
ースコードに基づいて行われるべき処理について、当該
処理前の前記関連情報及び当該処理後の前記関連情報の
組を抽出することを特徴とする請求項18記載のプログ
ラム解析方法。19. The process information extracting step extracts a set of the related information before the process and the related information after the process for a process to be performed based on the source code. Item 19. The program analysis method according to item 18.
理情報の抽出に際し、前記関連情報を辿ることにより得
られるデータ間の整合性を検出する整合性検出ステップ
と、 この手段により検出された整合性に基づいて、前記関連
情報を修正する修正ステップを含むことを特徴とする請
求項18記載のプログラム解析方法。20. The processing information extracting step, when extracting the processing information, detects a consistency between data obtained by tracing the related information, and a consistency detected by this means. 19. The program analysis method according to claim 18, further comprising a correction step of correcting the related information based on the above.
定ステップを含むことを特徴とする請求項14又は18
記載のプログラム解析方法。21. An analysis range designating step of designating a range of the extraction is included.
Described program analysis method.
囲指定ステップと、 抽出された前記各情報から前記指定された範囲に対応す
る情報を選択する選択ステップを備えたことを特徴とす
る請求項14又は18記載のプログラム解析方法。22. An output range designating step for designating a range of information to be output, and a selecting step for selecting information corresponding to the designated range from each of the extracted information. The program analysis method according to 14 or 18.
する第1の検出ステップを有し、 前記選択ステップは、検出された反復構造に係る部分に
ついては、反復複数回及び1回以下に係る処理に関する
情報を選択することを特徴とする請求項22記載のプロ
グラム解析方法。23. A first detecting step of detecting a repetitive structure in the source code, wherein the selecting step is a process of repeating a plurality of times and not more than once for a part related to the detected repetitive structure. 23. The program analysis method according to claim 22, characterized in that the information regarding is selected.
する第2の検出ステップを有し、 前記選択ステップは、検出された選択構造に係る部分に
ついては、選択の条件の各判断結果に対応する各処理に
関する情報を選択することを特徴とする請求項22記載
のプログラム解析方法。24. A second detection step of detecting a selection structure in the source code, wherein the selection step corresponds to each judgment result of selection conditions for a portion related to the detected selection structure. 23. The program analysis method according to claim 22, wherein information regarding each process is selected.
抽出されたいずれかの前記情報のうち全部又は一部に対
応する情報を、同一の表示装置又は相互に隣接する表示
装置に表示する出力ステップを含むことを特徴とする請
求項14又は18記載のプログラム解析方法。25. All or part of the source code,
19. The output step of displaying the information corresponding to all or a part of any of the extracted information on the same display device or a display device adjacent to each other, 20. Program analysis method.
ド又は前記情報の一方の一部が指定された場合に、当該
指定された部分に対応する他方の部分を強調表示するこ
とを特徴とする請求項25記載のプログラム解析方法。26. The output step, when a part of one of the source code and the information is designated, highlights the other part corresponding to the designated part. 25. The program analysis method described in 25.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8113728A JPH0926897A (en) | 1995-05-08 | 1996-05-08 | Program analyzer and program analyzing method |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7-109525 | 1995-05-08 | ||
JP10952595 | 1995-05-08 | ||
JP8113728A JPH0926897A (en) | 1995-05-08 | 1996-05-08 | Program analyzer and program analyzing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0926897A true JPH0926897A (en) | 1997-01-28 |
Family
ID=26449264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8113728A Pending JPH0926897A (en) | 1995-05-08 | 1996-05-08 | Program analyzer and program analyzing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0926897A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11224186A (en) * | 1998-02-05 | 1999-08-17 | Nippon Steel Corp | Device and method for analyzing software |
JP2006251583A (en) * | 2005-03-14 | 2006-09-21 | Shibasoku:Kk | Method for displaying program |
JP2018028879A (en) * | 2016-08-19 | 2018-02-22 | 日本電信電話株式会社 | Program analyzer, program analysis method and program analysis program |
JP2019521430A (en) * | 2016-06-03 | 2019-07-25 | アビニシオ テクノロジー エルエルシー | Format-specific data processing operations |
US10489428B2 (en) | 2015-09-17 | 2019-11-26 | Hitachi, Ltd. | Existing system processing specification extractor |
-
1996
- 1996-05-08 JP JP8113728A patent/JPH0926897A/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11224186A (en) * | 1998-02-05 | 1999-08-17 | Nippon Steel Corp | Device and method for analyzing software |
JP2006251583A (en) * | 2005-03-14 | 2006-09-21 | Shibasoku:Kk | Method for displaying program |
US10489428B2 (en) | 2015-09-17 | 2019-11-26 | Hitachi, Ltd. | Existing system processing specification extractor |
JP2019521430A (en) * | 2016-06-03 | 2019-07-25 | アビニシオ テクノロジー エルエルシー | Format-specific data processing operations |
JP2018028879A (en) * | 2016-08-19 | 2018-02-22 | 日本電信電話株式会社 | Program analyzer, program analysis method and program analysis program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0785510B1 (en) | Program debugging system for debugging a program having a graphical user interface | |
US5862382A (en) | Program analysis system and program analysis method | |
US7752501B2 (en) | Dynamic generation and implementation of globalization verification testing for user interface controls | |
US5210859A (en) | Program debugging support method and apparatus | |
US5974254A (en) | Method for detecting differences between graphical programs | |
EP1130518B1 (en) | Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof | |
US7509632B2 (en) | Method and apparatus for analyzing call history data derived from execution of a computer program | |
US5852564A (en) | Method and apparatus for interactively displaying signal information during computer simulation of an electrical circuit | |
JPH0950389A (en) | Apparatus and method for mounting by using computer system | |
AU4098700A (en) | Circuit arrangement for measuring the resistances of a pressure-sensitive resistance mat | |
US5987248A (en) | Debugging information display device | |
US7086033B2 (en) | Software debugger having a monitor for monitoring conditional statements within a software program | |
JP4395761B2 (en) | Program test support apparatus and method | |
JP2000112784A (en) | Program test support device and storage medium recording program test support program | |
CN110967498A (en) | Analyzer, method for searching specific sample by analyzer and storage medium | |
JPH08241191A (en) | Gui automatic evaluation device | |
JPH0926897A (en) | Program analyzer and program analyzing method | |
US20050055612A1 (en) | Design supporting apparatus | |
US20050022170A1 (en) | Visual debugging interface | |
JP2010055293A (en) | Verification assisting program, verification assisting apparatus, and verification assisting method | |
JPH10149301A (en) | Script generation device | |
JP2000207246A (en) | Debugging support device, method therefor and recording medium recorded with softwater for supporting debugging | |
EP1562120A1 (en) | Data processing system with display of test data | |
JP3094475B2 (en) | Program verification method | |
JPS6254337A (en) | Specification displaying system for program hierarchy |