JP6954080B2 - Information processing equipment, analysis programs and analysis methods - Google Patents
Information processing equipment, analysis programs and analysis methods Download PDFInfo
- Publication number
- JP6954080B2 JP6954080B2 JP2017240063A JP2017240063A JP6954080B2 JP 6954080 B2 JP6954080 B2 JP 6954080B2 JP 2017240063 A JP2017240063 A JP 2017240063A JP 2017240063 A JP2017240063 A JP 2017240063A JP 6954080 B2 JP6954080 B2 JP 6954080B2
- Authority
- JP
- Japan
- Prior art keywords
- constant
- variable
- statement
- name
- relationship
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
本発明は、情報処理装置などに関する。 The present invention relates to an information processing device and the like.
システム管理者が既存のシステムを保守したり、再構築したりする場合には、システムの現状を把握するため、システムに関するドキュメントや有識者の知識などの情報が重要である。しかしながら、例えば、長期に運用されるシステムでは、ドキュメントの不備や有識者の不在により、保守や再構築に作業が必要な情報が不足する事態が発生することがある。 When a system administrator maintains or rebuilds an existing system, information such as system documents and knowledge of experts is important in order to understand the current state of the system. However, for example, in a system that is operated for a long period of time, a situation may occur in which information that requires work for maintenance or reconstruction is insufficient due to inadequate documents or the absence of experts.
かかる場合に、システム管理者は、ドキュメントや有識者の代わりに、システムの実装実体であるプログラムを分析することによって、不足する情報を補う対処が行われる。このプログラム分析は、プログラムからのロジック抽出と呼ばれる。ここで、プログラムのロジックとは、プログラムに記述された処理内容のことをいい、プログラムの実行結果としての入出力関係を示す。 In such a case, the system administrator takes measures to supplement the lacking information by analyzing the program which is the implementation entity of the system instead of the document or the expert. This program analysis is called logic extraction from the program. Here, the logic of the program refers to the processing content described in the program, and indicates the input / output relationship as the execution result of the program.
プログラムからのロジック抽出の技術の一例として、シンボリック実行を利用する手法がある。シンボリック実行は、入力変数に記号値を設定して、条件分岐での実行可能分岐を判定しながら処理パスを抽出するプログラム分析の手法である。シンボリック実行の結果は、実行可能なパスごとの条件と出力である。入力変数で記述された、入力に関する条件と出力のロジック表で実現される。 As an example of the technology for extracting logic from a program, there is a method using symbolic execution. Symbolic execution is a program analysis method in which a symbol value is set in an input variable and a processing path is extracted while determining an executable branch in a conditional branch. The result of symbolic execution is the conditions and output for each executable path. It is realized by the input condition and output logic table described by the input variable.
シンボリック実行の参考例を、図15〜図17を参照して説明する。図15〜図17は、シンボリック実行の参考例を示す図である。 A reference example of symbolic execution will be described with reference to FIGS. 15 to 17. 15 to 17 are diagrams showing a reference example of symbolic execution.
図15に示すように、プログラムの例Aに対してシンボリック実行をした結果、抽出したパスごとの条件(パス条件)と出力(パス出力)とが記述される。また、シンボリック実行の結果を整理した結果が、分析結果のロジック表である。プログラムの例Aでは、IF文の条件の比較値は‘男性’や‘女性’のようなリテラルを用いて記述されている。プログラムの例Aに対してシンボリック実行した結果のパス条件およびパス出力には、比較値がリテラルを用いて記述される。分析結果のロジック表の条件および出力には、比較値がリテラルを用いて記述される。 As shown in FIG. 15, as a result of performing symbolic execution on the example A of the program, the condition (path condition) and the output (path output) for each extracted path are described. The result of organizing the results of symbolic execution is the logic table of the analysis results. In example A of the program, the comparison value of the condition of the IF statement is described using literals such as'male'and'female'. In the path condition and path output of the result of symbolically executing the program example A, the comparison value is described using a literal. The comparison values are described using literals in the conditions and output of the logic table of the analysis results.
図16のプログラムの例Bは、プログラムの例Aと同一のロジックである。プログラムの例Bのように、IF文の条件の比較値は、定数を用いて記述できる。ここでは、入力変数である「性別」の型が2桁の文字列型である。プログラムの例Bに対してシンボリック実行をした結果のパス条件およびパス出力には、比較値が2桁の文字列型の定数で定義された文字列を用いて記述される。 The program example B of FIG. 16 has the same logic as the program example A. As in the example B of the program, the comparison value of the condition of the IF statement can be described by using a constant. Here, the type of the input variable "gender" is a two-digit character string type. The path condition and path output as a result of symbolic execution for example B of the program are described using a character string defined by a character string type constant whose comparison value is two digits.
図17のプログラムの例Cは、プログラムの例Aと同一のロジックである。プログラムの例Cのように、IF文の条件の比較値は、定数を用いて記述できる。ここでは、入力変数である「性別」の型が1桁の数字型である。プログラムの例Cに対してシンボリック実行をした結果のパス条件およびパス出力には、比較値が1桁の数値型の定数で定義された数値を用いて記述される。 The program example C of FIG. 17 has the same logic as the program example A. As in example C of the program, the comparison value of the condition of the IF statement can be described by using a constant. Here, the type of the input variable "gender" is a one-digit number type. In the path condition and path output as a result of symbolic execution for example C of the program, the comparison value is described using a numerical value defined by a one-digit numeric type constant.
IF文の条件の比較値として用いられる定数の値は、他の定数と区別するために設定されるので、値自体に意味がない場合がある。例えば、図17のプログラムの例Cでは、IF文の条件の比較値として用いられる、「男性」を意味する定数の値「1」は、「女性」を意味する定数と区別するために設定されるので、値自体に意味がない。 Since the value of the constant used as the comparison value of the condition of the IF statement is set to distinguish it from other constants, the value itself may be meaningless. For example, in Example C of the program of FIG. 17, the value "1" of the constant meaning "male" used as the comparison value of the condition of the IF statement is set to distinguish it from the constant meaning "female". Therefore, the value itself has no meaning.
ところが、定数の値(定数値)と定数名との間に意味的な繋がりが無いプログラムでは、シンボリック実行結果およびロジック表の解釈に手間がかかるという問題がある。例えば、図17のロジック表では、条件で記述される定数値「1」の意味が不明なため、定数値「1」の解釈に手間がかかる。 However, in a program in which there is no semantic connection between the constant value (constant value) and the constant name, there is a problem that it takes time to interpret the symbolic execution result and the logic table. For example, in the logic table of FIG. 17, since the meaning of the constant value "1" described by the condition is unknown, it takes time and effort to interpret the constant value "1".
そこで、プログラム内の定数の定義に記述される定数名と定数値の関係を利用して、ロジック表の定数値を定数名に置換する方法が考えられる。例えば、図17のロジック表において、プログラムの例C内の000011文を利用して、条件で記述される定数値「1」を定数名「男性」に置き換える方法が考えられる。これにより、ロジック表の解釈が容易になる。 Therefore, a method of replacing the constant value in the logic table with the constant name can be considered by using the relationship between the constant name and the constant value described in the definition of the constant in the program. For example, in the logic table of FIG. 17, a method of replacing the constant value "1" described in the condition with the constant name "male" by using the 000011 sentence in the example C of the program can be considered. This facilitates the interpretation of the logic table.
しかしながら、プログラム内の定数の定義に重複する定数値があると、条件で記述される定数値に対する定数名を一意に特定できないという問題がある。また、定数値を変数に転記した後に、当該変数に関する条件があると、当該変数に転記された定数値に対する定数名を一意に特定できないという問題がある。 However, if there are duplicate constant values in the definition of constants in the program, there is a problem that the constant name for the constant value described in the condition cannot be uniquely specified. Further, if there is a condition related to the variable after posting the constant value to the variable, there is a problem that the constant name for the constant value posted to the variable cannot be uniquely specified.
ここで、定数値を定数名に置換する場合の問題を、図18Aおよび図18Bを参照して説明する。図18Aおよび図18Bは、定数値を定数名に置換する場合の問題を説明する図である。 Here, the problem of replacing the constant value with the constant name will be described with reference to FIGS. 18A and 18B. 18A and 18B are diagrams illustrating a problem in replacing a constant value with a constant name.
図18Aに示すように、プログラムの例Dに定数の定義と処理内容が含まれる。定数の定義には、定数値「1」が重複している(000013行、000015行、000024行)。すなわち、定数値を「1」と定義する定数名が、「基準」、「東京」、「地域違い」と複数存在する。すると、図18Bに示すプログラムの例Dのシンボリック実行の結果のNo3には、定数値「1」が2箇所あり、それぞれの定数値「1」に対する定数名を一意に特定できない。
As shown in FIG. 18A, example D of the program includes the definition of constants and the processing contents. The constant value "1" is duplicated in the definition of the constant (
また、図18Bに示すプログラムの例Dのシンボリック実行の結果のNo3には、条件として(数値=1)が含まれている。条件中の(数値=1)に該当するIF条件は、(数値 Not= 中継)(図18Aの000034行)であるが、変数「中継」は定数の定義に存在しないので定数ではない。この条件が評価される時点で、変数「中継」には、定数名「基準」に対応する定数値が転記されている(図18Aの000033行)。ところが、変数「中継」に転記された定数値に対する定数名を追跡できない。すなわち、定数値を転記された変数に関する条件があると、当該変数に転記された定数値に対する定数名を一意に特定できない。
Further, (numerical value = 1) is included as a condition in No. 3 of the result of symbolic execution of the program example D shown in FIG. 18B. The IF condition corresponding to (numerical value = 1) in the condition is (numerical value Not = relay) (
本発明は、1つの側面では、シンボリック実行結果の解釈の向上を図ることを目的とする。 One aspect of the present invention is to improve the interpretation of symbolic execution results.
1つの態様では、情報処理装置は、プログラムを、シンボリック実行を用いて分析する情報処理装置であって、前記プログラムから順次命令文を抽出する抽出部と、前記抽出部によって抽出された命令文が変数を更新する更新文である場合に、前記更新文に含まれる、前記変数の変数名及び前記変数を更新する値の意味を示す定数名の関係を記憶部に記録する記録部と、前記命令文がパスを分岐する分岐文である場合に、前記分岐文と前記関係とを関連付ける関連部と、前記関連部によって関連付けられた前記分岐文と前記関係とに基づいて、前記分岐文に対するシンボリック実行結果に含まれる定数値を、前記関係に記憶された前記定数名を含む情報に置換する置換部と、を有する。 In one aspect, the information processing device is an information processing device that analyzes a program by using symbolic execution, and includes an extraction unit that sequentially extracts instruction statements from the program and an instruction statement extracted by the extraction unit. When the update statement updates a variable, the recording unit that records the relationship between the variable name of the variable and the constant name indicating the meaning of the value for updating the variable included in the update statement in the storage unit, and the instruction. When the statement is a branch statement that branches the path, symbolic execution is performed on the branch statement based on the related part that associates the branch statement with the relationship and the branch statement and the relationship associated with the related part. It has a replacement unit that replaces the constant value included in the result with information including the constant name stored in the relationship.
1実施態様によれば、シンボリック実行結果の解釈の向上を図ることができる。 According to one embodiment, it is possible to improve the interpretation of the symbolic execution result.
以下に、本願の開示する情報処理装置、分析プログラムおよび分析方法の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。 Hereinafter, examples of the information processing apparatus, analysis program, and analysis method disclosed in the present application will be described in detail with reference to the drawings. The present invention is not limited to the examples.
[実施例に係る情報処理装置の機能構成]
図1は、実施例に係る情報処理装置の機能構成を示す図である。図1に示す情報処理装置1は、同一の数値を異なる意味として用いる複数の定数名を有するプログラムを、シンボリック実行を用いて分析する。ここでいうシンボリック実行とは、プログラム内の入力変数に記号値を設定して、条件分岐での実行可能分岐を判定しながら処理パスを抽出するプログラム分析手法のことをいう。このようなシンボリック実行において、情報処理装置1は、実行する命令文が変数を更新する更新文である場合に、更新文に含まれる変数名及び定数名の関係を記憶部に記録する。情報処理装置1は、命令文がパスを分岐する条件分岐文である場合に、条件分岐文と関係とを関連付ける。情報処理装置1は、プログラムの変数名を含む条件分岐文と、記憶部に記憶された変数名及び定数名の関係とに基づいて、プログラムの条件分岐文に対する(シンボリック実行結果の)パス条件の中にある定数値を、関係に記憶された定数名を含む情報に置換する。
[Functional configuration of information processing device according to the embodiment]
FIG. 1 is a diagram showing a functional configuration of an information processing device according to an embodiment. The
情報処理装置1は、制御部10および記憶部20を有する。制御部10は、CPU(Central Processing Unit)などの電子回路に対応する。そして、制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部10は、シンボリック実行部11、定数判定部12、定数関係記録部13、定数関係制御部14、定数情報追加部15、パス条件パス出力記録部16、定数情報解釈部17および条件簡約化部18を有する。なお、シンボリック実行部11は、抽出部の一例である。定数関係記録部13は、記録部の一例である。定数関係制御部14は、関連部の一例である。定数情報追加部15は、置換部の一例である。
The
記憶部20は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部20は、プログラム21、定数管理表22、シンボリック実行結果23およびロジック表24を有する。
The
プログラム21は、シンボリック実行対象のプログラムである。 The program 21 is a program to be executed symbolically.
定数管理表22は、変数名と定数名との関係を管理する表である。変数名とは、変数を更新する領域の名称のことをいう。定数名とは、定数を設定しておく領域の名称のことをいう。定数名は、プログラム21の定数の定義に記述される。定数管理表22は、プログラム21のシンボリック実行で、命令文が更新文であるとき、更新元の値を意味する定数名と、更新先の変数名(更新変数の変数名)とを対応付けて管理する。更新文とは、更新元の値を更新先の領域へ更新する命令文のことをいう。更新文には、一例として、転記命令、演算命令が挙げられる。転記命令とは、参照変数(更新元)の値を他の変数(更新変数)の領域に転記、あるいは代入する命令文のことをいう。Cobol言語では、MOVEが該当する。“MOVE A TO B”では、参照変数Aの値を他の変数Bに転記する場合に使われる。また、演算命令とは、加減乗除を演算する命令文のことをいう。 The constant management table 22 is a table that manages the relationship between the variable name and the constant name. The variable name is the name of the area for updating the variable. The constant name is the name of the area in which the constant is set. The constant name is described in the definition of the constant in the program 21. In the constant management table 22, when the statement is an update statement in the symbolic execution of the program 21, the constant name meaning the value of the update source and the variable name of the update destination (variable name of the update variable) are associated with each other. to manage. The update statement is a statement that updates the update source value to the update destination area. Examples of the update statement include a posting instruction and an arithmetic instruction. A posting instruction is an instruction statement that posts or assigns the value of a reference variable (update source) to the area of another variable (update variable). In COBOL language, MOVE is applicable. In "MOVE A TO B", it is used when the value of the reference variable A is transferred to another variable B. Further, the arithmetic instruction means an instruction statement for calculating addition, subtraction, multiplication and division.
シンボリック実行結果23は、シンボリック実行の実行結果である。シンボリック実行結果23は、シンボリック実行によって抽出された処理パスに対してパス条件とパス出力とを記述した実行結果である。
The
ロジック表24は、シンボリック実行結果を整理した表であり、入力変数に設定された記号値に関して条件と出力を記述した表である。なお、ロジック表24は、シンボリック実行結果23を用いて生成される。
The logic table 24 is a table in which the symbolic execution results are organized, and is a table in which conditions and outputs are described with respect to the symbol values set in the input variables. The logic table 24 is generated using the
シンボリック実行部11は、プログラム21内のそれぞれの命令文に対してシンボリック実行を行う。 The symbolic execution unit 11 executes symbolic execution for each instruction statement in the program 21.
定数判定部12は、シンボリック実行で分析する命令文が更新文である場合に、参照変数が定数であるか否かを判定する。例えば、定数判定部12は、参照変数の名前がプログラム21の定数の定義に含まれるか否かを判定する。定数判定部12は、参照変数の名前が定数の定義に含まれている場合には、参照変数が定数である旨を出力する。定数判定部12は、参照変数の名前が定数の定義に含まれていない場合であって、参照変数の名前が定数管理表22に管理されている場合には、参照変数が定数管理表に管理された変数である旨を出力する。なお、参照変数の名前が、定数の定義に含まれていないが、作業変数の定義に含まれている場合がある。作業変数の定義とは、作業中に一時的に用いられる変数のことをいい、例えば図18AのプログラムDの中の27行〜30行に該当する。かかる場合には、定数判定部12は、参照変数が定数である旨を出力すれば良い。 The constant determination unit 12 determines whether or not the reference variable is a constant when the instruction statement to be analyzed by symbolic execution is an update statement. For example, the constant determination unit 12 determines whether or not the name of the reference variable is included in the definition of the constant in the program 21. When the name of the reference variable is included in the definition of the constant, the constant determination unit 12 outputs that the reference variable is a constant. The constant determination unit 12 manages the reference variable in the constant management table when the name of the reference variable is not included in the definition of the constant and the name of the reference variable is managed in the constant management table 22. Outputs that it is a variable that has been created. The name of the reference variable is not included in the definition of the constant, but it may be included in the definition of the working variable. The definition of a work variable is a variable that is temporarily used during work, and corresponds to lines 27 to 30 in program D of FIG. 18A, for example. In such a case, the constant determination unit 12 may output that the reference variable is a constant.
定数関係記録部13は、定数判定部12によって判定された参照変数が定数であると判定された場合には、定数の名前(定数名)と更新変数の変数名との定数関係を定数管理表22に記録する。 When the reference variable determined by the constant determination unit 12 is determined to be a constant, the constant relationship recording unit 13 stores the constant relationship between the constant name (constant name) and the variable name of the update variable in the constant management table. Record at 22.
例えば、定数関係記録部13は、命令文と定数判定部12からの出力内容とを受け付けると、出力内容が、参照変数が定数である旨を示す場合には、以下の処理を行う。定数関係記録部13は、命令文中の更新変数の変数名が定数管理表22に存在しない場合には、更新変数の変数名と、参照変数の定数名(更新元の値を意味する定数名)との定数関係を定数管理表22に追加する。これにより、定数関係記録部13は、プログラム内の定数の定義に重複する定数値があっても、命令文中の更新変数と、この更新変数に更新する定数値を意味する定数名とを関係付けることができる。定数関係記録部13は、命令文中の更新変数の変数名が定数管理表22に存在する場合には、更新変数の変数名に対する定数名を、命令文中の参照変数の定数名に更新する。これにより、定数関係記録部13は、命令文中の更新変数と、この更新変数に更新する定数値を意味する定数名とを関係付けることができる。 For example, when the constant relationship recording unit 13 receives the instruction statement and the output content from the constant determination unit 12, the output content indicates that the reference variable is a constant, the following processing is performed. When the variable name of the update variable in the statement does not exist in the constant management table 22, the constant relationship recording unit 13 sets the variable name of the update variable and the constant name of the reference variable (the constant name meaning the value of the update source). The constant relationship with is added to the constant management table 22. As a result, the constant relation recording unit 13 associates the update variable in the instruction statement with the constant name meaning the constant value to be updated to this update variable even if there is a duplicate constant value in the definition of the constant in the program. be able to. When the variable name of the update variable in the instruction statement exists in the constant management table 22, the constant relationship recording unit 13 updates the constant name for the variable name of the update variable to the constant name of the reference variable in the instruction statement. As a result, the constant relation recording unit 13 can associate the update variable in the instruction statement with the constant name meaning the constant value to be updated to this update variable.
また、定数関係記録部13は、出力内容が、参照変数が定数管理表に管理された変数である旨を示す場合には、以下の処理を行う。定数関係記録部13は、命令文中の参照変数に対応する定数名を定数管理表22から取得し、取得した定数名と命令文中の更新変数の変数名との定数関係を定数管理表22に追加する。これにより、定数関係記録部13は、命令文中の参照変数に、既に更新された更新変数を用いる場合であっても、この更新変数に更新された定数値を意味する定数名を追跡でき、この定数名を命令文中の更新変数の変数名と関係付けることができる。 Further, the constant relation recording unit 13 performs the following processing when the output content indicates that the reference variable is a variable managed in the constant management table. The constant relationship recording unit 13 acquires the constant name corresponding to the reference variable in the instruction statement from the constant management table 22, and adds the constant relationship between the acquired constant name and the variable name of the update variable in the instruction statement to the constant management table 22. do. As a result, the constant relation recording unit 13 can track the constant name meaning the constant value updated in this update variable even when the update variable that has already been updated is used as the reference variable in the instruction statement. The constant name can be associated with the variable name of the update variable in the statement.
定数関係制御部14は、定数関係記録部13によって記録された定数関係を制御する。例えば、定数関係制御部14は、パス分岐時点に、パス分岐時点での命令文と、パス分岐時点での定数管理表22とを関連付けて保存する。また、定数関係制御部14は、パスの終点であるとき、パスの終点での命令文と、パスの終点での定数管理表22とを関連付けて保存する。そして、定数関係制御部14は、定数管理表22を保存したパス分岐までパスをバックトラックしたとき、このパス分岐時点で保存した定数管理表22を再生する。
The constant
定数情報追加部15は、パス条件およびパス出力を出力するときに、定数関係制御部14によって制御された定数関係を利用して、パス条件およびパス出力に記述された定数値に定数情報を追加する。すなわち、定数情報追加部15は、シンボリック実行結果として出力されるパス条件およびパス出力を、定数値に定数情報を追加したパス条件およびパス出力を含むシンボリック実行結果23に置換する。
When the constant information addition unit 15 outputs the path condition and the path output, the constant information addition unit 15 adds the constant information to the constant value described in the path condition and the path output by using the constant relationship controlled by the constant
例えば、定数情報追加部15は、シンボリック実行の処理がパス条件の記録処理である場合に、条件分岐文の条件とパス条件とを取得する。ここでいうパス条件とは、条件分岐文において複数分岐が可能で、分岐の1つを選択した場合に実施される条件のことをいう。一例として、IF文でTHEN分岐を選択した場合には、IF文の条件がパス条件となる。そして、定数情報追加部15は、パス条件の変数の変数名が、パス条件の条件分岐文に対応付けられた定数管理表22の更新変数の変数名にある場合には、更新変数の変数名に対応する定数名(定数情報)をパス条件に記述された定数値に追加する。 For example, the constant information addition unit 15 acquires the condition of the conditional branch statement and the path condition when the processing of the symbolic execution is the recording process of the path condition. The path condition referred to here is a condition that can be branched in a conditional branch statement and is executed when one of the branches is selected. As an example, when the THEN branch is selected in the IF statement, the condition of the IF statement becomes the path condition. Then, when the variable name of the variable of the path condition is in the variable name of the update variable of the constant management table 22 associated with the conditional branch statement of the path condition, the constant information addition unit 15 determines the variable name of the update variable. The constant name (constant information) corresponding to is added to the constant value described in the path condition.
また、定数情報追加部15は、シンボリック実行の処理がパス出力の記録処理である場合に、パス出力を取得する。ここでいうパス出力とは、パスの終点で実施される出力のことをいう。そして、定数情報追加部15は、パス出力の変数の変数名が、パス出力の命令文に対応付けられた定数管理表22の更新変数の変数名にある場合には、更新変数の変数名に対応する定数名(定義情報)をパス出力に記述された定数値に追加する。 Further, the constant information addition unit 15 acquires the path output when the symbolic execution process is the path output recording process. The path output here means the output executed at the end point of the path. Then, when the variable name of the variable of the path output is in the variable name of the update variable of the constant management table 22 associated with the statement of the path output, the constant information addition unit 15 sets the variable name of the update variable. Add the corresponding constant name (definition information) to the constant value described in the path output.
パス条件パス出力記録部16は、定数情報追加部15によって定数情報が追加されたパス条件およびパス出力をシンボリック実行結果23として記録する。
The path condition path output recording unit 16 records the path condition and the path output to which the constant information is added by the constant information addition unit 15 as the
定数情報解釈部17は、シンボリック実行結果23のパス条件を簡約化するために、パス条件に追加された定数情報を解釈する。
The constant information interpretation unit 17 interprets the constant information added to the path condition in order to simplify the path condition of the
例えば、定数情報解釈部17は、パス条件を簡約化する場合に、シンボリック実行結果23から、定数情報を追加したパス条件を取得する。定数情報解釈部17は、パス条件の中の比較条件ごとに、比較条件の変数が定数情報を追加したものであるか否かを判定する。定数情報解釈部17は、比較条件の変数が定数情報を追加したものである場合には、元のパス条件に戻す。すなわち、定数情報解釈部17は、パス条件の中の比較条件の変数を、定数情報を除外したものにする。そして、定数情報解釈部17は、定数情報を追加した変数を持つ比較条件と定数情報が除外された元の比較条件との対応関係を記録する。
For example, the constant information interpretation unit 17 acquires the path condition to which the constant information is added from the
また、定数情報解釈部17は、取得したパス条件の中の比較条件を元の比較条件に戻すと、元のパス条件を簡約化するため、元のパス条件を条件簡約化部18に引き渡す。 Further, when the comparison condition in the acquired path condition is returned to the original comparison condition, the constant information interpretation unit 17 passes the original path condition to the condition reduction unit 18 in order to simplify the original path condition.
また、定数情報解釈部17は、条件簡約化部18によって簡約化された元のパス条件を、定数情報を追加したパス条件にする場合には、対応関係を用いて、簡約化したパス条件の中の比較条件ごとに、比較条件の変数を、定数情報を追加したものに戻す。そして、定数情報解釈部17は、簡約化された元のパス条件を、定数情報を追加したパス条件にして、簡約化された新たなパス条件を出力する。 Further, when the constant information interpretation unit 17 changes the original path condition simplified by the condition simplification unit 18 into a path condition to which constant information is added, the constant information interpretation unit 17 uses a correspondence relationship to reduce the path condition. For each comparison condition inside, the variable of the comparison condition is returned to the one to which the constant information is added. Then, the constant information interpretation unit 17 converts the simplified original path condition into a path condition to which the constant information is added, and outputs the simplified new path condition.
条件簡約化部18は、パス条件を簡約化する。一例として、パス条件が「(数値=1) AND ((場所 NOT=2) AND (場所=1))」である場合には、このパス条件を「(数値=1) AND (場所=1)」と簡約化する。 The condition simplification unit 18 simplifies the path condition. As an example, when the path condition is "(numerical value = 1) AND ((location NOT = 2) AND (location = 1))", this path condition is set to "(numerical value = 1) AND (location = 1)". "Simplified.
[定数判定部の動作の一例]
図2は、実施例に係る定数判定部の動作の一例を示す図である。図2左には、プログラム21の処理内容が示されている。プログラム21は、図18Aで示すプログラムDであるとして説明する。プログラム21の処理内容に含まれる命令文が1文ずつ処理される。
[Example of operation of constant determination unit]
FIG. 2 is a diagram showing an example of the operation of the constant determination unit according to the embodiment. The processing content of the program 21 is shown on the left side of FIG. The program 21 will be described as the program D shown in FIG. 18A. The instruction statements included in the processing contents of the program 21 are processed one by one.
一例として、行番号が32の命令文「MOVE 無問題 TO エラー」が処理される場合について説明する。定数判定部12は、命令文が更新文であるか否かを判定する。ここでは、命令文は、MOVE命令(転記命令)であるので、更新文であると判定される。 As an example, a case where the statement "MOVE no problem TO error" having a line number of 32 is processed will be described. The constant determination unit 12 determines whether or not the instruction statement is an update statement. Here, since the instruction statement is a MOVE instruction (posting instruction), it is determined to be an update statement.
定数判定部12は、参照変数の名前が定数であるか否かを判定する。ここでは、参照変数の名前は、「無問題」である。「無問題」は、定数の定義の23行目に含まれている。すなわち、「無問題」は、定数である。したがって、定数判定部12は、参照変数の名前が定数であるので、参照変数が定数である旨を示す「1」を出力する。 The constant determination unit 12 determines whether or not the name of the reference variable is a constant. Here, the name of the reference variable is "no problem". "No problem" is included in the 23rd line of the definition of the constant. That is, "no problem" is a constant. Therefore, since the name of the reference variable is a constant, the constant determination unit 12 outputs "1" indicating that the reference variable is a constant.
一例として、行番号が34の命令文「IF (数値 NOT=中継)THEN」が処理される場合について説明する。定数判定部12は、命令文が更新文であるか否かを判定する。ここでは、命令文は、IF命令(条件命令)であるので、更新文でないと判定される。したがって、定数判定部12は、命令文が更新文でない旨を示す「0」を出力する。 As an example, a case where the instruction statement “IF (numerical value NOT = relay) THEN” having a line number of 34 is processed will be described. The constant determination unit 12 determines whether or not the instruction statement is an update statement. Here, since the instruction statement is an IF instruction (conditional instruction), it is determined that it is not an update statement. Therefore, the constant determination unit 12 outputs "0" indicating that the instruction statement is not an update statement.
一例として、行番号が36の命令文「MOVE NG TO 中継B」が定数判定部12に入力される場合について説明する。定数判定部12は、命令文が更新文であるか否かを判定する。ここでは、命令文は、MOVE命令(転記命令)であるので、更新文であると判定される。 As an example, a case where the instruction statement “MOVE NG TO relay B” having a line number of 36 is input to the constant determination unit 12 will be described. The constant determination unit 12 determines whether or not the instruction statement is an update statement. Here, since the instruction statement is a MOVE instruction (posting instruction), it is determined to be an update statement.
定数判定部12は、参照変数の名前が定数であるか否かを判定する。ここでは、参照変数の名前は、「NG」である。「NG」は、定数の定義の21行目に含まれている。すなわち、「NG」は、定数である。したがって、定数判定部12は、参照変数の名前が定数であるので、参照変数が定数である旨を示す「1」を出力する。この後、定数関係記録部13が、更新変数の変数名「中継B」と、参照変数の定数名「NG」との定数関係を定数管理表22に追加する。 The constant determination unit 12 determines whether or not the name of the reference variable is a constant. Here, the name of the reference variable is "NG". "NG" is included in the 21st line of the definition of the constant. That is, "NG" is a constant. Therefore, since the name of the reference variable is a constant, the constant determination unit 12 outputs "1" indicating that the reference variable is a constant. After that, the constant relationship recording unit 13 adds the constant relationship between the variable name “relay B” of the update variable and the constant name “NG” of the reference variable to the constant management table 22.
次に、一例として、行番号が37の命令文「MOVE 中継B TO 結果」が処理される場合について説明する。定数判定部12は、命令文が更新文であるか否かを判定する。ここでは、命令文は、MOVE命令(転記命令)であるので、更新文であると判定される。
Next, as an example, a case where the instruction statement “MOVE relay BTO result” having the
定数判定部12は、参照変数の名前が定数であるか否かを判定する。ここでは、参照変数の名前は、「中継B」である。「中継B」は、定数の定義に含まれていない。すなわち、「中継B」は、定数でない。 The constant determination unit 12 determines whether or not the name of the reference variable is a constant. Here, the name of the reference variable is "relay B". "Relay B" is not included in the definition of the constant. That is, "relay B" is not a constant.
さらに、定数判定部12は、参照変数の名前が定数管理表22に管理されているか否かを判定する。ここでは、1行前の36行目の処理で、今回参照変数の名前である「中継B」が定数管理表22に追加されるので、参照変数の名前が定数管理表22に管理されていると判定される。したがって、定数判定部12は、「中継B」は定数管理表に管理された変数であるので、参照変数が定数管理表に管理された変数である旨を示す「3」を出力する。 Further, the constant determination unit 12 determines whether or not the name of the reference variable is managed in the constant management table 22. Here, in the process of the 36th line one line before, the name of the reference variable "relay B" is added to the constant management table 22 this time, so that the name of the reference variable is managed in the constant management table 22. Is determined. Therefore, since the "relay B" is a variable managed by the constant management table, the constant determination unit 12 outputs "3" indicating that the reference variable is a variable managed by the constant management table.
[定数関係記録部の動作の一例]
図3は、実施例に係る定数関係記録部の動作の一例を示す図である。図3左には、行番号ごとに命令文および定数判定部12の出力が定数関係記録部13の入力として示されている。プログラム21は、図18Aで示すプログラムDであるとして説明する。定数管理表22は、まだ何も設定されていないこととする。
[Example of operation of constant relation recording unit]
FIG. 3 is a diagram showing an example of the operation of the constant relation recording unit according to the embodiment. On the left side of FIG. 3, the instruction statement and the output of the constant determination unit 12 are shown as inputs of the constant relation recording unit 13 for each line number. The program 21 will be described as the program D shown in FIG. 18A. It is assumed that nothing has been set in the constant management table 22 yet.
一例として、行番号が32の命令文「MOVE 無問題 TO エラー」が処理される場合について説明する。図3左には、定数判定部12の出力として、参照変数が定数である旨の「1」が示されている。参照変数が「1」である場合には、以下の処理を行う。定数関係記録部13は、命令文中の更新変数の変数名が定数管理表22に存在しない場合には、更新変数の変数名と参照変数の定数名との定数関係を定数管理表22に追加する。定数関係記録部13は、命令文中の更新変数の変数名が定数管理表22に存在する場合には、更新変数の変数名に対する定数名を、命令文中の参照変数の定数名に更新する。ここでは、定数管理表22は、まだ何も設定されていない。そこで、定数関係記録部13は、更新変数の変数名「エラー」と参照変数の定数名「無問題」との定数関係を定数管理表22に追加する。 As an example, a case where the statement "MOVE no problem TO error" having a line number of 32 is processed will be described. On the left side of FIG. 3, “1” indicating that the reference variable is a constant is shown as the output of the constant determination unit 12. When the reference variable is "1", the following processing is performed. When the variable name of the update variable in the statement does not exist in the constant management table 22, the constant relationship recording unit 13 adds the constant relationship between the variable name of the update variable and the constant name of the reference variable to the constant management table 22. .. When the variable name of the update variable in the instruction statement exists in the constant management table 22, the constant relationship recording unit 13 updates the constant name for the variable name of the update variable to the constant name of the reference variable in the instruction statement. Here, nothing is set in the constant management table 22 yet. Therefore, the constant relationship recording unit 13 adds the constant relationship between the variable name "error" of the update variable and the constant name "no problem" of the reference variable to the constant management table 22.
一例として、行番号が33の命令文「MOVE 基準 TO 中継」が処理される場合について説明する。図3左には、定数判定部12の出力として、参照変数が定数である旨の「1」が示されている。参照変数が「1」の場合であるので、行番号32の命令文と同様の処理となる。ここでは、命令文の更新変数の変数名「中継」が定数管理表22に存在しない。そこで、定数関係記録部13は、更新変数の変数名「中継」と参照変数の定数名「基準」との定数関係を定数管理表22に追加する。これにより、定数関係記録部13は、命令文中の更新変数と、この更新変数に更新する定数値を意味する定数名とを関係付けることができる。
As an example, a case where the instruction statement “MOVE reference TO relay” having a line number of 33 is processed will be described. On the left side of FIG. 3, “1” indicating that the reference variable is a constant is shown as the output of the constant determination unit 12. Since the reference variable is "1", the processing is the same as that of the statement with
一例として、行番号が34の命令文「IF (数値 NOT=中継)」が処理される場合について説明する。図3左には、定数判定部12の出力として、命令文が更新文でない旨の「0」が示されている。そこで、定数関係記録部13は、何も処理しない。 As an example, a case where the instruction statement “IF (numerical value NOT = relay)” having a line number of 34 is processed will be described. On the left side of FIG. 3, “0” indicating that the instruction statement is not an update statement is shown as the output of the constant determination unit 12. Therefore, the constant relation recording unit 13 does not process anything.
一例として、行番号が35の命令文「MOVE 基準違い TO エラー」が処理される場合について説明する。図3左には、定数判定部12の出力として、参照変数が定数である旨の「1」が示されている。参照変数が「1」の場合であるので、行番号32の命令文と同様の処理となる。ここでは、命令文の更新変数の変数名「エラー」が定数管理表22に存在する。そこで、定数関係記録部13は、更新変数の変数名「エラー」に対する定数名「無問題」を、命令文中の参照変数の定数名「基準違い」に更新する。これにより、定数関係記録部13は、命令文中の更新変数と、この更新変数に更新する定数値を意味する定数名とを関係付けることができる。
As an example, a case where the statement "MOVE standard difference TO error" having a line number of 35 is processed will be described. On the left side of FIG. 3, “1” indicating that the reference variable is a constant is shown as the output of the constant determination unit 12. Since the reference variable is "1", the processing is the same as that of the statement with
一例として、行番号が36の命令文「MOVE NG TO 中継B」が処理される場合について説明する。図3左には、定数判定部12の出力として、参照変数が定数である旨の「1」が示されている。参照変数が「1」の場合であるので、行番号32の命令文と同様の処理となる。ここでは、命令文の更新変数の変数名「中継B」が定数管理表22に存在しない。そこで、定数関係記録部13は、更新変数の変数名「中継B」と参照変数の定数名「NG」との定数関係を定数管理表22に追加する。
As an example, a case where the instruction statement “MOVE NG TO relay B” having a line number of 36 is processed will be described. On the left side of FIG. 3, “1” indicating that the reference variable is a constant is shown as the output of the constant determination unit 12. Since the reference variable is "1", the processing is the same as that of the statement with
一例として、行番号が37の命令文「MOVE 中継B TO 結果」が処理される場合について説明する。図3左には、定数判定部12の出力として、参照変数が定数管理表22に管理された変数である旨の「3」が示されている。参照変数が「3」である場合には、以下の処理を行う。定数関係記録部13は、命令文中の参照変数に対応する定数名を定数管理表22から取得し、取得した定数名と命令文中の更新変数の変数名との定数関係を定数管理表22に追加する。ここでは、定数関係記録部13は、定数管理表22から、命令文中の参照変数「中継B」に対応する定数名「NG」を取得する。定数関係記録部13は、取得した定数名「NG」と命令文中の更新変数の変数名「結果」との定数関係を定数管理表22に追加する。これにより、定数関係記録部13は、命令文中の参照変数「中継B」に、既に更新された更新変数を用いる場合であっても、この更新変数に更新された定数値を意味する定数名「NG」を追跡できる。そして、定数関係記録部13は、この定数名「NG」を命令文中の更新変数の変数名「出力」と関係付けることができる。
As an example, a case where the instruction statement “MOVE relay BTO result” having the
[定数関係制御部の動作の一例]
図4は、実施例に係る定数関係制御部の動作の一例を示す図である。なお、図4で示すフローチャートは、図18Aで示したプログラムDの処理の流れを示す。また、破線は、シンボリック実行の処理の順番を示す。
[Example of operation of constant relation control unit]
FIG. 4 is a diagram showing an example of the operation of the constant relationship control unit according to the embodiment. The flowchart shown in FIG. 4 shows the processing flow of the program D shown in FIG. 18A. The broken line indicates the order of processing of symbolic execution.
図4に示すように、定数関係制御部14は、処理中の命令文がパス分岐文であり、且つ複数の分岐が実行可能である場合には、当該命令文と関連付けて定数管理表22を保存する。定数関係制御部14は、処理中の命令文がパスの終点である場合には、当該命令文と関連付けて定数管理表22を保存する。そして、定数関係制御部14は、定数管理表22を保存したパス分岐までパスをバックトラックすると、このパス分岐文で保存した定数管理表22を復元する。なお、複数の分岐が実行可能とは、Yesの分岐条件とNoの分岐条件とが共に充足可能であることをいう。充足可能性は、例えば、SMT(SAT Modulo Theory)ソルバを用いて判定される。
As shown in FIG. 4, when the instruction statement being processed is a path branch statement and a plurality of branches can be executed, the constant
シンボリック実行の処理の順番で、定数関係制御部14は、上記処理を行う。
The constant
処理中の命令文が「IF (数値 NOT=中継)?」(図18Aが示すプログラムDの34行目)であるときの上記処理を説明する。定数関係制御部14は、処理中の命令文がパス分岐文(IF文)であり、且つ複数の分岐が実行可能であるので、当該命令文(IF文)と関連付けて定数管理表22を保存する(<1>)。
The above processing when the instruction statement being processed is “IF (numerical value NOT = relay)?” (
処理中の命令文が「EXIT PROGRAM」(図18Aが示すプログラムDの38行目)であるときの上記処理を説明する。定数関係制御部14は、処理中の命令文がパスの終点であるので、当該命令文(EXIT文)と関連付けて定数管理表22を保存する(<2>)。
The above processing when the instruction statement being processed is “EXIT PROGRAM” (line 38 of the program D shown in FIG. 18A) will be described. Since the instruction statement being processed is the end point of the path, the constant
そして、定数関係制御部14は、定数管理表22を保存したパス分岐までパスをバックトラックすると(図18Aが示すプログラムDの34行目)、このパス分岐文(IF文)で保存した定数管理表22を復元する(<3>)。
Then, when the constant
処理中の命令文が「IF (場所=大阪 OR 名古屋 OR 福岡)?」(図18Aが示すプログラムDの40行目)であるときの上記処理を説明する。定数関係制御部14は、処理中の命令文がパス分岐文(IF文)であり、且つ複数の分岐が実行可能であるので、当該命令文(IF文)と関連付けて定数管理表22を保存する(<4>)。
The above processing when the instruction statement being processed is “IF (location = Osaka OR Nagoya OR Fukuoka)?” (Line 40 of program D shown in FIG. 18A) will be described. Since the instruction statement being processed is a path branch statement (IF statement) and a plurality of branches can be executed, the constant
処理中の命令文が「EXIT PROGRAM」(図18Aが示すプログラムDの51行目)であるときの上記処理を説明する。定数関係制御部14は、処理中の命令文がパスの終点であるので、当該命令文(EXIT文)と関連付けて定数管理表22を保存する(<5>)。
The above processing when the instruction statement being processed is “EXIT PROGRAM” (line 51 of the program D shown in FIG. 18A) will be described. Since the instruction statement being processed is the end point of the path, the constant
そして、定数関係制御部14は、定数管理表22を保存したパス分岐までパスをバックトラックすると(図18Aが示すプログラムDの38行目)、このパス分岐文(IF文)で保存した定数管理表22を復元する(<6>)。
Then, when the constant
[定数情報追加部の動作の一例]
図5Aおよび図5Bは、実施例に係る定数情報追加部の動作の一例を示す図である。なお、図5Aで示すフローチャートは、図18Aで示したプログラムDの処理の流れを示す。また、破線は、シンボリック実行の処理の順番を示す。
[Example of operation of constant information addition part]
5A and 5B are diagrams showing an example of the operation of the constant information addition unit according to the embodiment. The flowchart shown in FIG. 5A shows the processing flow of the program D shown in FIG. 18A. The broken line indicates the order of processing of symbolic execution.
図5Aに示すように、定数情報追加部15は、シンボリック実行の処理がパス条件の記録処理である場合には、以下の処理を行う。 As shown in FIG. 5A, the constant information addition unit 15 performs the following processing when the processing of the symbolic execution is the recording processing of the path condition.
一例として、処理中の命令文が「IF (数値 NOT=中継)?」(図18Aが示すプログラムDの34行目)であるときに行われる。定数情報追加部15は、パス条件と、パス条件に該当する条件分岐文の条件式とを取得する。ここでは、パス条件として「(数値 NOT=1)」が取得される。パス条件に該当する条件分岐文の条件式として「(数値 NOT=中継)」が取得される。
As an example, it is performed when the instruction statement being processed is "IF (numerical value NOT = relay)?" (
そして、定数情報追加部15は、パス条件の変数の変数名が、このパス条件に該当する条件分岐文に対応付けられた定数管理表22の更新変数の変数名にある場合には、この更新変数の変数名に対応する定数名(定数情報)をパス条件の定数値に追加する。ここでは、定数管理表22には、更新変数の変数名が「エラー」である場合に、参照変数の定数名として「無問題」が設定されている。更新変数の変数名が「中継」である場合に、参照変数の定数名として「基準」が設定されている。すると、定数情報追加部15は、パス条件の変数の変数名「中継」が定数管理表22の更新変数の変数名にあるので、更新変数の変数名「中継」に対応する定数名「基準」を取得する。そして、定数情報追加部15は、更新変数の変数名「中継」に対応する定数名「基準」をパス条件の定数値「1」に追加する。すなわち、新たなパス条件は、「(数値 NOT=基準#13c_1)」となる。なお、「#」の後の数は、プログラム21上に定数名「基準」の定義が記述された行数を示す。すなわち、定数名「基準」は、13行目に記述されている。 Then, when the variable name of the variable of the path condition is in the variable name of the update variable of the constant management table 22 associated with the conditional branch statement corresponding to this path condition, the constant information addition unit 15 updates this. Add the constant name (constant information) corresponding to the variable name of the variable to the constant value of the path condition. Here, in the constant management table 22, when the variable name of the update variable is "error", "no problem" is set as the constant name of the reference variable. When the variable name of the update variable is "relay", "reference" is set as the constant name of the reference variable. Then, in the constant information addition unit 15, since the variable name "relay" of the variable of the path condition is in the variable name of the update variable in the constant management table 22, the constant name "reference" corresponding to the variable name "relay" of the update variable To get. Then, the constant information addition unit 15 adds the constant name "reference" corresponding to the variable name "relay" of the update variable to the constant value "1" of the path condition. That is, the new path condition is "(numerical value NOT = reference # 13c_1)". The number after "#" indicates the number of lines in which the definition of the constant name "reference" is described on the program 21. That is, the constant name "reference" is described on the 13th line.
また、定数情報追加部15は、シンボリック実行の処理がパス出力の記録処理である場合には、以下の処理を行う。 Further, the constant information addition unit 15 performs the following processing when the processing of the symbolic execution is the recording processing of the path output.
一例として、処理中の命令文が「EXIT PROGRAM」(図18Aが示すプログラムDの36行目)であるときに行われる。定数情報追加部15は、パス出力を取得する。ここでは、パス出力として「結果=1;エラー=3」が取得される。
As an example, it is performed when the instruction statement being processed is "EXIT PROGRAM" (
そして、定数情報追加部15は、パス出力の左辺の変数の変数名が、パス出力の命令文に対応付けられた定数管理表22の更新変数の変数名にある場合には、更新変数の変数名に対応する定数名(定義情報)をパス出力の定数値に追加する。ここでは、定数管理表22には、更新変数の変数名が「エラー」である場合に、参照変数の定数名として「基準違い」が設定されている。更新変数の変数名が「中継」である場合に、参照変数の定数名として「基準」が設定されている。更新変数の変数名が「中継B」である場合に、参照変数の定数名として「NG」が設定されている。更新変数の変数名が「結果」である場合に、参照変数の定数名として「NG」が設定されている。すると、定数情報追加部15は、パス出力の左辺の変数「結果」が定数管理表22の更新変数の変数名にあるので、更新変数の変数名「結果」に対応する定数名「NG」を取得する。そして、定数情報追加部15は、更新変数の変数名「結果」に対応する定数名「NG」をパス出力の定数値「1」に追加する。同様に、定数情報追加部15は、パス出力の左辺の変数「エラー」が定数管理表22の更新変数の変数名にあるので、更新変数の変数名「エラー」に対応する定数名「基準違い」を取得する。そして、定数情報追加部15は、更新変数の変数名「エラー」に対応する定数名「基準違い」をパス出力の定数値「3」に追加する。すなわち、新たなパス出力は、「(結果=NGc_1;エラー=基準違い#26c_3)」となる。なお、「#」の後の数は、プログラム21上に定数名「基準違い」の定義が記述された行数を示す。すなわち、定数名「基準違い」は、26行目に記述されている。 Then, when the variable name of the variable on the left side of the path output is in the variable name of the update variable in the constant management table 22 associated with the statement of the path output, the constant information addition unit 15 is the variable of the update variable. Add the constant name (definition information) corresponding to the name to the constant value of the path output. Here, in the constant management table 22, when the variable name of the update variable is "error", "difference in reference" is set as the constant name of the reference variable. When the variable name of the update variable is "relay", "reference" is set as the constant name of the reference variable. When the variable name of the update variable is "relay B", "NG" is set as the constant name of the reference variable. When the variable name of the update variable is "result", "NG" is set as the constant name of the reference variable. Then, since the variable "result" on the left side of the path output is in the variable name of the update variable in the constant management table 22, the constant information addition unit 15 sets the constant name "NG" corresponding to the variable name "result" of the update variable. get. Then, the constant information addition unit 15 adds the constant name "NG" corresponding to the variable name "result" of the update variable to the constant value "1" of the path output. Similarly, in the constant information addition unit 15, since the variable "error" on the left side of the path output is in the variable name of the update variable in the constant management table 22, the constant name "criteria difference" corresponding to the variable name "error" of the update variable To get. Then, the constant information addition unit 15 adds the constant name "reference difference" corresponding to the variable name "error" of the update variable to the constant value "3" of the path output. That is, the new path output is "(result = NGc_1; error = reference difference # 26c_3)". The number after "#" indicates the number of lines in which the definition of the constant name "difference in reference" is described on the program 21. That is, the constant name "difference in reference" is described on the 26th line.
そして、定数情報追加部15は、新たに置換したパス条件およびパス出力を出力する。 Then, the constant information addition unit 15 outputs the newly replaced path condition and path output.
つまり、図5Bに示すように、定数情報追加部15は、パスごとのパス条件及びパス出力を含むシンボリック実行結果23´と、パスごとの定数管理表22とを用いて、定数名(定数情報)を定数値に追加したシンボリック実行結果23を生成する。そして、定数情報追加部15は、符号23´を符号23に置換したパス条件およびパス出力を出力する。これにより、定数情報追加部15は、シンボリック実行結果23の可読性の向上を図ることができる。
That is, as shown in FIG. 5B, the constant information addition unit 15 uses the constant name (constant information) using the symbolic execution result 23'including the path condition and the path output for each path and the constant management table 22 for each path. ) Is added to the constant value to generate the
[定数情報解釈部の動作の一例]
図6は、実施例に係る定数情報解釈部の動作の一例を示す図である。なお、図6では、図5Bで示したシンボリック実行結果23のNo3のパス条件について、定数情報解釈部17の動作を説明する。
[Example of operation of constant information interpretation unit]
FIG. 6 is a diagram showing an example of the operation of the constant information interpretation unit according to the embodiment. Note that FIG. 6 describes the operation of the constant information interpretation unit 17 with respect to the path condition of No. 3 of the
図6に示すように、定数情報解釈部17は、入力として、シンボリック実行結果23からNo3の、定数情報を追加したパス条件を取得する。ここでは、No3の、定数情報を追加したパス条件は、「((数値#7=‘基準#13c_1’)AND(場所#6NOT=‘大阪#16c_2’)AND(場所#6NOT=‘名古屋#17c_3’)AND(場所#6NOT=‘福岡#18c_4’)AND(場所#6=‘東京#15c_1’))」である。
As shown in FIG. 6, the constant information interpretation unit 17 acquires the path condition to which the constant information is added, which is No. 3 from the
すると、定数情報解釈部17は、パス条件の比較条件ごとに、比較条件の変数が定数情報を追加したものであるか否かを判定する。そして、定数情報解釈部17は、比較条件の変数が定数情報を追加したものである場合には、元の比較条件に戻し、対応関係を記録する。ここでは、比較条件が「数値#7=‘基準#13c_1’」である場合には、比較条件の変数「1」が定数情報「基準」を追加したものであるので、定数情報解釈部17は、この比較条件を元の比較条件「数値#7=1」に戻す。そして、定数情報解釈部17は、置換前「数値#7=‘基準#13c_1’」と置換後「数値#7=1」とを対応関係に記録する。置換前が、定数情報を追加した変数を持つ比較条件である。置換後が、定数情報が除外された元の比較条件である。
Then, the constant information interpretation unit 17 determines whether or not the variable of the comparison condition is the one to which the constant information is added for each comparison condition of the path condition. Then, when the variable of the comparison condition is the one to which the constant information is added, the constant information interpretation unit 17 returns to the original comparison condition and records the correspondence. Here, when the comparison condition is "
同様に、比較条件が「場所#6NOT=‘大阪#16c_2’」である場合には、比較条件の変数「2」が定数情報「大阪」を追加したものであるので、定数情報解釈部17は、この比較条件を元の比較条件「場所#6NOT=2」に戻す。そして、定数情報解釈部17は、置換前と置換後とを対応関係に記録する。
Similarly, when the comparison condition is "location # 6NOT ='Osaka # 16c_2'", the variable "2" of the comparison condition is the one to which the constant information "Osaka" is added, so that the constant information interpretation unit 17 , This comparison condition is returned to the original comparison condition "
同様に、定数情報解釈部17は、定数情報を追加したパス条件に比較条件がなくなるまで、処理を繰り返す。この結果、定数情報解釈部17は、対応関係の置換後の比較条件を用いて、元のパス条件を取得する。ここでは、No3の元のパス条件は、「((数値#7=1)AND(場所#6NOT=2)AND(場所#6NOT=3)AND(場所#6NOT=4)AND(場所#6=1))」となる。
Similarly, the constant information interpretation unit 17 repeats the process until there is no comparison condition in the path condition to which the constant information is added. As a result, the constant information interpretation unit 17 acquires the original path condition by using the comparison condition after the replacement of the correspondence. Here, the original path condition of No3 is "((
そして、条件簡約化部18は、取得したパス条件を簡約化する。ここでは、No3の元のパス条件は、「((数値#7=1)AND(場所#6=1))」と簡約化される。すなわち、数値#7が1であるとき、場所#6が2でなく3でなく4でなく1であるパス条件は、「数値#7が1であり、且つ、場所#6が1である」と簡約化される。
Then, the condition simplification unit 18 simplifies the acquired path condition. Here, the original path condition of No. 3 is simplified as "((
そして、定数情報解釈部17は、対応関係を用いて、条件簡約化部18によって簡約化されたパス条件の中の比較条件ごとに、比較条件の変数を、定数情報を追加したものに戻す。ここでは、定数情報解釈部17は、対応関係を用いて、簡約化されたパス条件の中の比較条件「(数値#7=1)」を「(数値#7=‘基準#13c_1’)」に戻す。定数情報解釈部17は、対応関係を用いて、簡約化されたパス条件の中の比較条件「(場所#6=1)」を「(場所#6=‘東京#15c_1’)」に戻す。
Then, the constant information interpretation unit 17 returns the variable of the comparison condition to the one to which the constant information is added for each comparison condition in the path condition reduced by the condition simplification unit 18 by using the correspondence relationship. Here, the constant information interpretation unit 17 uses the correspondence relationship to change the comparison condition "(
そして、定数情報解釈部17は、定数情報を追加した新たなパス条件を出力する。ここでは、No3の、定数情報を追加した新たなパス条件は、「((数値#7=‘基準#13c_1’)AND(場所#6=‘東京#15c_1’))」となる。
Then, the constant information interpretation unit 17 outputs a new path condition to which the constant information is added. Here, the new path condition of No. 3 to which the constant information is added is "((
このようにして、定数情報解釈部17は、図5Bで示したシンボリック実行結果23のそれぞれのパス条件を簡約化すれば良い。
In this way, the constant information interpretation unit 17 may simplify the path conditions of the
なお、パス条件を簡約化したシンボリック実行結果23が整理されたロジック表24が、図7である。図7は、実施例に係るロジック表の一例を示す図である。図7に示すように、ロジック表24は、定数値が適切に定数名(定数情報)を追加したものに置き換えられている。したがって、ロジック表24は、参考例で示したロジック表(図18B参照)と比較すると、可読性を向上させることができる。
FIG. 7 is a logic table 24 in which the
[分析処理のフローチャート]
次に、実施例に係る分析処理のフローチャートの一例を、図8〜図13を参照して説明する。
[Flowchart of analysis process]
Next, an example of the flowchart of the analysis process according to the embodiment will be described with reference to FIGS. 8 to 13.
図8は、実施例に係る分析処理のフローチャートの一例を示す図である。図8に示すように、分析処理は、シンボリック実行で分析するプログラム21を読み込んだものとする。 FIG. 8 is a diagram showing an example of a flowchart of the analysis process according to the embodiment. As shown in FIG. 8, in the analysis process, it is assumed that the program 21 to be analyzed by symbolic execution is read.
図8に示すように、分析処理は、プログラム21から、シンボリック実行で分析する命令文を抽出する(ステップS11)。 As shown in FIG. 8, the analysis process extracts a statement to be analyzed by symbolic execution from the program 21 (step S11).
分析処理は、抽出した命令文について、定数判定部12によって処理される定数判定処理を実行する(ステップS12)。なお、定数判定処理のフローチャートは、後述する。分析処理は、定数関係記録部13によって処理される定数関係記録処理を実行する(ステップS13)。なお、定数関係記録処理のフローチャートは、後述する。分析処理は、定数関係制御部14によって処理される定数関係制御処理を実行する(ステップS14)。なお、定数関係制御処理のフローチャートは、後述する。分析処理は、定数情報追加部15によって処理される定数情報追加処理を実行する(ステップS15)。なお、定数情報追加処理のフローチャートは、後述する。分析処理は、定数情報解釈部17によって処理される定数情報解釈処理を実行する(ステップS16)。なお、定数情報解釈処理のフローチャートは、後述する。
In the analysis process, the constant determination process processed by the constant determination unit 12 is executed for the extracted instruction statement (step S12). The flowchart of the constant determination process will be described later. The analysis process executes the constant relationship recording process processed by the constant relationship recording unit 13 (step S13). The flowchart of the constant relation recording process will be described later. In the analysis process, the constant relationship control process processed by the constant
分析処理は、命令文は最終であるか否かを判定する(ステップS17)。命令文が最終でないと判定した場合には(ステップS17;No)、分析処理は、次の命令文を抽出すべく、ステップS11に移行する。一方、命令文が最終であると判定した場合には(ステップS17;Yes)、分析処理は、プロセスを終了する。 The analysis process determines whether or not the instruction statement is final (step S17). If it is determined that the instruction statement is not final (step S17; No), the analysis process proceeds to step S11 in order to extract the next instruction statement. On the other hand, when it is determined that the instruction statement is final (step S17; Yes), the analysis process ends the process.
[定数判定処理のフローチャート]
図9は、実施例に係る定数判定処理のフローチャートの一例を示す図である。なお、図9では、更新文を転記命令として記載する。
[Flowchart of constant determination processing]
FIG. 9 is a diagram showing an example of a flowchart of the constant determination process according to the embodiment. In FIG. 9, the update sentence is described as a posting command.
図9に示すように、定数判定部12は、シンボリック実行で分析中の命令文を受け取る(ステップS21)。定数判定部12は、命令文が変数の転記命令であるか否かを判定する(ステップS22)。命令文が変数の転記命令であると判定した場合には(ステップS22;Yes)、定数判定部12は、命令文の参照変数を取得する(ステップS23)。一例として、命令文が「MOVE 無問題 TO エラー」である場合には、命令文は転記命令である。命令文の参照変数として「無問題」が取得される。 As shown in FIG. 9, the constant determination unit 12 receives the instruction statement being analyzed by symbolic execution (step S21). The constant determination unit 12 determines whether or not the instruction statement is a variable transcription instruction (step S22). When it is determined that the instruction statement is a variable transcription instruction (step S22; Yes), the constant determination unit 12 acquires the reference variable of the instruction statement (step S23). As an example, if the statement is "MOVE no problem TO error", then the statement is a transcription instruction. "No problem" is acquired as a reference variable of the statement.
そして、定数判定部12は、参照変数が定数であるか否かを判定する(ステップS24)。参照変数が定数であると判定した場合には(ステップS24;Yes)、定数判定部12は、参照変数が定数である旨を示す「1」を出力する(ステップS25)。例えば、定数判定部12は、参照変数の名前がプログラム21の定数の定義に含まれている場合には、参照変数が定数であると判断し、「1」を出力する。そして、定数判定部12は、定数判定処理を終了する。 Then, the constant determination unit 12 determines whether or not the reference variable is a constant (step S24). When it is determined that the reference variable is a constant (step S24; Yes), the constant determination unit 12 outputs "1" indicating that the reference variable is a constant (step S25). For example, when the name of the reference variable is included in the definition of the constant in the program 21, the constant determination unit 12 determines that the reference variable is a constant and outputs "1". Then, the constant determination unit 12 ends the constant determination process.
一方、参照変数が定数でないと判定した場合には(ステップS24;No)、定数判定部12は、参照変数に初期値があるか否かを判定する(ステップS26)。参照変数に初期値がある場合とは、例えば、参照変数がプログラム21上の作業変数の定義に含まれ、且つ、作業変数の定義に初期値がある場合のことをいう。参照変数に初期値があると判定した場合には(ステップS26;Yes)、定数判定部12は、参照変数に初期値がある旨を示す「2」を出力する(ステップS27)。そして、定数判定部12は、定数判定処理を終了する。 On the other hand, when it is determined that the reference variable is not a constant (step S24; No), the constant determination unit 12 determines whether or not the reference variable has an initial value (step S26). The case where the reference variable has an initial value means, for example, the case where the reference variable is included in the definition of the work variable on the program 21 and the definition of the work variable has the initial value. When it is determined that the reference variable has an initial value (step S26; Yes), the constant determination unit 12 outputs "2" indicating that the reference variable has an initial value (step S27). Then, the constant determination unit 12 ends the constant determination process.
一方、参照変数に初期値がないと判定した場合には(ステップS26;No)、定数判定部12は、参照変数が定数管理表22に管理された変数であるか否かを判定する(ステップS28)。参照変数が定数管理表22に管理された変数であると判定した場合には(ステップS28;Yes)、定数判定部12は、参照変数が定数管理表に管理された変数である旨を示す「3」を出力する(ステップS29)。そして、定数判定部12は、定数判定処理を終了する。 On the other hand, when it is determined that the reference variable has no initial value (step S26; No), the constant determination unit 12 determines whether or not the reference variable is a variable managed in the constant management table 22 (step). S28). When it is determined that the reference variable is a variable managed in the constant management table 22 (step S28; Yes), the constant determination unit 12 indicates that the reference variable is a variable managed in the constant management table. 3 ”is output (step S29). Then, the constant determination unit 12 ends the constant determination process.
一方、参照変数が定数管理表22に管理された変数でないと判定した場合には(ステップS28;No)、定数判定部12は、ステップS30に移行する。また、命令文が変数の転記命令でないと判定した場合には(ステップS22;No)、定数判定部12は、ステップS30に移行する。ステップS30において、定数判定部12は、「0」を出力する(ステップS30)。そして、定数判定部12は、定数判定処理を終了する。 On the other hand, when it is determined that the reference variable is not a variable managed in the constant management table 22 (step S28; No), the constant determination unit 12 shifts to step S30. If it is determined that the instruction statement is not a variable transcription instruction (step S22; No), the constant determination unit 12 proceeds to step S30. In step S30, the constant determination unit 12 outputs "0" (step S30). Then, the constant determination unit 12 ends the constant determination process.
[定数関係記録処理のフローチャート]
図10は、実施例に係る定数関係記録処理のフローチャートの一例を示す図である。
[Flowchart of constant relation recording process]
FIG. 10 is a diagram showing an example of a flowchart of the constant relation recording process according to the embodiment.
図10に示すように、定数関係記録部13は、定数判定部12から、転記命令の命令文および定数判定処理の出力を受け取る(ステップS41)。定数関係記録部13は、出力が「0」であるか否かを判定する(ステップS42)。出力が「0」であると判定した場合には(ステップS42;Yes)、定数関係記録部13は、定数関係記録処理を終了する。 As shown in FIG. 10, the constant relationship recording unit 13 receives the instruction statement of the posting command and the output of the constant determination process from the constant determination unit 12 (step S41). The constant relationship recording unit 13 determines whether or not the output is “0” (step S42). When it is determined that the output is "0" (step S42; Yes), the constant relation recording unit 13 ends the constant relation recording process.
出力が「0」でないと判定した場合には(ステップS42;No)、定数関係記録部13は、出力が「1」または「2」であるか否かを判定する(ステップS43)。出力が「1」または「2」であると判定した場合には(ステップS43;Yes)、定数関係記録部13は、更新変数をKeyとし、定数管理表22にKeyが既存ならば、更新変数に対する定数値を更新する。定数関係記録部13は、更新変数をKeyとし、定数管理表22にKeyが既存でないなら、更新変数をKeyとし、定数名を参照変数の定数名とする定数関係を定数管理表22に追加する(ステップS44)。一例として、図3で示した行番号32の転記命令の命令文の場合には、定数関係記録部13は、更新変数を「エラー」とし、定数名を「無問題」とする定数関係を定数管理表22に追加する。一例として、図3で示した行番号35の転記命令の命令文の場合には、定数関係記録部13は、定数管理表22に更新変数「エラー」が既存であるので、更新変数「エラー」に対する定数値を「基準違い」に更新する。そして、定数関係記録部13は、定数関係記録処理を終了する。
When it is determined that the output is not "0" (step S42; No), the constant relationship recording unit 13 determines whether or not the output is "1" or "2" (step S43). When it is determined that the output is "1" or "2" (step S43; Yes), the constant relation recording unit 13 sets the update variable to Key, and if Key already exists in the constant management table 22, the update variable is set. Update the constant value for. The constant relationship recording unit 13 adds a constant relationship to the constant management table 22 in which the update variable is set to Key and the update variable is set to Key and the constant name is the constant name of the reference variable if the key does not already exist in the constant management table 22. (Step S44). As an example, in the case of the instruction statement of the transfer instruction of
一方、出力が「1」および「2」でないと判定した場合には(ステップS43;No)、定数関係記録部13は、出力が「3」であるか否かを判定する(ステップS45)。出力が「3」であると判定した場合には(ステップS45;Yes)、定数関係記録部13は、参照変数をKeyとし、定数管理表22からKeyに対する定数値を取得する。定数関係記録部13は、更新変数および取得した定数値を定数管理表22に追加する(ステップS46)。一例として、図3で示した行番号37の転記命令の命令文の場合には、定数関係記録部13は、参照変数を「中継2」として、定数管理表22から「中継2」に対する定数値「NG」を取得する。定数関係季肋部13は、更新変数を「出力」とし、定数名を「NG」とする定数関係を定数管理表22に追加する。そして、定数関係記録部13は、定数関係記録処理を終了する。
On the other hand, when it is determined that the output is not "1" and "2" (step S43; No), the constant relation recording unit 13 determines whether or not the output is "3" (step S45). When it is determined that the output is "3" (step S45; Yes), the constant relation recording unit 13 sets the reference variable to Key and acquires the constant value for Key from the constant management table 22. The constant relation recording unit 13 adds the update variable and the acquired constant value to the constant management table 22 (step S46). As an example, in the case of the instruction statement of the transfer instruction of
一方、出力が「3」でないと判定した場合には(ステップS45;No)、定数関係記録部13は、定数関係記録処理を終了する。 On the other hand, when it is determined that the output is not "3" (step S45; No), the constant-related recording unit 13 ends the constant-related recording process.
[定数関係制御処理のフローチャート]
図11は、実施例に係る定数関係制御処理のフローチャートの一例を示す図である。
[Flowchart of constant relationship control processing]
FIG. 11 is a diagram showing an example of a flowchart of the constant relationship control process according to the embodiment.
図11に示すように、定数関係制御部14は、シンボリック実行で分析中の命令を受け取る(ステップS51)。定数関係制御部14は、命令文があるか否かを判定する(ステップS52)。命令文がないと判定した場合には(ステップS52;No)、定数関係制御部14は、定数関係制御処理を終了する。
As shown in FIG. 11, the constant
一方、命令文があると判定した場合には(ステップS52;Yes)、定数関係制御部14は、命令文が条件分岐文、且つ、複数の分岐が実行可能であるか否かを判定する(ステップS53)。なお、複数の分岐が実行可能とは、Yesの分岐条件とNoの分岐条件とが共に充足可能であることをいう。充足可能性は、例えば、SMTソルバを用いて判定される。
On the other hand, when it is determined that there is an instruction statement (step S52; Yes), the constant
命令文が条件分岐文、且つ、複数の分岐が実行可能であると判定した場合には(ステップS53;Yes)、定数関係制御部14は、定数管理表22を、受け取った命令文と関連付けて保存する(ステップS54)。一例として、図4で示した<1>や<4>に対応する。そして、定数関係制御部14は、次の命令文を受け取るべく、ステップS51に移行する。
When it is determined that the instruction statement is a conditional branch statement and a plurality of branches can be executed (step S53; Yes), the constant
一方、命令文が条件分岐文、且つ、複数の分岐が実行可能でないと判定した場合には(ステップS53;No)、定数関係制御部14は、命令文がパスの最後であるか否かを判定する(ステップS55)。命令文がパスの最後であると判定した場合には(ステップS55;Yes)、定数関係制御部14は、定数管理表22を保存した分岐命令文までパスをバックトラックする。定数関係制御部14は、定数管理表22を保存してあったものに置き換える(ステップS56)。一例として、図4で示した<2>および<3>や<5>および<6>に対応する。そして、定数関係制御部14は、次の命令文を受け取るべく、ステップS51に移行する。
On the other hand, when it is determined that the instruction statement is a conditional branch statement and a plurality of branches cannot be executed (step S53; No), the constant
一方、命令文がパスの最後でないと判定した場合には(ステップS55;No)、定数関係制御部14は、次の命令文を受け取るべく、ステップS51に移行する。
On the other hand, when it is determined that the instruction statement is not the end of the path (step S55; No), the constant
[定数情報追加処理のフローチャート]
図12は、実施例に係る定数情報追加処理のフローチャートの一例を示す図である。
[Flowchart of constant information addition processing]
FIG. 12 is a diagram showing an example of a flowchart of the constant information addition process according to the embodiment.
図12に示すように、定数情報追加部15は、プログラム21から定数の定義情報を取得する(ステップS61)。定数情報追加部15は、シンボリック実行の処理を取得する(ステップS62)。定数情報追加部15は、処理がパス条件の記録処理であるか否かを判定する(ステップS63)。 As shown in FIG. 12, the constant information addition unit 15 acquires constant definition information from the program 21 (step S61). The constant information addition unit 15 acquires the symbolic execution process (step S62). The constant information addition unit 15 determines whether or not the process is a path condition recording process (step S63).
処理がパス条件の記録処理であると判定した場合には(ステップS63;Yes)、定数情報追加部15は、条件分岐文の条件とパス条件とを取得する(ステップS64)。例えば、条件分岐文の条件は、命令文から取得すれば良い。パス条件は、シンボリック実行の処理結果(図5Bで示したシンボリック実行結果23´のパス条件)を取得すれば良い。 When it is determined that the process is the path condition recording process (step S63; Yes), the constant information addition unit 15 acquires the condition of the conditional branch statement and the path condition (step S64). For example, the condition of the conditional branch statement may be obtained from the statement statement. As the path condition, the processing result of the symbolic execution (the path condition of the symbolic execution result 23'shown in FIG. 5B) may be acquired.
そして、定数情報追加部15は、パス条件の変数が定数管理表22のKeyにあるか否かを判定する(ステップS65)。例えば、定数情報追加部15は、パス条件の変数の変数名が、このパス条件に該当する条件分岐文に対応付けられた定数管理表22の更新変数の変数名(Key)にあるか否かを判定する。 Then, the constant information addition unit 15 determines whether or not the variable of the path condition is in the Key of the constant management table 22 (step S65). For example, the constant information addition unit 15 determines whether or not the variable name of the variable of the path condition is in the variable name (Key) of the update variable of the constant management table 22 associated with the conditional branch statement corresponding to this path condition. To judge.
パス条件の変数が定数管理表22のKeyにあると判定した場合には(ステップS65;Yes)、定数情報追加部15は、変数に該当するパス条件の定数値に定数情報および定数情報が記述された行数を追加する(ステップS66)、行数は、定数の定義情報から取得されれば良い。例えば、定数情報追加部15は、パス条件の変数の変数名が、このパス条件に該当する条件分岐文に対応付けられた定数管理表22の更新変数の変数名にある場合には、この更新変数の変数名に対応する定数名(定数情報)をパス条件の定数値に追加する。一例として、図5Aで示した<1>に対応する。そして、定数情報追加部15は、次のシンボリック実行の処理を取得すべく、ステップS62に移行する。 When it is determined that the variable of the path condition is in the Key of the constant management table 22 (step S65; Yes), the constant information addition unit 15 describes the constant information and the constant information in the constant value of the path condition corresponding to the variable. The number of rows is added (step S66), and the number of rows may be obtained from the definition information of the constant. For example, when the variable name of the variable of the path condition is in the variable name of the update variable of the constant management table 22 associated with the conditional branch statement corresponding to this path condition, the constant information addition unit 15 updates this. Add the constant name (constant information) corresponding to the variable name of the variable to the constant value of the path condition. As an example, it corresponds to <1> shown in FIG. 5A. Then, the constant information addition unit 15 proceeds to step S62 in order to acquire the next symbolic execution process.
一方、パス条件の変数が定数管理表22のKeyにないと判定した場合には(ステップS65;No)、定数情報追加部15は、次のシンボリック実行の処理を取得すべく、ステップS62に移行する。 On the other hand, when it is determined that the variable of the path condition is not in the Key of the constant management table 22 (step S65; No), the constant information addition unit 15 shifts to step S62 in order to acquire the next symbolic execution process. do.
ステップS63において、処理がパス条件の記録処理でないと判定した場合には(ステップS63;No)、定数情報追加部15は、処理がパス出力の記録処理であるか否かを判定する(ステップS67)。 If it is determined in step S63 that the process is not the path condition recording process (step S63; No), the constant information addition unit 15 determines whether or not the process is the path output recording process (step S67). ).
処理がパス出力の記録処理であると判定した場合には(ステップS67;Yes)、定数情報追加部15は、パス出力を取得する(ステップS68)。例えば、パス出力は、シンボリック実行の処理結果(図5Bで示したシンボリック実行結果23´のパス出力)を取得すれば良い。 When it is determined that the process is the path output recording process (step S67; Yes), the constant information addition unit 15 acquires the path output (step S68). For example, as the path output, the processing result of the symbolic execution (the path output of the symbolic execution result 23'shown in FIG. 5B) may be acquired.
そして、定数情報追加部15は、パス出力の左辺の変数が定数管理表22のKeyにあるか否かを判定する(ステップS69)。例えば、定数情報追加部15は、パス出力の左辺の変数の変数名が、パス出力の命令文に対応付けられた定数管理表22の更新変数の変数名にあるか否かを判定する。 Then, the constant information addition unit 15 determines whether or not the variable on the left side of the path output is in the Key of the constant management table 22 (step S69). For example, the constant information addition unit 15 determines whether or not the variable name of the variable on the left side of the path output is in the variable name of the update variable in the constant management table 22 associated with the instruction statement of the path output.
パス出力の左辺の変数が定数管理表22のKeyにあると判定した場合には(ステップS69;Yes)、定数情報追加部15は、左辺の変数に該当するパス出力の右辺の定数値に定数情報および定数情報が記述された行数を追加する(ステップS70)。行数は、定数の定義情報から取得されれば良い。一例として、図5Aで示した<2>に対応する。そして、定数情報追加部15は、次のシンボリック実行の処理を取得すべく、ステップS62に移行する。 When it is determined that the variable on the left side of the path output is in the Key of the constant management table 22 (step S69; Yes), the constant information addition unit 15 sets the constant value on the right side of the path output corresponding to the variable on the left side to a constant. The number of lines in which the information and the constant information are described is added (step S70). The number of lines may be obtained from the definition information of the constant. As an example, it corresponds to <2> shown in FIG. 5A. Then, the constant information addition unit 15 proceeds to step S62 in order to acquire the next symbolic execution process.
一方、パス出力の左辺の変数が定数管理表22のKeyにないと判定した場合には(ステップS69;No)、定数情報追加部15は、次のシンボリック実行の処理を取得すべく、ステップS62に移行する。 On the other hand, when it is determined that the variable on the left side of the path output is not in the Key of the constant management table 22 (step S69; No), the constant information addition unit 15 obtains the next symbolic execution process in step S62. Move to.
ステップS67において、処理がパス出力の記録処理でないと判定した場合には(ステップS67;No)、定数情報追加部15は、処理が終了処理であるか否かを判定する(ステップS71)。処理が終了処理でないと判定した場合には(ステップS71;No)、定数情報追加部15は、次のシンボリック実行の処理を取得すべく、ステップS62に移行する。 If it is determined in step S67 that the process is not the path output recording process (step S67; No), the constant information addition unit 15 determines whether or not the process is the end process (step S71). When it is determined that the process is not the end process (step S71; No), the constant information addition unit 15 proceeds to step S62 in order to acquire the next symbolic execution process.
一方、処理が終了処理であると判定した場合には(ステップS71;Yes)、定数情報追加部15は、定数情報追加処理を終了する。 On the other hand, when it is determined that the process is the end process (step S71; Yes), the constant information addition unit 15 ends the constant information addition process.
[定数情報解釈処理のフローチャート]
図13は、実施例に係る定数情報解釈処理のフローチャートの一例を示す図である。
[Flowchart of constant information interpretation processing]
FIG. 13 is a diagram showing an example of a flowchart of the constant information interpretation process according to the embodiment.
図13に示すように、定数情報解釈部17は、定数情報を追加したパス条件を受け取る(ステップS81)。定数情報解釈部17は、パス条件内の比較条件i(iは、1〜Nの整数)を取得する(ステップS82)。なお、Nは、パス条件内の比較条件の最大数を示す。定数情報解釈部17は、iを1に設定する(ステップS83)。 As shown in FIG. 13, the constant information interpretation unit 17 receives the path condition to which the constant information is added (step S81). The constant information interpretation unit 17 acquires the comparison condition i (i is an integer of 1 to N) in the path condition (step S82). Note that N indicates the maximum number of comparison conditions in the path condition. The constant information interpretation unit 17 sets i to 1 (step S83).
定数情報解釈部17は、iがN以下であるか否かを判定する(ステップS84)。iがN以下であると判定した場合には(ステップS84;Yes)、定数情報解釈部17は、比較条件iの変数が定数情報を追加した変数であるか否かを判定する(ステップS85)。比較条件iの変数が定数情報を追加した変数でないと判定した場合には(ステップS85;No)、定数情報解釈部17は、ステップS87に移行する。 The constant information interpretation unit 17 determines whether or not i is N or less (step S84). When it is determined that i is N or less (step S84; Yes), the constant information interpreting unit 17 determines whether or not the variable of the comparison condition i is a variable to which constant information is added (step S85). .. When it is determined that the variable of the comparison condition i is not the variable to which the constant information is added (step S85; No), the constant information interpretation unit 17 proceeds to step S87.
一方、比較条件iの変数が定数情報を追加した変数であると判定した場合には(ステップS85;Yes)、定数情報解釈部17は、元の比較条件に戻し、定数情報を追加した変数を持つ比較条件と元の比較条件との対応関係を記録する(ステップS86)。そして、定数情報解釈部17は、ステップS87に移行する。 On the other hand, when it is determined that the variable of the comparison condition i is a variable to which the constant information is added (step S85; Yes), the constant information interpretation unit 17 returns to the original comparison condition and changes the variable to which the constant information is added. The correspondence between the comparison condition and the original comparison condition is recorded (step S86). Then, the constant information interpretation unit 17 proceeds to step S87.
ステップS87において、定数情報解釈部17は、iをインクリメントし(ステップS87)、次の比較条件の処理に遷移すべく、ステップS84に移行する。ステップS84において、定数情報解釈部17は、iがNより大きいと判定した場合には(ステップS84;No)、元のパス条件を復元する(ステップS88)。 In step S87, the constant information interpretation unit 17 increments i (step S87) and shifts to step S84 in order to transition to the processing of the next comparison condition. In step S84, when it is determined that i is larger than N (step S84; No), the constant information interpreting unit 17 restores the original path condition (step S88).
そして、条件簡約化部18は、元のパス条件を簡約化する(ステップS89)。 Then, the condition simplification unit 18 simplifies the original path condition (step S89).
そして、定数情報解釈部17は、簡約化したパス条件内の比較条件j(jは、1〜Mの整数)を取得する(ステップS90)。なお、Mは、パス条件内の比較条件の最大数を示す。定数情報解釈部17は、jを1に設定する(ステップS91)。 Then, the constant information interpretation unit 17 acquires the comparison condition j (j is an integer of 1 to M) in the simplified path condition (step S90). In addition, M represents the maximum number of comparison conditions in a path condition. The constant information interpretation unit 17 sets j to 1 (step S91).
定数情報解釈部17は、jがM以下であるか否かを判定する(ステップS92)。jがM以下であると判定した場合には(ステップS92;Yes)、定数情報解釈部17は、比較条件jが対応関係にあるか否かを判定する(ステップS93)。比較条件jが対応関係にないと判定した場合には(ステップS93;No)、定数情報解釈部17は、ステップS95に移行する。 The constant information interpretation unit 17 determines whether or not j is M or less (step S92). When it is determined that j is M or less (step S92; Yes), the constant information interpreting unit 17 determines whether or not the comparison condition j has a correspondence relationship (step S93). When it is determined that the comparison condition j does not have a correspondence relationship (step S93; No), the constant information interpretation unit 17 proceeds to step S95.
一方、比較条件jが対応関係にあると判定した場合には(ステップS93;Yes)、定数情報解釈部17は、対応関係によって定数情報を追加した比較条件に戻す(ステップS94)。そして、定数情報解釈部17は、ステップS95に移行する。 On the other hand, when it is determined that the comparison condition j has a correspondence relationship (step S93; Yes), the constant information interpretation unit 17 returns to the comparison condition to which the constant information is added according to the correspondence relationship (step S94). Then, the constant information interpretation unit 17 shifts to step S95.
ステップS95において、定数情報解釈部17は、jをインクリメントし(ステップS95)、次の比較条件の処理に遷移すべく、ステップS92に移行する。ステップS92において、定数情報解釈部17は、jがMより大きいと判定した場合には(ステップS92;No)、定数情報解釈処理を終了する。 In step S95, the constant information interpretation unit 17 increments j (step S95) and shifts to step S92 in order to transition to the processing of the next comparison condition. In step S92, when it is determined that j is larger than M (step S92; No), the constant information interpretation unit 17 ends the constant information interpretation process.
[実施例の効果]
上記実施例によれば、情報処理装置1は、プログラム21を、シンボリック実行を用いて分析する。情報処理装置1は、プログラム21から順次命令文を抽出する。情報処理装置1は、抽出された命令文が変数を更新する更新文である場合に、更新文に含まれる、変数の変数名及び変数を更新する値の意味を示す定数名の関係を定数管理表22に記録する。情報処理装置1は、命令文がパスを分岐する分岐文である場合に、分岐文と定数管理表22とを関連付ける。情報処理装置1は、関連付けられた分岐文と定数管理表22とに基づいて、分岐文に対するシンボリック実行結果23´に含まれる定数値を、定数管理表22に記憶された定数名を含む情報に置換する。かかる構成によれば、情報処理装置1は、同一の値を異なる意味を持つ定数名を有するプログラムであっても、更新文の実行の際に記憶された変数名及び定数名の関係を用いて、シンボリック実行結果23´に含まれる定数値を、定数名を含む情報に置換することで、シンボリック実行結果23の可読性を向上できる。加えて、情報処理装置1は、シンボリック実行結果23を整理したロジック表の可読性を向上できる。この結果、情報処理装置1は、プログラムの理解や使用抽出のための可読性を向上できる。
[Effect of Examples]
According to the above embodiment, the
また、上記実施例によれば、情報処理装置1は、抽出された第1の更新文に含まれる、変数名及び定数名の関係を定数管理表22に記録する。情報処理装置1は、抽出された第2の更新文に含まれる変数名が第1の更新文に含まれる変数名と同じである場合には、変数名に対応付けられた関係の定数名を第2の更新文に含まれる定数名に更新して記録する。かかる構成によれば、情報処理装置1は、命令文に含まれる変数名及び定数名の関係を随時更新することで、命令文を実行している際の当該関係を最新の状態に保持できる。この結果、情報処理装置1は、この関係を用いて、シンボリック実行結果に含まれる定数値を、定数名を含む情報に置換することで、シンボリック実行結果の可読性を向上できる。
Further, according to the above embodiment, the
また、上記実施例によれば、情報処理装置1は、抽出された第1の更新文に含まれる、変数名及び定数名の関係を定数管理表22に記録する。情報処理装置1は、抽出された第2の更新文に含まれる定数名が定数管理表22に変数名として記憶されている場合には、定数管理表22に記憶された変数名に対応付けられた定数名及び第2の更新文に含まれる変数名を追加して記録する。かかる構成によれば、情報処理装置1は、命令文中の参照変数に既に更新された更新変数が使われている場合であっても、更新変数に更新された定数値を示す定数名を追跡でき、この定数名を命令文中の更新変数の変数名と対応付けることができる。
Further, according to the above embodiment, the
また、上記実施例によれば、情報処理装置1は、バックトラック時の分岐文で、分岐文と分岐文を実行する際の定数管理表22を関連付ける。かかる構成によれば、情報処理装置1は、バックトラック時に、分岐文と分岐文を実行する際の関係を関連付けることで、この分岐文から派生する次の条件のパスに関する関係を正確に記録できる。
Further, according to the above embodiment, the
[その他]
なお、上記実施例では、シンボリック実行対象のプログラム21をCobol言語として説明した。しかしながら、シンボリック実行対象のプログラム21は、Cobol言語に限定されず、C言語やJava(登録商標)Scriptであっても良いし、定数値を定数名や変数名で表現するプログラムであれば、いかなる言語であっても良い。
[others]
In the above embodiment, the program 21 to be executed symbolically has been described as a COBOL language. However, the program 21 to be executed symbolically is not limited to the COBOL language, and may be C language or Java (registered trademark) Script, and any program that expresses a constant value by a constant name or a variable name. It may be a language.
また、図示した情報処理装置1の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、情報処理装置1の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、定数情報解釈部17および条件簡約化部18を1つの部として統合しても良い。また、定数情報追加部15を、パス条件に対して定数情報を追加する追加部と、パス出力に対して定数情報を追加する追加部とに分散しても良い。また、記憶部20を情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
Further, each component of the
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図1に示した情報処理装置1と同様の機能を実現する分析プログラムを実行するコンピュータの一例を説明する。図14は、分析プログラムを実行するコンピュータの一例を示す図である。
In addition, the various processes described in the above embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation. Therefore, in the following, an example of a computer that executes an analysis program that realizes the same functions as the
図14に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
As shown in FIG. 14, the
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、分析プログラム205aおよび分析関連情報205bを記憶する。
The
CPU203は、分析プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置1の各機能部に対応する。分析関連情報205bは、プログラム21、定数管理表22、シンボリック実行結果23およびロジック表24に対応する。そして、例えばリムーバブルディスク211が、分析プログラム205aなどの各情報を記憶する。
The
なお、分析プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらから分析プログラム205aを読み出して実行するようにしても良い。
The
1 情報処理装置
10 制御部
11 シンボリック実行部
12 定数判定部
13 定数関係記録部
14 定数関係制御部
15 定数情報追加部
16 パス条件パス出力記録部
17 定数情報解釈部
18 条件簡約部
20 記憶部
21 プログラム
22 定数管理表
23 シンボリック実行結果
24 ロジック表
1 Information processing device 10 Control unit 11 Symbolic execution unit 12 Constant judgment unit 13 Constant
Claims (6)
前記プログラムから順次命令文を抽出する抽出部と、
前記抽出部によって抽出された命令文が変数を更新する更新文である場合に、前記更新文に含まれる、前記変数の変数名及び前記変数を更新する値の意味を示す定数名の関係を記憶部に記録する記録部と、
前記命令文がパスを分岐する分岐文である場合に、前記分岐文と前記関係とを関連付ける関連部と、
前記関連部によって関連付けられた前記分岐文と前記関係とに基づいて、前記分岐文に対するシンボリック実行結果に含まれる定数値を、前記関係に記憶された前記定数名を含む情報に置換する置換部と、
を有することを特徴とする情報処理装置。 An information processing device that analyzes a program using symbolic execution.
An extraction unit that sequentially extracts instruction statements from the program,
When the statement extracted by the extraction unit is an update statement that updates a variable, the relationship between the variable name of the variable and the constant name indicating the meaning of the value for updating the variable included in the update statement is stored. The recording section that records in the section and the recording section
When the statement is a branch statement that branches the path, the related part that associates the branch statement with the relationship and
A replacement unit that replaces a constant value included in the symbolic execution result for the branch statement with information including the constant name stored in the relationship based on the branch statement and the relationship associated with the related unit. ,
An information processing device characterized by having.
前記抽出部によって抽出された第1の更新文に含まれる、変数名及び定数名の関係を前記記憶部に記録し、
前記抽出部によって抽出された第2の更新文に含まれる変数名が前記第1の更新文に含まれる変数名と同じである場合には、前記変数名に対応付けられた関係の定数名を前記第2の更新文に含まれる定数名に更新して記録する
ことを特徴とする請求項1に記載の情報処理装置。 The recording unit
The relationship between the variable name and the constant name included in the first update statement extracted by the extraction unit is recorded in the storage unit.
When the variable name included in the second update statement extracted by the extraction unit is the same as the variable name included in the first update statement, the constant name of the relationship associated with the variable name is used. The information processing apparatus according to claim 1, wherein the constant name included in the second update statement is updated and recorded.
前記抽出部によって抽出された第1の更新文に含まれる、変数名及び定数名の関係を前記記憶部に記録し、
前記抽出部によって抽出された第2の更新文に含まれる定数名が前記関係に変数名として記憶されている場合には、前記関係に記憶された変数名に対応付けられた定数名及び第2の更新文に含まれる変数名を追加して記録する
ことを特徴とする請求項1に記載の情報処理装置。 The recording unit
The relationship between the variable name and the constant name included in the first update statement extracted by the extraction unit is recorded in the storage unit.
When the constant name included in the second update statement extracted by the extraction unit is stored as a variable name in the relationship, the constant name associated with the variable name stored in the relationship and the second The information processing apparatus according to claim 1, wherein the variable names included in the update statement of the above are added and recorded.
バックトラック時の分岐文で、前記分岐文と前記分岐文を実行する際の前記関係を関連付ける
ことを特徴とする請求項1に記載の情報処理装置。 The related part is
The information processing apparatus according to claim 1, wherein the branch statement at the time of backtracking associates the branch statement with the relationship when the branch statement is executed.
抽出した命令文が変数を更新する更新文である場合に、前記更新文に含まれる、前記変数の変数名及び前記変数を更新する値の意味を示す定数名の関係を記憶部に記録し、
前記命令文がパスを分岐する分岐文である場合に、前記分岐文と前記関係とを関連付け、
関連付けられた前記分岐文と前記関係とに基づいて、前記分岐文に対するシンボリック実行結果に含まれる定数値を、前記関係に記憶された前記定数名を含む情報に置換する
処理を情報処理装置に実行させる分析プログラム。 Sequentially extract statements from the program to be executed symbolically
When the extracted statement is an update statement that updates a variable, the relationship between the variable name of the variable and the constant name indicating the meaning of the value for updating the variable included in the update statement is recorded in the storage unit.
When the statement is a branch statement that branches the path, the branch statement and the relationship are associated with each other.
Based on the associated branch statement and the relationship, the information processing apparatus executes a process of replacing the constant value included in the symbolic execution result for the branch statement with the information including the constant name stored in the relationship. An analysis program to let you.
前記プログラムから順次命令文を抽出し、
抽出した命令文が変数を更新する更新文である場合に、前記更新文に含まれる、前記変数の変数名及び前記変数を更新する値の意味を示す定数名の関係を記憶部に記録し、
前記命令文がパスを分岐する分岐文である場合に、前記分岐文と前記関係とを関連付け、
関連付けられた前記分岐文と前記関係とに基づいて、前記分岐文に対するシンボリック実行結果に含まれる定数値を、前記関係に記憶された前記定数名を含む情報に置換する
処理を実行することを特徴とする分析方法。 An information processing device that analyzes a program using symbolic execution
Sequentially extract statements from the program
When the extracted statement is an update statement that updates a variable, the relationship between the variable name of the variable and the constant name indicating the meaning of the value for updating the variable included in the update statement is recorded in the storage unit.
When the statement is a branch statement that branches the path, the branch statement and the relationship are associated with each other.
Based on the associated branch statement and the relationship, the process of replacing the constant value included in the symbolic execution result for the branch statement with the information including the constant name stored in the relationship is executed. Analysis method.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017240063A JP6954080B2 (en) | 2017-12-14 | 2017-12-14 | Information processing equipment, analysis programs and analysis methods |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017240063A JP6954080B2 (en) | 2017-12-14 | 2017-12-14 | Information processing equipment, analysis programs and analysis methods |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2019106153A JP2019106153A (en) | 2019-06-27 |
| JP6954080B2 true JP6954080B2 (en) | 2021-10-27 |
Family
ID=67061319
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017240063A Expired - Fee Related JP6954080B2 (en) | 2017-12-14 | 2017-12-14 | Information processing equipment, analysis programs and analysis methods |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6954080B2 (en) |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0816378A (en) * | 1994-06-30 | 1996-01-19 | Fujitsu Ltd | Program reverse analysis method and device |
| JP2000259399A (en) * | 1999-01-04 | 2000-09-22 | Minoru Kano | Source code structure of computer program and machine device wherein object code generated therefrom is built in as control procedure |
| JP2015191492A (en) * | 2014-03-28 | 2015-11-02 | カルソニックカンセイ株式会社 | Variable check method |
| JP6659955B2 (en) * | 2016-05-12 | 2020-03-04 | 富士通株式会社 | Program analysis method, program analysis device, and analysis program |
-
2017
- 2017-12-14 JP JP2017240063A patent/JP6954080B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2019106153A (en) | 2019-06-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112733137B (en) | Binary code similarity analysis method for vulnerability detection | |
| EP3959601A1 (en) | Automatic identification of appropriate code reviewers using machine learning | |
| US20170060590A1 (en) | Branch synthetic generation across multiple microarchitecture generations | |
| JP2020126649A (en) | Automatic discovery of locations of translated text in localized applications | |
| US9563635B2 (en) | Automated recognition of patterns in a log file having unknown grammar | |
| JP6309795B2 (en) | Information processing apparatus, information processing method, and program | |
| JP6486574B2 (en) | Program code generating apparatus, program code generating method, and program code generating program | |
| CN108614692A (en) | Edit model method, apparatus, server and medium | |
| JP6954080B2 (en) | Information processing equipment, analysis programs and analysis methods | |
| CN101617293B (en) | Module creating device, module creating method, module creating program, and recording medium where the program is recorded | |
| Jordan et al. | Autoarx: Digital twins of living architectures | |
| Schlie et al. | Clustering variation points in matlab/simulink models using reverse signal propagation analysis | |
| JP2016051367A (en) | Data analysis apparatus, data analysis method, and program. | |
| Rosiak et al. | Analyzing variability in 25 years of industrial legacy software: an experience report | |
| JP6674048B2 (en) | Judgment device, judgment method and judgment program | |
| JP7839708B2 (en) | Document analysis device and document analysis program | |
| US11301244B1 (en) | Machine learning based tracking of derivaitive code | |
| CN116401632A (en) | System, method, and storage medium for creating protected computer code | |
| KR101559651B1 (en) | Method and apparatus of dynamic analysis | |
| KR20190059701A (en) | Method and apparatus for generating DEVS based simulation model and code | |
| JP5516277B2 (en) | Test case relation extraction method, test case relation extraction device, and test case relation extraction program | |
| JP6497271B2 (en) | Test data generation apparatus, method, and program | |
| Benmerzoug et al. | Analyzing the impact of refactoring variants on feature location | |
| WO2016189721A1 (en) | Source code evaluation device, source code evaluation method, and source code evaluation program | |
| JP6818568B2 (en) | Communication device, communication specification difference extraction method and communication specification difference extraction program |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200911 |
|
| TRDD | Decision of grant or rejection written | ||
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210825 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210831 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210913 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6954080 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |