JP2015005031A - ソースコード解析装置、ソースコード解析方法、及びプログラム - Google Patents
ソースコード解析装置、ソースコード解析方法、及びプログラム Download PDFInfo
- Publication number
- JP2015005031A JP2015005031A JP2013128498A JP2013128498A JP2015005031A JP 2015005031 A JP2015005031 A JP 2015005031A JP 2013128498 A JP2013128498 A JP 2013128498A JP 2013128498 A JP2013128498 A JP 2013128498A JP 2015005031 A JP2015005031 A JP 2015005031A
- Authority
- JP
- Japan
- Prior art keywords
- merge
- screen
- source code
- unit
- conditional branch
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000003860 storage Methods 0.000 claims abstract description 97
- 230000008569 process Effects 0.000 claims abstract description 68
- 238000000605 extraction Methods 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims description 202
- 238000004458 analytical method Methods 0.000 claims description 128
- 230000014509 gene expression Effects 0.000 claims description 34
- 230000006870 function Effects 0.000 claims description 20
- 239000000470 constituent Substances 0.000 claims description 6
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 239000000284 extract Substances 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 19
- 238000013461 design Methods 0.000 description 6
- 101000575029 Bacillus subtilis (strain 168) 50S ribosomal protein L11 Proteins 0.000 description 5
- 102100035793 CD83 antigen Human genes 0.000 description 5
- 101001093025 Geobacillus stearothermophilus 50S ribosomal protein L7/L12 Proteins 0.000 description 5
- 101000946856 Homo sapiens CD83 antigen Proteins 0.000 description 5
- 239000013067 intermediate product Substances 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 101710190981 50S ribosomal protein L6 Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
特許文献1に記載の技術では、データアクセス処理とロジック処理とが混在しているソースコードから、ロジック処理とデータアクセス処理との境界を抽出することにより、ソースコードにおいて、ロジック処理とデータアクセス処理とを分離することが可能である。
しかしながら、このような画面を定義するファイル(JSPファイル)では、画面上に出力する画面構成要素(例えば、HTML要素)に関するソースコードを複数の画面で共有した上で、条件式によって出力する画面を変更する制御を行っている場合がある。このような場合に、複数の画面構成要素に基づいて画面出力するため、全ての画面を網羅するように画面を分割すると、生成される画面数が爆発的に増加してしまうということがあった。例えば、ソースコードに含まれる条件分岐(例えば、IF文)の数が50箇所あった場合、生成される画面数は、2の50乗の画面数となり、爆発的に増加してしまうということがあった。上述した特許文献1に記載の技術では、このような場合に対応することができずに、適切に出力画面を解析することができなかった。
[第1の実施形態]
図1は、第1の実施形態によるソースコード解析装置1の一例を示すブロック図である。
この図において、ソースコード解析装置1は、記憶部40、入力部50、表示部60、及び制御部70を備えている。
出力情報記憶部30は、ソースコード解析装置1の出力結果を記憶する。すなわち、出力情報記憶部30は、ソースコード解析装置1が生成した画面一覧や画面ごとのJSPファイルなどの出力結果を記憶する。
この図において、置換情報記憶部42は、「項番」と、「条件ID」と、「条件式」とを対応付けて置換情報として記憶する。ここで、「項番」は、置換情報の番号(項番)を示し、「条件ID」は、条件式を識別する識別情報であって、条件式に代わって置換される識別情報を示し、「条件式」は、置き換えられる条件式を示している。すなわち、置換情報記憶部42は、後述する抽出部71によって生成される中間ソースコードにおいて、置換された「条件ID」と、「条件式」との組を記憶する。
例えば、図4に示す例では、置換情報記憶部42は、「項番」が“1”である置換情報は、「条件ID」が“条件1”であり、この「条件ID」に置換された「条件式」が、“module==“MODIFY””であることを示している。
画面一覧記憶部45は、例えば、図6に示すような画面一覧を、後述する画面一覧の出力結果として記憶する。ここで、図6を参照して、画面一覧記憶部45が記憶する画面一覧のデータ構成について説明する。
この図において、画面一覧記憶部45は、「論理状態」を列とし、画面出力を定義する画面構成要素である「HTML要素」(Hyper Text Markup Language要素)を行とした画面の一覧表を画面一覧GL1として記憶している。ここで、「論理状態」は、条件分岐によって分岐される状態の組み合わせの論理状態を示しており、1つの列が1つの論理状態に対応する。また、「HTML要素」は、JSPファイルのソースコードから抽出されたHTML要素を示している。また、各行における“○”は、対応する「論理状態」において「HTML要素」を適用することを示し、“×”は、対応する「論理状態」において「HTML要素」を適用しないことを示している。なお、“*”は、マージ処理部72によるマージ処理によりマージされた「HTML要素」を示しており、その詳細については後述する。
また、図6に示す例では、画面一覧の各列は、1つの論理状態における画面(論理画面)を示している。例えば、列G1は、「論理状態」が“条件1=真、条件2=真”である場合の論理画面を示している。
このように、画面一覧は、1つのJSPファイルにおいて定義している複数の画面(論理画面)の設計仕様を示す設計書に相当する。
表示部60(出力部)は、例えば、液晶ディスプレイ装置などの表示装置であり、ソースコード解析装置1を操作する際の操作画面や、ソースコード解析装置1の出力結果である画面一覧などを表示する。
図2は、本実施形態におけるJSPファイルのソースコードの一例を示す図である。
この図において、ソースコードSC1は、JSPファイルに記述されているソースコードの一例を示している。なお、ソースコードSC1には、IF文BL1〜BL3が含まれている。抽出部71は、ソースコードSC1をソース記憶部20から取得し、構文解析することにより、IF文BL1〜BL3及びHTML要素を抽出する。
この図において、ソースコードSC2は、抽出部71によって生成された中間ソースコードの一例を示している。なお、ソースコードSC2には、条件IDに置き換えられたIF文BL4〜BL6が含まれている。抽出部71は、ソースコードSC1から抽出したIF文BL1〜BL3及びHTML要素のみのソースコードを生成し、IF文BL1〜BL3の条件式を、条件IDに置き換えて、IF文BL4〜BL6を含む中間ソースコード(ソースコードSC2)を生成する。
なお、抽出部71は、条件IDに置き換えの際に、図4に示すように、「条件ID」と「条件式」とを対応付けて、置換情報記憶部42に記憶させる。また、抽出部71は、生成した中間ソースコードを中間コード記憶部41に記憶させる。
第1構文解析部711(第1パーサ)は、HTMLの構文解析を行う構文解析器である。第1構文解析部711は、ソース記憶部20から取得したソースコードのHTMLを構文解析し、各ノード(例えば、“<%・・・>”のタグ(“%”タグ))を意味付けする。
なお、抽出部71は、第1構文解析部711及び第2構文解析部712の解析結果を中間成果物として、中間コード記憶部41に記憶させる。
また、第1構文解析部711及び第2構文解析部712の詳細については、後述する。
例えば、図5に示すマージ規則の例では、IF文に対する以下のような規則が、マージ規則記憶部43に記憶されており、マージ処理部72は、このマージ規則に基づいて、マージ処理を実行する。マージ処理部72は、マージ処理後のソースコードと、マージしたIFに関する情報とをマージ結果としてマージ結果記憶部44に記憶させる。
また、表示処理部74は、例えば、ユーザによる入力部50からの操作に応じて、画面一覧生成部73が生成した画面一覧を出力情報記憶部30に出力し、出力情報記憶部30に画面一覧を記憶させてもよい。
ここでは、まず、ソースコード解析装置1のソースコード解析の全体の処理を説明する。
図7は、本実施形態におけるソースコード解析の手順の一例を示すフローチャートである。
この図において、まず、ソースコード解析装置1の制御部70は、JSPファイルのソースコードを取得する(ステップS101)。すなわち、制御部70の抽出部71は、ソース記憶部20からJSPファイルに記述されているソースコードを取得する。ここでは、一例として、抽出部71は、図2に示すソースコードSC1を取得する。
この図において、図8(a)は、中間ソースコード(ソースコードSC2)を示し、図8(b)は、マージ処理された中間ソースコード(ソースコードSC3)を示している。
図8に示す例では、マージ処理部72は、図8(a)のソースコードSC2のIF文に関連する記述文BL7を、図5に示す「No.」が“6”のマージ規則(規則6)に基づいて、図8(b)のソースコードSC3の記述文BL8にマージするマージ処理を実行する。この場合、マージ処理部72は、記述文BL7が、IF文によって分岐されて処理される「HTML要素」が“チェックボックス”であり、その「オプションの違い」が“checkedの有無”であるため、マージ規則(規則6)に基づいて、IF文をマージすると判定する。そして、マージ処理部72は、記述文BL7をマージして、“checkedあり”であるHTML要素(記述文BL8)を残したソースコードSC3を生成する。
このように、IF文をマージすることにより、マージ処理部72は、ソースコードに含まれるIF文の数を低減することができる。
画面一覧を生成する(ステップS105)。すなわち、画面一覧生成部73は、マージ結果記憶部44からマージ結果を取得し、マージ処理部72によって処理された中間ソースコードに残ったIF文の条件IDの論理状態の組み合わせと、HTML要素とに基づいて、画面一覧を生成する。ここで、図9を参照して、画面一覧の生成の具体例について説明する。
この図において、図9(a)は、マージ処理された中間ソースコード(ソースコードSC3)を示し、図9(b)は、ソースコードSC3から生成された画面一覧GL2を示している。画面一覧生成部73は、図9(b)に示すように、「論理状態」を列とし、画面出力を定義する「HTML要素」を行とした画面の一覧表を画面一覧GL2として生成する。
図9に示す例では、ソースコードSC3に残ったIF文が、“条件1”のみであるため、画面一覧GL2の論理状態は、“条件1=真”と“条件1=偽”の2つの論理状態となる。したがって、画面一覧生成部73は、論理状態が“条件1=真”の場合の画面情報(列G2)と、論理状態が“条件1=偽”の場合の画面情報(列G3)とを示す画面一覧GL2を生成する。
図10は、本実施形態におけるSMTソルバによる処理の一例を説明する説明図である。
この図に示しように、画面一覧生成部73は、「条件式」を入力としたSMTソルバの出力結果により、恒偽となる画面を画面一覧から削除する。
なお、画面一覧生成部73は、生成した画面一覧を画面一覧記憶部45に記憶させる。
<構文解析処理>
図11は、本実施形態におけるソースコードの構文解析の一例を説明する説明図である。
この図において、図11(a)は、構文解析の対象となるソースコードの一例となるソースコードSC4を示している。また、図11(b)は、第1構文解析部711によって、ソースコードSC4が構文解析された解析結果であるツリー構造A1を示している。
抽出部71は、第1構文解析部711及び第2構文解析部712の構文解析結果に基づいて、HTML要素とIF文とを抽出する。
<IF文のマージ処理>
まず、図12〜図16を参照して、本実施形態におけるIF文のマージ処理の一例を詳細に説明する。
この図において、ソースコードSC5は、抽出部71によって生成された中間ソースコードの一例を示している。ここで、ソースコードSC5には、IF文の記述BL11〜BL13が含まれている。また、IF文の記述BL11は、「条件1」のIF文に対応する記述を示し、IF文の記述BL12は、「条件2」のIF文に対応する記述を示している。また、IF文の記述BL13は、「条件3」のIF文に対応する記述を示している。
なお、ソースコードSC5は、IF文がネスト構造(入れ子構造)になっている場合の一例を示し、IF文の記述BL12がIF文の記述BL11に含まれ、IF文の記述BL13がIF文の記述BL12に含まれる入れ子構造になっている。
図13は、本実施形態における中間ソースコードを構文木で表現した一例を示す図である。
なお、ツリー構造A3において、“if”などが記述されている楕円形のノードは、例えば、JSPファイルにおける制御表現を示し、“button”などの角の丸い四角形のノードは、タグ名を示し、“checked”などが記述されている通常の四角形のノードは、アトリビュート(属性)を示している。
また、階層T21は、図13における階層T20に対応するIF文(「条件2」)を示すか階層であって、階層T30をマージした部分を含んだ階層を示している。なお、階層T10は、図13と同様である。
階層T21は、階層T30をマージ処理することにより、“ELSE”に、「type=“checkbox”」、「checked」、及び「maxlength=“50”」を含むIF文の記述となる。
また、階層T11は、図13における階層T10に対応するIF文(「条件1」)を示すか階層であって、階層T21をマージした部分を含んだ階層を示している。
階層T11は、階層T21をマージ処理することにより、“ELSE”に、「type=“checkbox”」、「checked」、及び「maxlength=“80”」を含むIF文の記述となる。
このように、マージ処理部72は、条件IDに置き換えたIF文のうち、上述した構文木におけるIF文の記述のネスト構造(入れ子構造)の階層が深いIF文を優先してマージ処理を実行する。
この図において、ソースコードSC6は、図15に示すIF文のマージ処理がされたツリー構造A5を別の表現にしたものであり、図12に示す中間ソースコード(ソースコードSC5)のIF文を、マージ処理部72によってマージ規則に基づいてマージ処理された後の中間ソースコードを示している。また、IF文の記述BL14は、図12に示すIF文の記述BL11〜BL13がマージ処理部72によってマージされた後の記述を示している。
このように、マージ処理部72は、マージ規則に基づいて、図12に示す中間ソースコード(ソースコードSC5)をマージ処理して、図16に示す中間ソースコード(ソースコードSC6)を生成する。
図17は、本実施形態におけるIF文のマージ処理の一例を示すフローチャートである。
この図において、まず、マージ処理部72は、上述した構文木において最も階層の深い未判定のIF文を抽出する(ステップS201)。すなわち、マージ処理部72は、抽出部71(第1構文解析部711及び第2構文解析部712)による構文解析結果に基づいて中間ソースコードとして生成された構文木に含まれるIF文のうち、マージするか否か(マージ対象であるか否か)を未判定のIF文であって、構文木におけるIF文の入れ子構造の階層が最も深いIF文(最も下位のIF文)を抽出する。
マージ処理部72は、図17に示す処理を実行することにより、上述したネスト構造(入れ子構造)のIF文の記述を含む構文木において、階層が最も深いIF文(最も下位のIF文)から順にマージ処理を実行する。
これにより、本実施形態におけるソースコード解析装置1は、マージ規則に基づいて、論理状態の違いとは言えないようなわずかな違いを記述した条件分岐を削除することができるので、ソースコードに含まれる条件分岐の数を低減することができる。そのため、本実施形態におけるソースコード解析装置1は、例えば、ソースファイルが複数の画面を定義している場合に、全ての画面を網羅するように画面を分割すると、生成される画面数が爆発的に増加してしまうことを抑制することができる。よって、本実施形態におけるソースコード解析装置1は、ソースコードで定義される出力画面を適切に解析することができる。
また、本実施形態におけるソースコード解析装置1が生成する画面一覧は、論理画面ごとの画面構成要素(HTML要素)を把握できるので、ユーザ(作業者)は、この画面位置に基づいて、保守性の高いソースコードを作成することができる。
これにより、本実施形態におけるソースコード解析装置1は、マージ規則に基づいて、適切にソースコードに含まれる条件分岐の数を低減することができる。よって、本実施形態におけるソースコード解析装置1は、ソースコードで定義される出力画面を適切に解析することができる。
これにより、同一の条件式には、同一の条件IDが置き換えられるので、本実施形態におけるソースコード解析装置1は、中間ソースコードに含まれる同一の条件IDを同一の論理状態として扱うことができる。そのため、本実施形態におけるソースコード解析装置1は、ソースコードが定義する論理状態を適切に低減することができる。よって、本実施形態におけるソースコード解析装置1は、生成される画面数が爆発的に増加してしまうことを抑制することができる。
これにより、本実施形態におけるソースコード解析装置1は、条件分岐が入れ子構造に記述されている場合に、適切にマージ処理を実行することができる。
これにより、本実施形態におけるソースコード解析装置1は、システムの動作上利用されることのない論理画面を画面一覧から削除することができる。
これにより、本実施形態におけるソースコード解析装置1は、1つのソースコード(JSPファイル)から保守性の高い論理画面ごとのソースコード(JSPファイル)を自動的に生成することができる。
これにより、本実施形態におけるソースコード解析装置1は、生成した画面一覧を外部に出力することができる。よって、ユーザ(作業者)は、画面一覧を確認することができ、その結果、過去に作成されたソースコードを修正するなどの保守を容易に行うことができるとともに、保守性の高いソースコードを作成することができる。
これにより、本実施形態によるソースコード解析方法は、本実施形態におけるソースコード解析装置1と同様の効果を奏する。
[第2の実施形態]
本実施形態では、マージ規則記憶部43に記憶されているマージ規則が優先順位付けされており、マージ処理部72が、マージ処理された後の論理画面の数が、適切な画面数になるように、マージ規則を優先順位にしたがって変更してマージ処理を実行する場合の一例について説明する。
なお、本実施形態におけるソースコード解析装置1の構成は、図1に示す第1の実施形態と同様であるので、ここではその説明を省略する。
図18は、第2の実施形態におけるソースコード解析の手順の一例を示すフローチャートである。
この図において、ステップS301からステップS303の処理は、図7に示すステップS101からステップS103の処理と同様であるため、ここではその説明を省略する。なお、本実施形態では、マージ規則は、例えば、第1のマージ規則を最優先とする複数のマージ規則のグループに分かれている場合について説明する。
次に、マージ処理部72は、マージ規則に基づいてIF文をマージする(ステップS305)。ここでは、マージ処理部72は、まず、第1のマージ規則に基づいて、IF文をマージするマージ処理を実行する。
次に、ステップS308において、マージ処理部72は、生成された画面一覧における画面数が所定の画面数以下か否かを判定する。すなわち、マージ処理部72は、マージ処理された後のIF文によって分岐される状態の組み合わせの画面数(マージ処理された後の論理画面数)が所定の画面数以下であるか否かを判定する。
これにより、本実施形態におけるソースコード解析装置1は、適切な論理画面数になるようにマージ処理を実行して、適切な論理画面数の画面一覧を生成することができる。そのため、本実施形態におけるソースコード解析装置1は、例えば、全ての画面を網羅するように画面を分割すると、生成される画面数が爆発的に増加してしまうことを防止することができる。
これにより、本実施形態におけるソースコード解析装置1は、適切な論理画面数になるようにマージ処理を実行することができる。
また、上述の図18に示す例では、ステップS305及びステップS306の処理において画面一覧を生成した後に、ステップS308の処理によりマージ規則を変更して再びマージ処理を行うか否かを判定しているが、ステップS305の後に、ステップS308の処理をおこなってもよい。この場合、中間ソースコードに含まれる条件IDの種類数によってマージ規則を変更して再びマージ処理を行うか否かを判定してもよい。
例えば、上記の各実施形態において、画面を定義するソースファイルが、JSPファイルである場合について説明したが、これに限定されるものではなく、画面と処理とを1つのファイルに定義するソースファイルであれば、他の形式のソースファイルであってもよい。ソースファイルは、例えば、ASP(Active Server Pages)や、PHP(Hypertext Preprocessor)、Perl(パール)を利用して画面と処理とを1つのファイルに定義するソースファイルであってもよい。
また、上記の各実施形態において、条件分岐がIF文である場合について説明したが、SWITCH文などの条件分岐、WHILE文などのループ文に適用してもよい。
また、ソースコード解析装置1が出力処理部として表示部60に画面一覧を表示させる表示処理部74を備える場合について説明したが、単に外部に画面一覧を出力する出力処理部を備えてもよい。
また、ソースコード解析装置1は、ソースコードの解析前に予め存在している設計書がある場合には、設計書に記載されている画面構成要素(HTML要素)を用いて、画面一覧から不用な画面を削除してもよい。
また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD−ROM等の非一過性の記録媒体であってもよい。
20 ソース記憶部
30 出力情報記憶部
40 記憶部
41 中間コード記憶部
42 置換情報記憶部
43 マージ規則記憶部
44 マージ結果記憶部
45 画面一覧記憶部
50 入力部
60 表示部
70 制御部
71 抽出部
72 マージ処理部
73 画面一覧生成部
74 表示処理部
75 JSPファイル生成部
711 第1構文解析部
712 第2構文解析部
Claims (10)
- 画面を定義するソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードに含まれる画面出力を定義する画面構成要素と、前記画面出力に関する条件分岐とを抽出する抽出部と、
予め定められたマージ規則に基づいて、前記抽出部が抽出した前記条件分岐を併合するか否かを判定するとともに、前記条件分岐を併合すると判定した場合に、当該条件分岐を併合するマージ処理を実行するマージ処理部と、
前記マージ処理部によって処理された後の前記条件分岐及び前記画面構成要素に基づいて、前記画面構成要素と前記条件分岐によって分岐される状態の組み合わせとの一覧を示す画面一覧を生成する画面一覧生成部と
を備えることを特徴とするソースコード解析装置。 - 前記マージ処理部は、
前記条件分岐を併合すると判定した場合に、前記マージ規則に基づいて、当該条件分岐によって分岐されて処理される前記画面構成要素のうちの1つに併合する
ことを特徴とする請求項1に記載のソースコード解析装置。 - 前記抽出部は、
前記ソースコードを構文解析して前記画面構成要素と前記条件分岐とを抽出するとともに、抽出した前記条件分岐の条件式を、条件式を識別する条件識別情報に置き換えた条件分岐の記述と、抽出した前記画面構成要素とを含む中間ソースコードを生成し、
前記マージ処理部は、
前記マージ規則に基づいて、前記中間ソースコードに含まれる前記条件識別情報に置き換えた条件分岐に対して、併合するか否かを判定する
ことを特徴とする請求項1又は請求項2に記載のソースコード解析装置。 - 前記抽出部は、
前記構文解析に基づいて前記中間ソースコードを構文木として生成し、
前記マージ処理部は、
前記条件識別情報に置き換えた条件分岐のうち、前記構文木における条件分岐の入れ子構造の階層が深い条件分岐を優先して前記マージ処理を実行する
ことを特徴とする請求項3に記載のソースコード解析装置。 - 前記画面一覧生成部は、
前記分岐される状態の組み合わせのうちで、常に偽となる前記分岐される状態の組み合わせを削除して、前記画面一覧を生成する
ことを特徴とする請求項1から請求項4のいずれか一項に記載のソースコード解析装置。 - 前記マージ処理部は、
前記マージ処理された後の前記分岐される状態の組み合わせの画面数が、所定の画面数以下になるように、前記マージ規則を変更し、変更した前記マージ規則に基づいて、マージ処理を実行する
ことを特徴とする請求項1から請求項5のいずれか一項に記載のソースコード解析装置。 - 前記マージ処理部は、
前記マージ処理を実行した後における前記分岐される状態の組み合わせの画面数が、前記マージ処理を実行する前の前記分岐される状態の組み合わせの画面数に対する所定の割合の画面数以下、又は、前記ソースコードによって実行される機能数に応じた所定の画面数以下になるように前記マージ規則を変更し、変更した前記マージ規則に基づいて、マージ処理を実行する
ことを特徴とする請求項6に記載のソースコード解析装置。 - 前記画面一覧生成部によって生成された前記画面一覧に基づいて、前記画面一覧に含まれる各画面を定義するソースファイルを生成するソースファイル生成部を備える
ことを特徴とする請求項1から請求項7のいずれか一項に記載のソースコード解析装置。 - 抽出部が、画面を定義するソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードに含まれる画面出力を定義する画面構成要素と、前記画面出力に関する条件分岐とを抽出する抽出ステップと、
マージ処理部が、予め定められたマージ規則に基づいて、前記抽出ステップによって抽出された前記条件分岐を併合するか否かを判定するとともに、前記条件分岐を併合すると判定した場合に、当該条件分岐を併合するマージ処理を実行するマージ処理ステップと、
画面一覧生成部が、前記マージ処理ステップによって処理された後の前記条件分岐及び前記画面構成要素に基づいて、前記画面構成要素と前記条件分岐によって分岐される状態の組み合わせとの一覧を示す画面一覧を生成する画面一覧生成ステップと
を含むことを特徴とするソースコード解析方法。 - コンピュータに、
抽出部が、画面を定義するソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードに含まれる画面出力を定義する画面構成要素と、前記画面出力に関する条件分岐とを抽出する抽出ステップと、
マージ処理部が、予め定められたマージ規則に基づいて、前記抽出ステップによって抽出された前記条件分岐を併合するか否かを判定するとともに、前記条件分岐を併合すると判定した場合に、当該条件分岐を併合するマージ処理を実行するマージ処理ステップと、
画面一覧生成部が、前記マージ処理ステップによって処理された後の前記条件分岐及び前記画面構成要素に基づいて、前記画面構成要素と前記条件分岐によって分岐される状態の組み合わせとの一覧を示す画面一覧を生成する画面一覧生成ステップと
を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013128498A JP6111150B2 (ja) | 2013-06-19 | 2013-06-19 | ソースコード解析装置、ソースコード解析方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013128498A JP6111150B2 (ja) | 2013-06-19 | 2013-06-19 | ソースコード解析装置、ソースコード解析方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015005031A true JP2015005031A (ja) | 2015-01-08 |
JP6111150B2 JP6111150B2 (ja) | 2017-04-05 |
Family
ID=52300910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013128498A Active JP6111150B2 (ja) | 2013-06-19 | 2013-06-19 | ソースコード解析装置、ソースコード解析方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6111150B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019139268A (ja) * | 2018-02-06 | 2019-08-22 | 富士通株式会社 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
CN116521742A (zh) * | 2023-06-25 | 2023-08-01 | 北京大学 | 源代码分析结果聚合方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07261990A (ja) * | 1994-03-23 | 1995-10-13 | Fujitsu Ltd | プログラム解析表示装置 |
JP2004362343A (ja) * | 2003-06-05 | 2004-12-24 | Internatl Business Mach Corp <Ibm> | ソースコード変換装置、ソースコード変換方法、およびプログラム |
-
2013
- 2013-06-19 JP JP2013128498A patent/JP6111150B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07261990A (ja) * | 1994-03-23 | 1995-10-13 | Fujitsu Ltd | プログラム解析表示装置 |
JP2004362343A (ja) * | 2003-06-05 | 2004-12-24 | Internatl Business Mach Corp <Ibm> | ソースコード変換装置、ソースコード変換方法、およびプログラム |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019139268A (ja) * | 2018-02-06 | 2019-08-22 | 富士通株式会社 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
JP6993573B2 (ja) | 2018-02-06 | 2022-01-13 | 富士通株式会社 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
CN116521742A (zh) * | 2023-06-25 | 2023-08-01 | 北京大学 | 源代码分析结果聚合方法、装置、电子设备及存储介质 |
CN116521742B (zh) * | 2023-06-25 | 2023-09-22 | 北京大学 | 源代码分析结果聚合方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP6111150B2 (ja) | 2017-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9823908B2 (en) | Apparatus for providing framework to develop client application executed on multiple platforms, and method using the same | |
US9495150B2 (en) | Information processing apparatus and method, and computer program product | |
JP2006244195A (ja) | プログラムテスト支援装置およびその方法 | |
JPWO2017141893A1 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
US20130339377A1 (en) | Method of transforming sets of input strings into at least one pattern expression that is string expressing sets of input strings, method of extracting transformation pattern as approximate pattern expression, and computer and computer program for the methods | |
JP6111150B2 (ja) | ソースコード解析装置、ソースコード解析方法、及びプログラム | |
JP5440287B2 (ja) | シンボリック実行支援プログラム、方法及び装置 | |
WO2020085129A1 (ja) | テストデータ生成装置、テストデータ生成方法及びプログラム | |
CN115469849B (zh) | 一种业务处理系统、方法、电子设备和存储介质 | |
JP6790921B2 (ja) | プログラム分析装置、プログラム分析方法及びプログラム分析プログラム | |
KR20200103133A (ko) | 하둡 기반의 빅데이터 시스템에서 etl 절차를 수행하는 방법 및 장치 | |
JP7260150B2 (ja) | Webサイト設計支援装置、Webサイト設計支援方法、及びプログラム | |
JP7029557B1 (ja) | 判定装置、判定方法および判定プログラム | |
CN112068826B (zh) | 文本输入的控制方法、系统、电子设备和存储介质 | |
CN111475403A (zh) | 测试脚本的动态生成方法及相关装置 | |
US20070233737A1 (en) | System for determining whether screen displayed by program satisfies specification | |
JP2012014633A (ja) | アプリケーション構築装置、アプリケーション構築方法、アプリケーション実行装置及びアプリケーション実行方法 | |
JP2017151594A (ja) | 支援装置、支援方法及びプログラム | |
CN112764757A (zh) | 小程序处理方法、装置、设备及存储介质 | |
JP2016099726A (ja) | 仕様生成方法、仕様生成装置、及びプログラム | |
CN112667274A (zh) | 生成应用程序编程接口文档的方法、装置及电子设备 | |
CN111507079A (zh) | 一种多语言文档生成方法及系统和设备 | |
JP2016051367A (ja) | データ解析装置、データ解析方法、および、プログラム。 | |
JP2015035174A (ja) | 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体 | |
JP2015225412A (ja) | 文書要約装置、方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160425 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170208 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170214 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170313 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6111150 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |