JP5359891B2 - 情報表示装置、方法及びプログラム - Google Patents

情報表示装置、方法及びプログラム Download PDF

Info

Publication number
JP5359891B2
JP5359891B2 JP2009554357A JP2009554357A JP5359891B2 JP 5359891 B2 JP5359891 B2 JP 5359891B2 JP 2009554357 A JP2009554357 A JP 2009554357A JP 2009554357 A JP2009554357 A JP 2009554357A JP 5359891 B2 JP5359891 B2 JP 5359891B2
Authority
JP
Japan
Prior art keywords
type
information
score
unit
definition
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
Application number
JP2009554357A
Other languages
English (en)
Other versions
JPWO2009104658A1 (ja
Inventor
直人 前田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009554357A priority Critical patent/JP5359891B2/ja
Publication of JPWO2009104658A1 publication Critical patent/JPWO2009104658A1/ja
Application granted granted Critical
Publication of JP5359891B2 publication Critical patent/JP5359891B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)

Description

[関連出願の記載]
本発明は、日本国特許出願:特願2008−037604号(2008年 2月19日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は情報表示装置、方法及びプログラムに関し、特に、オブジェクト指向型言語で記述されたプログラムのソースコードに登場するインスタンス・メソッドの情報を表示する情報表示装置、方法及びプログラムに関する。
非特許文献1において、情報表示装置が記載されている。図7に示すように、非特許文献1に記載の情報表示装置110は、入力部111、定義型収集部112、出力部116、及び、記憶装置117を備える。記憶装置117は、定義型情報及びソースコードを格納する。
情報表示装置110は、次のように動作する。プログラムのソースコードを閲覧又は編集するためのエディタは、すでに動作しているものとする。入力部111はマウスやキーボードから利用者の入力を受け付ける。画面に表示されたソースコードに含まれる特定のインスタンス・メソッドの呼び出しが選択された状態において、さらに「宣言を開ける」という機能に対応する入力(例えば、ファンクションキーF3の入力)を受け付けた場合、入力部111は、そのインスタンス・メソッドの情報を定義型収集部112に送信する。
定義型収集部112は、インスタンス・メソッドの情報を受信した場合、受信したインスタンス・メソッドのレシーバ・オブジェクトを参照する変数に対する型情報を、記憶装置117に格納された定義型情報から読み込む。定義型情報Aは、記憶装置117に保持される定義型情報の構成の一例を示す。定義型情報Aは、変数とその変数に対する型を示す。定義型情報Aは、例えば、型解析と呼ばれる手法によって生成することができる。定義型収集部112はレシーバ・オブジェクトを参照する変数に対する型情報を定義型情報Aより取得し、取得した型に対応する情報(クラス定義)をソースコードから取得し、そのクラス定義に含まれるインスタンス・メソッドの定義情報(メソッド定義)を、出力部116を介して出力する。
図8に示すプログラムのソースコードを参照して、従来の情報表示装置110の動作を具体的に説明する。ソースコードは、エディタに表示されているものとする。利用者は、例えば、4行目の”p.foo();”を選択し、「宣言を開ける」機能を呼び出す入力操作を行ったものとする。このとき、入力部111から定義型収集部112に、変数p及びインスタンス・メソッドfoo()が送信される。
定義型収集部112は、変数pに対応する型を定義型情報Aから取得する。図8に示すソースコードの場合、型解析によって、変数pの型はPであると判定される。定義型収集部112は、Pのクラス定義をソースコードから取得し、Pのクラス情報の中に定義されたインスタンス・メソッドfoo()のメソッド定義を出力部116へ送信する。出力部116は、9行目のインスタンス・メソッドfoo()のメソッド定義を利用者に提示する。このように、情報表示装置110は、変数の型の情報を利用して、インスタンス・メソッドの情報を表示する。
宮本信二著、"第4回:Eclipseの便利な機能"、[online]、2005年2月9日、impress IT Corporation、 [2007年12月13日検索]、インターネット<http://www.thinkit.co.jp/free/tech/3/4/1.html>
以上の非特許文献1の全開示内容は、本書に引用をもって繰り込み記載されているものとする。
以下の分析は、本発明者によってなされたものである。図8を参照して、情報表示装置110における問題点について説明する。上記の通り、情報表示装置110は、4行目のp.foo()というインスタンス・メソッドの呼び出しに対応する情報として、9行目のfoo()メソッド定義を表示する。しかしながら、プログラムの実行時において、4行目において実際に呼び出されるインスタンス・メソッドは9行目で定義されているものではなく、15行目で定義されているものである。なぜならば、4行目の変数pは3行目の代入によって、クラスRのインスタンスを参照するからである。したがって、図8のソースコードの場合には、4行目ではなく、15行目で定義されているものである。なぜならば、4行目の変数pは3行目の代入によって、クラスRのインスタンスを参照するからである。したがって、図8のソースコードの場合には、4行目ではなく15行目のメソッド定義を利用者に提示した方が、利用者にとって有益である。ここでは、変数に割り当てられた型(「定義型」)と、変数によってプログラムの実行時に参照されるオブジェクトの型(「実行時型」)と、を区別する。図8のソースコードにおいては、変数pの定義型はPであり、一方、実行時型はRである。
情報表示装置110における第1の問題点は、指定されたインスタンス・メソッドの呼び出しに対応するメソッド定義を表示する際、変数の定義型におけるメソッド定義が表示されるため、利用者は実行時におけるインスタンス・メソッドの処理内容を把握することができないという点である。
情報表示装置110における第2の問題点は、指定されたインスタンス・メソッドの呼び出しに対応するメソッド定義を表示する際に、表示される定義情報の候補が複数となった場合には、適切なメソッド定義を選択するのに手間を要することである。選択された変数の実行時型には複数の型が対応する場合があり、かかる場合、利用者はその中から所望の定義情報を選択する必要に迫られるからである。
そこで、指定されたインスタンス・メソッドの呼び出しに対応するメソッド定義を表示する際に、実行時におけるインスタンス・メソッドの処理内容に応じた定義情報を表示する情報表示装置、方法及びプログラムを提供することが課題となる。また、指定されたインスタンス・メソッドの呼び出しに対応するメソッド定義情報を表示する際に、複数の定義情報の候補から利用者によって選択される可能性が高いものほど選択しやすい場所に表示する情報表示装置、方法及びプログラムを提供することが課題となる。
本発明の第1の視点に係る情報表示装置は、
変数によって実行時に参照され得る型を予め参照情報として記録した記憶装置と、
利用者によって選択されたインスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照される可能性のある型を前記参照情報から抽出する実行時型収集部と、
抽出された型に含まれる前記インスタンス・メソッドの定義情報を表示する選択結果表示部と、
プログラムのうちの新規に開発されたモジュールであるアプリケーション部に含まれるコード中で生成されるオブジェクトの型とプログラムのうちの既存のモジュールであるライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して、それぞれスコアを割り当てる並び替え部と
を備えていることが好ましい。
また、前記並び替え部は、前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当て、
前記選択結果表示部は、スコアの降順にソートして各型に含まれるインスタンス・メソッドの定義情報を表示することが好ましい。
第1の展開形態の情報表示装置は、
前記並び替え部が、前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当てることが好ましい。
第2の展開形態の情報表示装置は、
前記選択結果表示部が、スコアの降順にソートして各型に含まれるインスタンス・メソッドの定義情報を表示することが好ましい。
第3の展開形態の情報表示装置は、
前記選択結果表示部が、スコアの高い型における前記インスタンス・メソッドの定義情報ほど利用者にとって見やすい、又は、選択しやすい場所に表示することが好ましい。
すなわち、前記選択結果表示部は、スコアの高い型における前記インスタンス・メソッドの定義情報ほど、フォントのサイズを大きくしたり、強調表示したりして表示することが好ましい。
本発明の第2の視点に係る情報表示方法は、コンピュータが、
変数によって実行時に参照され得る型を予め参照情報として記録した記憶装置を参照して、利用者によって選択されたインスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照され得る型を前記参照情報から抽出する実行時型収集工程と、
抽出された型に含まれる前記インスタンス・メソッドの定義情報を表示する選択結果表示工程と、
プログラムのうちの新規に開発されたモジュールであるアプリケーション部に含まれるコード中で生成されるオブジェクトの型とプログラムのうちの既存のモジュールであるライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して、それぞれスコアを割り当てるスコア割り当て工程と
を含むことが好ましい。
また、前記スコア割り当て工程において、前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当て、
前記選択結果表示工程において、スコアの降順にソートして各型に含まれるインスタンス・メソッドの定義情報を表示することが好ましい。
第4の展開形態の情報表示方法は、コンピュータが、
前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当てることが好ましい。
第5の展開形態の情報表示方法は、コンピュータが、
前記選択結果表示工程において、スコアの高い型における前記インスタンス・メソッドの定義情報ほど利用者にとって見やすい、又は、選択しやすい場所に表示することが好ましい。
すなわち、コンピュータが、前記選択結果表示工程において、スコアの高い型における前記インスタンス・メソッドの定義情報ほど、フォントのサイズを大きくしたり、強調表示したりして表示することが好ましい。
本発明の第3の視点に係るプログラムは、
変数によって実行時に参照され得る型を予め参照情報として記録した記憶装置を参照して、利用者によって選択されたインスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照され得る型を前記参照情報から抽出する実行時型収集処理と、
抽出された型に含まれる前記インスタンス・メソッドの定義情報を表示する選択結果表示処理と、
プログラムのうちの新規に開発されたモジュールであるアプリケーション部に含まれるコード中で生成されるオブジェクトの型とプログラムのうちの既存のモジュールであるライブラリ部に含まれるコード中で生成されるオブジェクト型に対して、それぞれスコアを割り当てるスコア割り当て処理とをコンピュータに実行させることが好ましい。
また、プログラムは、前記スコア割り当て処理において、前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当てる処理を前記コンピュータに実行させ、
前記選択結果表示処理において、スコアの降順にソートして各型に含まれるインスタンス・メソッドの定義情報を表示する処理を前記コンピュータに実行させることが好ましい。
第6の展開形態のプログラムは、
前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当てる処理をコンピュータに実行させることが好ましい。
第7の展開形態のプログラムは、
前記選択結果表示処理において、スコアの高い型における前記インスタンス・メソッドの定義情報ほど利用者にとって見やすい、又は、選択しやすい場所に表示する処理をコンピュータに実行させることが好ましい。
すなわち、前記選択結果表示処理において、スコアの高い型における前記インスタンス・メソッドの定義情報ほど、フォントのサイズを大きくしたり、強調表示したりして表示する処理を前記コンピュータに実行させることが好ましい。

第8の展開形態の情報表示装置は、上記の参照情報が、CHA(クラス・ヒエラルキー・アナリシス)、RTA(ラピッド・タイプ・アナリシス)、VTA(バリアブル・タイプ・アナリシス)及びポインタ解析の少なくともいずれかによって生成されたものであってもよい。
本発明によって、利用者によって選択されたインスタンス・メソッドの定義情報を表示する際に、実行時におけるインスタンス・メソッドの処理内容に応じた定義情報を表示する情報表示装置、方法及びプログラムが提供される。その理由は、インスタンス・メソッドの定義情報を表示する際に、インスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照される可能性のある型における定義情報を表示することができるからである。
また、本発明によって、インスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照される可能性のある型の候補が複数ある場合、利用者が所望の型を選択する労力を削減することができる。その理由は、複数の型の候補の中から、アプリケーション部の中で生成されるか、又は、アプリケーション部に属するか、という観点による優先順位付けを行い、GUIに表示する際に、利用者にとって有益な型ほど利用者に見やすく、又は、選択しやすい場所に表示するからである。
本発明の第1の実施形態に係る情報表示装置の構成を示すブロック図である。 本発明の第2の実施形態に係る情報表示装置の構成を示すブロック図である。 本発明の実施例に係る情報表示装置における並び替え情報の形式を示す図である。 本発明の実施例に係る情報表示装置における参照情報の他の形式を示す図である。 本発明の実施例に係る情報表示装置における参照情報のさらに他の形式を示す図である。 本発明の実施例に係る情報表示装置の動作を示す流れ図である。 従来の情報表示装置の構成を示すブロック図である。 オブジェクト指向型言語の一つであるJava(登録商標)言語によって記述されたプログラムのソースコードである。
符号の説明
10、110 情報表示装置
11、111 入力部
12 実行時型収集部
13 並び替え(スコア割り当て)部A
14 並び替え(スコア割り当て)部B
15 選択結果表示部
16、116 出力部
17、117 記憶装置
18 計算機
112 定義型収集部
(実施形態1)
本発明の第1の実施形態に係る情報表示装置について図面を参照して説明する。図1は、本実施形態に係る情報表示装置10の構成を示すブロック図である。情報表示装置10は、実行時型収集部12、選択結果表示部15及び記憶装置17を備える。記憶装置17は、変数によって実行時に参照される能性のある型を参照情報として記憶する。実行時型収集部12は、インスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照される可能性のある型を参照情報から抽出する。選択結果表示部15は、抽出された型におけるインスタンス・メソッドの定義情報を表示する。
(実施形態2)
次に、本発明の第2の実施形態に係る情報表示装置について図面を参照して説明する。図2は、本実施形態に係る情報表示装置10の構成を示すブロック図である。情報表示装置10は、図2を参照すると、実行時型収集部12、並び替え(スコア割り当て)部A13、並び替え(スコア割り当て)部B14、選択結果表示部15を備える。
記憶装置17は、参照情報として、プログラム中に登場する変数が実行時に参照する可能性のある型の集合を保存する。実行時型収集部12は、インスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照される型の集合を参照情報から取得する。
記憶装置17は、生成情報として、型がアプリケーション部分で生成されるか否かを示す情報を保存する。第1の並び替え(スコア割り当て)部A13は、生成情報に基づいて、取得した型に対してスコアを割り当てる。
記憶装置17は、APP/LIB情報として、型がアプリケーション部分に属するのか、又は、ライブラリ部分に属するのかを示す情報を保存する。第2の並び替え(スコア割り当て)部B14は、APP/LIB情報に基づいて、型に対してスコアを割り当てる。
選択結果表示部15は、GUI上において、高いスコアが付された型ほど利用者にとって見やすく、かつ、選択しやすい場所に表示し、利用者によって選択された型に応じたインスタンス・メソッドの定義情報を表示する。
本実施形態に係る情報表示装置10は、インスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照される可能性のある型を利用者に提示し、選択された型に対応するメソッド定義を表示することによって、本発明の課題の1つを解決する。すなわち、指定されたインスタンス・メソッドの呼び出しに対応するメソッド定義を表示する際、実行時型に相当するメソッド定義を表示することができる。
さらに、利用者に提示する型の候補が複数ある場合、それらの型は、アプリケーション部分に相当するコード内で生成されているか、アプリケーション部分に属するか、等の情報を利用して、型に対するスコア付けを行い、スコアがより高い型(すなわち、より利用者にとって有益と思われる型)をGUI画面上の見やすく、かつ、選択しやすい箇所に出力することによって、本発明の課題の1つを解決する。すなわち、指定されたインスタンス・メソッドの呼び出しに対応するメソッド定義を表示する際に、複数のメソッド定義の候補の中から利用者によって選択される可能性が高いものほど選択しやすい場所に表示することができる。
次に、本発明の第1の実施例について図面を参照して詳細に説明する。
図2を参照すると、本実施例に係る情報表示装置10は、プログラム制御によって動作する計算機18と、メモリやハードディスク等の記憶装置17とを備える。計算機18は、キーボード、マウス等を有する入力部11と、モニタ等を有する出力部16とに接続される。計算機18は、実行時型収集部12、第1の並び替え(スコア割り当て)部A13、第2の並び替え(スコア割り当て)部B14及び選択結果表示部15を備える。記憶装置17は、参照情報、生成情報、APP/LIB情報及びソースコードを保持する。
これらの各部は、次のように動作する。入力部11は、ユーザ(利用者)が出力部(モニタ等)16に表示されたソースコード閲覧・編集用のGUI(グラフィカル・ユーザ・インタフェース、非図示)に基づいて、行う入力を受け付ける。本実施例において、入力部11は、ユーザが閲覧用のGUIに基づいて、インスタンス・メソッドの呼び出し部分を選択し、かつ、その定義情報を表示させる旨の指示を行ったことを検知する。
実行時型収集部12は、入力部11によって選択されたインスタンス・メソッドの呼び出し情報を受信すると、当該インスタンス・メソッドのレシーバ・オブジェクトを参照する変数に対する実行時型情報を参照情報から読み込む。読み込んだ型の情報から図3に示すような、並び替え情報を構成し、第1の並び替え(スコア割り当て)部A13に送信する。
参照情報Aは、記憶装置17に保持される参照情報の具体例である。参照情報Aは、変数とその変数によって実行時に参照される可能性のある型の集合と、を対応づける表である。かかる参照情報Aは、例えば、CHA(クラス・ヒエラルキー・アナリシス)や、RTA(ラピッド・タイプ・アナリシス)、VTA(バリアブル・タイプ・アナリシス)、ポインタ解析などによって生成することができる。特に、CHAとRTAの結果として得られる参照情報は、図4に示す参照情報Bの構成からなる。一方、flow−sensitive(フロー・センシティブ)なポインタ解析の結果として得られる参照情報は、図5に示す参照情報Cの構成からなる。これらの参照情報B、Cに基づく処理については、後述する。
並び替え情報は型情報に加えて、並べ替えのためのスコア情報を有する。生成時のスコアの初期値は0とする。
並び替え(スコア割り当て)部A13は、並び替え情報を受信すると、生成情報Aから、並び替え情報に含まれる各型の生成情報を取得する。各型に対応する値がtrueの場合に限って、並び替え情報の対応するスコアの値に、例えば、2を加える。処理終了後、並び替え(スコア割り当て)部A13は並び替え情報を並び替え(スコア割り当て)部B14に送信する。
生成情報の具体例を生成情報Aに示す。本実施例において、プログラムはアプリケーション部(APP)とライブラリ部(LIB)とに分割されているものとする。例えば、広く利用されているプログラム開発環境Eclipse(エクリプス)においては、アプリケーション部とライブラリ部とが区切られて管理される。生成情報Aは、各型がプログラムのアプリケーション部で生成されているか否かをtrue又はfalseによって示す。かかる生成情報は、アプリケーション部のソースコードに登場するオブジェクト生成命令(例えば、命令new)の対象となる型を収集することによって、生成することができる。本実施例では、あらかじめ記憶装置17に生成情報が保持されているものとする。
並び替え(スコア割り当て)部B14は、並び替え情報を受信すると、記憶装置17が保持するAPP/LIB情報から、並び替え情報に含まれる各型のAPP/LIB情報を取得する。当該型がアプリケーション部(APP)に含まれる場合のみ、並び替え情報の対応するスコアの値に、例えば、1を加える。処理終了後、並び替え(スコア割り当て)部B14は、並び替え情報を選択結果表示部15に送信する。
APP/LIB情報の具体例をAPP/LIB情報Aに示す。先に述べた通り、プログラムはアプリケーション部とライブラリ部に分割され、APP/LIB情報Aは、ある型がアプリケーション部(APP)に属するかライブラリ部(LIB)に属するかを型と値(APP又はLIB)との組によって格納している。
選択結果表示部15は、並び替え情報を受信すると、並び替え情報に含まれる型をリスト型のデータ構造に格納し、各型に対応するスコアの値によって降順にソートした後、ソートしたリストを出力部16に送信する。また、選択結果表示部15は、利用者が選択した型を入力部11から受信し、その型に対応するクラス定義をソースコードから読み込む。さらに、選択結果表示部15は、クラス定義に含まれる、選択されたインスタンス・メソッドに対応するメソッド定義を、出力部16を介してGUI画面に出力する。
次に、図6のフローチャートを参照して本実例に係る情報表示装置10全体の動作について詳細に説明する。
入力部11は、利用者のGUIへの入力を検出し、GUIに表示されているソースコードのインスタンス・メソッドの呼び出し箇所が選択され、その定義の表示を求める入力が利用者より与えられた場合には、実行時型収集部12に選択されたインスタンス・メソッドの情報を送信する。インスタンス・メソッドの情報とは、そのインスタンス・メソッドが登場するソースコード中の場所、レシーバ・オブジェクトを参照する変数名、メソッドを表現する文字列(シグニチャ)等を含む。実行時型収集部12は、インスタンス・メソッドの情報を受信すると、記憶装置17に格納された参照情報から、そのインスタンス・メソッドのレシーバ・オブジェクトを参照する変数に対する型の情報(実行時型)を取り出す(図6のステップS11)。
先に述べたように、参照情報は、例えば、CHA、RTA、VTA、ポインタ解析によって生成することができる。特に、CTAとRTAの場合、変数と型の集合が対応した表ではなく、型と型の集合との対応を示す表が得られる(図4の参照情報B)。この場合、選択されたインスタンス・メソッドのレシーバ・オブジェクトを参照する変数が定義された型に対する型の集合を取得する。また、flow−sensitiveなポインタ解析の場合、変数はプログラム中に登場する場所によって区別されるため、図5の参照情報Cに示すように、変数及び場所の組と型の集合との対応を示す表が得られる。この場合、当該インスタンス・メソッドのレシーバ・オブジェクトを参照する変数と、その変数が登場するプログラム中の場所とに基づいて、型の集合を取得する。
実行時型収集部12は、レシーバ・オブジェクトを参照する変数の実行時型を示す型の集合を用いて、図3に示す並び替え情報を生成する。第1列の型A、Bはそれぞれ実行時型の集合の要素にそれぞれ対応する。一方、第2列のスコアは整数とし、初期値として0が設定されるものとする。
レシーバ・オブジェクトを参照する変数の実行時型の集合の要素数が2以上である(1より大きい)場合(ステップS12のYes)には、実行時型収集部12は、生成した並び替え情報を並び替え(スコア割り当て)部A13に送信する。一方、要素数が1の場合(ステップS12のNo)には、ソートの必要がないため、実行時型収集部12は、並び替え情報を直接、選択結果表示部15に送信する。なお、要素数が0の場合は、実行時型の解析に失敗するなどの問題が発生している可能性があるために、この段階でエラーを出力して処理を終える。
次に、並び替え(スコア割り当て)部A13は、並び替え情報を受信すると、記憶装置17に格納された生成情報から、各型の生成情報を取得する。各型の生成情報の値がtrueである場合には、その型のオブジェクトはプログラムのアプリケーション部で生成される。並び替え情報に含まれる型のそれぞれについて、生成情報の値がtrueである場合には対応するスコアの値に2を加える(ステップS13)。本実施例においては、スコアの値が大きいほど利用者にとって有益な情報である可能性が高いものと判定する。すなわち、本実施例は、アプリケーション部で生成されている型の情報の方が、ライブラリ部で生成されている型の情報よりも、ユーザにとって有益であるとの仮定に基づく。並び替え(スコア割り当て)部A13は並び替え情報に含まれるすべての型を処理すると、前記並び替え情報を並び替え(スコア割り当て)部B14に送信する。
並び替え(スコア割り当て)部B14は、並び替え情報を受信すると、記憶装置17に格納されたAPP/LIB情報から、各型のAPP/LIB情報を取得する。型に対応する値がAPPである場合にはその型定義はアプリケーション部に属し、LIBである場合にはライブラリ部に属する。並び替え(スコア割り当て)部B14は、並び替え情報の各型について、APP/LIB情報の対応する値を調べ、値がAPPであればその型に対応するスコアに1を加える(ステップS14)。すべての型について処理を終えると、並び替え(スコア割り当て)部B14は、並び替え情報を選択結果表示部15に送信する。なお、本実施例では、アプリケーション部に属する型定義の方が、ライブラリ部に属する型定義よりも、ユーザにとって有益であるものとの仮定に基づく。
ランク付け処理A(ステップS13)とランク付け処理B(ステップS14)とによって、アプリケーション部で生成され、かつ、型定義がアプリケーション部に属する型のスコアは3(最高)、アプリケーション部で生成され、かつ、型定義がライブラリ部に属する型のスコアは2、アプリケーション部で生成されず、かつ、型定義がアプリケーション部に属する型のスコアは1、それ以外の型のスコアは0となる。スコア付けの方法は本実施の形態の通りである必要はない。本実施例においては、スコアの割り当てについての好適な事例を示したにすぎない。したがって、ステップS13、S14において加算されるスコアの値を変更し、優先度を変更してもよい。
選択結果表示部15は、並び替え情報を受信すると、並び替え情報を降順でソートし(すなわちスコアが大きいものほどリストの上位に位置する)、ソートした順番に基づいて、型情報をGUI上にリスト表示する(ステップS15)。リスト上位の型を表示するリスト・アイテムに対し、デフォルトでフォーカスを与えておくことが好ましい。デフォルトでフォーカスを与えておくことによって、例えば、Enterキーを押すなどの簡単な操作によって利用者による選択を完了させることができる。また、表示形式は、必ずしもリスト形式である必要はなく、スコアの大きい型ほど利用者にとって見やすいものであればよい。したがって、ソートした後、スコアの降順でGUI表示をする代わりに、又は、かかる表示とともに、スコアが大きい型ほど文字のフォントのサイズを大きくしたり、見やすい色としたり、又は、文字を強調処理してもよい。選択結果表示部15は、先に提示した型の一覧の中から利用者が何を選択したかに関する情報を、入力部11から受信した場合、選択された型に対応する定義情報を記憶装置17に格納されたソースコードから取り出す。さらに、選択結果表示部15は、取り出した型定義に含まれ、かつ、選択されたインスタンス・メソッドに対応するメソッド定義を出力部16へ送信する。出力部16は、受信したメソッド定義をGUI画面上に表示する(ステップS16)。なお、オブジェクト指向型言語は継承の機能を有するため、選択されたインスタンス・メソッドのメソッド定義が取り出された型の定義情報に含まれていない場合があり得る。そこで、かかる場合には、取り出された型の親の型を継承木に基づいて探索し、もっとも取り出された型に近い(継承木において当該型への最も短いパスが存在する)親の型定義に含まれるメソッド定義をソースコードから取得して表示する。
なお、実行時型が複数ある場合であっても、並び替え(スコア割り当て)部A13及び並び替え(スコア割り当て)部B14の処理を省略して、実行時型収集部12から、直接、選択結果表示部15に並び替え情報を送信し、選択結果表示部15はスコアを考慮することなく型情報を表示してもよい。また、並び替え(スコア割り当て)部A13の処理(ステップS13)と並び替え(スコア割り当て)部B14の処理(ステップS14)とは、順序を逆にしてもよいし、並行して(並列に)処理を進めた後に、各処理において、割り当てられたスコアの値を集計して、各型に対するスコアを算出するようにしてもよい。また、並び替え(スコア割り当て)部A13の処理(ステップS13)と並び替え(スコア割り当て)部B14の処理(ステップS14)のいずれかを省略してもよい。
次に、本実施例の情報表示装置の効果について説明する。情報表示装置10は、インスタンス・メソッドの定義を表示する際、インスタンス・メソッドのレシーバ・オブジェクトを参照する変数の定義型ではなく、実行時型を参照情報から取得して表示するように構成されている。したがって、情報表示装置10はインスタンス・メソッドの実行時型に対応する定義情報を表示することができる。また、本実施例では、実行時型に対応する複数の型にスコアをつけることによって、候補となる型の一覧を利用者にとって有益なものほど見やすく、又は、選択しやすい形式によって提示するように構成されている。したがって、利用者は少ない労力で必要とする型を選択し、必要な定義情報を参照することができる。
次に、本発明の第2の実施例に係る情報表示装置について図面を参照して説明する。
本実施例に係る情報表示装置10の動作を、図8に示すプログラムを例として説明する。利用者は4行目の「p.foo();」に対応する定義情報を要求したとする。また、App、Q、R、はアプリケーション部に属する型であり、PとLibはライブラリ部に属する型であるとする。クラスAppの中において、3行目のnewによってRが生成されているため、生成情報は型Rに対してのみtrueとなる。
ここでは、4行目に登場する変数pに対応する型の集合(実行時型)に対する参照情報について説明する。CHA、RTA、VTA、ポインタ解析、のいずれを利用して生成したかによって、参照情報の内容は異なったものとなる。CHAの場合、型の集合には{P、Q、R}が含まれる。RTAの場合には{Q、R}が含まれる。VTAとポインタ解析の場合には{R}のみが含まれる。ここでは、一例として、CHAを用いた場合について説明する。このとき、変数pに対応する型の集合は{P、Q、R}である。
実行時型収集部12はp.foo()のレシーバ・オブジェクトを参照する変数の参照情報を取得する。前記変数はpであり、対応する参照情報は{P、Q、R}である。
次に、並び替え(スコア割り当て)部A13は、P、Q、Rそれぞれについて生成情報を用いてスコアを付ける。上記の通り、Rのみがアプリケーション部分(App)の中で生成される。したがって、Pには0、Qには0、Rには2のスコアが割り当てられる。
次に、並び替え(スコア割り当て)部B14は、P、Q、RそれぞれについてAPP/LIB情報を用いてスコアを割り当てる。いま、PはLIB、QとRはAPPであるため、Pには0、QとRには1のスコアが割り当てられる。並び替え(スコア割り当て)部A13において割り当てられたスコアと足し合わせると、結局、Pには0、Qには1、Rには3がスコアとして付けられる。
このとき、選択結果表示部15は、Rを最も見やすい場所に表示し、次にQ、最後にPの順で見やすい場所に表示される。なお、RTAの場合には、同様にして、R、Qの順で見やすい場所に表示される。このように、選択結果表示部15によって、最も見やすく、かつ、選択しやすい場所に表示される型はRとなる。4行目における変数pによって、実行時に参照されるオブジェクトの型は3行目よりRである。したがって、利用者には、最も見やすい場所に、実行時におけるインスタンス・メソッドの処理内容に応じた定義情報が表示されることになる。
選択結果表示部15は、利用者がPを選択した場合には9行目の定義、Qを選択した場合には12行目の定義、Rを選択した場合には15行目の定義を、それぞれGUI画面上に表示する。
本発明は、プログラムの開発を支援するプログラム開発環境のプログラム閲覧機能といった用途に適用することができる。また、プログラムの閲覧を支援するプログラム閲覧ツールといった用途にも適用することができる。
なお、前述の特許文献等の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。

Claims (7)

  1. 変数によって実行時に参照され得る型を予め参照情報として記録した記憶装置と、
    利用者によって選択されたインスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照される可能性のある型を前記参照情報から抽出する実行時型収集部と、
    抽出された型に含まれる前記インスタンス・メソッドの定義情報を表示する選択結果表示部と、
    プログラムのうちの新規に開発されたモジュールであるアプリケーション部に含まれるコード中で生成されるオブジェクトの型とプログラムのうちの既存のモジュールであるライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して、それぞれスコアを割り当てる並び替え部と、を備え、
    前記並び替え部は、前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当て、
    前記選択結果表示部は、スコアの降順にソートして各型に含まれるインスタンス・メソッドの定義情報を表示する、情報表示装置。
  2. 前記選択結果表示部は、スコアの高い型における前記インスタンス・メソッドの定義情報ほど、フォントのサイズを大きくしたり、強調表示したりして表示する、請求項1に記載の情報表示装置。
  3. コンピュータが、変数によって実行時に参照され得る型を予め参照情報として記録した記憶装置を参照して、利用者によって選択されたインスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照され得る型を前記参照情報から抽出する実行時型収集工程と、
    抽出された型に含まれる前記インスタンス・メソッドの定義情報を表示する選択結果表示工程と、
    プログラムのうちの新規に開発されたモジュールであるアプリケーション部に含まれるコード中で生成されるオブジェクトの型とプログラムのうちの既存のモジュールであるライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して、それぞれスコアを割り当てるスコア割り当て工程と、を含み
    前記スコア割り当て工程において、前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当て、
    前記選択結果表示工程において、スコアの降順にソートして各型に含まれるインスタンス・メソッドの定義情報を表示する、情報表示方法。
  4. コンピュータが、前記選択結果表示工程において、スコアの高い型における前記インスタンス・メソッドの定義情報ほど、フォントのサイズを大きくしたり、強調表示したりして表示する、請求項3に記載の情報表示方法。
  5. 変数によって実行時に参照され得る型を予め参照情報として記録した記憶装置を参照して、利用者によって選択されたインスタンス・メソッドのレシーバ・オブジェクトを参照する変数によって実行時に参照され得る型を前記参照情報から抽出する実行時型収集処理と、
    抽出された型に含まれる前記インスタンス・メソッドの定義情報を表示する選択結果表示処理と、
    プログラムのうちの新規に開発されたモジュールであるアプリケーション部に含まれるコード中で生成されるオブジェクトの型とプログラムのうちの既存のモジュールであるライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して、それぞれスコアを割り当てるスコア割り当て処理と、をコンピュータに実行させ、
    前記スコア割り当て処理において、前記アプリケーション部に含まれるコード中で生成されるオブジェクトの型に対して、前記ライブラリ部に含まれるコード中で生成されるオブジェクトの型に対して割り当てられるスコアよりも高いスコアを割り当てる処理を前記コンピュータに実行させ、
    前記選択結果表示処理において、スコアの降順にソートして各型に含まれるインスタンス・メソッドの定義情報を表示する処理を前記コンピュータに実行させる、プログラム。
  6. 前記選択結果表示処理において、スコアの高い型における前記インスタンス・メソッドの定義情報ほど、フォントのサイズを大きくしたり、強調表示したりして表示する処理を前記コンピュータに実行させる、請求項5に記載のプログラム。
  7. 前記参照情報は、CHA(クラス・ヒエラルキー・アナリシス)、RTA(ラピッド・タイプ・アナリシス)、VTA(バリアブル・タイプ・アナリシス)及びポインタ解析の少なくともいずれかによって生成されたものである、請求項1または2に記載の情報表示装置。
JP2009554357A 2008-02-19 2009-02-19 情報表示装置、方法及びプログラム Expired - Fee Related JP5359891B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009554357A JP5359891B2 (ja) 2008-02-19 2009-02-19 情報表示装置、方法及びプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008037604 2008-02-19
JP2008037604 2008-02-19
JP2009554357A JP5359891B2 (ja) 2008-02-19 2009-02-19 情報表示装置、方法及びプログラム
PCT/JP2009/052830 WO2009104658A1 (ja) 2008-02-19 2009-02-19 情報表示装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2009104658A1 JPWO2009104658A1 (ja) 2011-06-23
JP5359891B2 true JP5359891B2 (ja) 2013-12-04

Family

ID=40985536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009554357A Expired - Fee Related JP5359891B2 (ja) 2008-02-19 2009-02-19 情報表示装置、方法及びプログラム

Country Status (3)

Country Link
US (1) US20100328202A1 (ja)
JP (1) JP5359891B2 (ja)
WO (1) WO2009104658A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04181426A (ja) * 1990-11-16 1992-06-29 Hitachi Ltd オブジェクト指向プログラム表示方法
JP2002517815A (ja) * 1998-06-03 2002-06-18 マイクロソフト コーポレイション オブジェクトベースプログラミングでのメソッド参照

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04181436A (ja) * 1990-11-16 1992-06-29 Fujitsu Ltd デバック方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04181426A (ja) * 1990-11-16 1992-06-29 Hitachi Ltd オブジェクト指向プログラム表示方法
JP2002517815A (ja) * 1998-06-03 2002-06-18 マイクロソフト コーポレイション オブジェクトベースプログラミングでのメソッド参照

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6013022166; Brunelle, P.-L., Merlo, E. and Antoniol, G.: 'Investigating Java Type Analyses for the Receiver-Classes Testing Criterion' IEEE Proceedings of the 14th International Symposium on Software Reliability Engineering(ISSRE'03) , 20031120, pp.419-429, IEEE *
JPN6013022167; 宮本信二: 連載:Eclipse3ではじめるJava Webアプリケーション開発 第4回 Eclipseの便利な機能 , 20050209 *

Also Published As

Publication number Publication date
JPWO2009104658A1 (ja) 2011-06-23
WO2009104658A1 (ja) 2009-08-27
US20100328202A1 (en) 2010-12-30

Similar Documents

Publication Publication Date Title
US10120654B2 (en) Domain specific language design
US8578328B2 (en) Method for presenting candidate for link target to component in web application, as well as computer program and computer system for the same
US7415696B2 (en) Extensible help facility for a computer software application
JP4965623B2 (ja) 所定のソフトウェアの実行パラメータを入力フィールドへ入力することを支援するための方法、システム、およびプログラム
US9465726B2 (en) Abstract layer for automatic user interface testing
US20130262968A1 (en) Apparatus and method for efficiently reviewing patent documents
US20220004705A1 (en) Personalization of content suggestions for document creation
US9471405B1 (en) Methods and systems for access to legacy programs using non-legacy interfaces
JP5962277B2 (ja) 文書関連付け装置及びプログラム
JP2006228228A (ja) アクティブコンテンツウィザードおよびヘルプ機能を改善する方法
KR20050061534A (ko) 툴-팁 재생 시스템, 툴-팁 디스플레이 방법 및 머신 판독가능 저장 장치
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
JP2004341671A (ja) 情報処理システム、制御方法、制御プログラム、及び記録媒体
CN111507074B (zh) 数据处理方法及装置、处理器、电子设备及存储介质
US8560943B2 (en) Displaying documents on mobile devices
US8701086B2 (en) Simplifying analysis of software code used in software systems
CN112799760B (zh) 一种表单渲染方法及其装置
US20150261388A1 (en) Method and apparatus for gesture operation on address bar and touch screen terminal
JP5359891B2 (ja) 情報表示装置、方法及びプログラム
JP2012064051A (ja) ヘルプ表示装置、ヘルプ表示方法及びヘルプ表示プログラム
JP2006513470A (ja) データベースへのアクセス方法及び装置
US20070124686A1 (en) Locating graphical elements for an object
US11163938B2 (en) Providing semantic based document editor
JP3988900B2 (ja) 文書処理装置およびそのプログラム記憶媒体
JP2009205372A (ja) 情報処理装置及び情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130716

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: 20130806

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130819

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees