JP2013097470A - ソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラム - Google Patents

ソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラム Download PDF

Info

Publication number
JP2013097470A
JP2013097470A JP2011238002A JP2011238002A JP2013097470A JP 2013097470 A JP2013097470 A JP 2013097470A JP 2011238002 A JP2011238002 A JP 2011238002A JP 2011238002 A JP2011238002 A JP 2011238002A JP 2013097470 A JP2013097470 A JP 2013097470A
Authority
JP
Japan
Prior art keywords
source file
function
unit
information
definition data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011238002A
Other languages
English (en)
Inventor
Taichi Ishizaka
太一 石阪
Shigeki Suzuki
繁樹 鈴木
Yamahiko Ito
山彦 伊藤
Noriyuki Komiya
紀之 小宮
Takeru Kuroiwa
丈瑠 黒岩
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2011238002A priority Critical patent/JP2013097470A/ja
Publication of JP2013097470A publication Critical patent/JP2013097470A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】プログラムの実装中に、好適に既存プログラムの再利用を支援する。
【解決手段】ソースファイル監視部222は、実装を行うためにエディタでソースファイルが開かれたり変更されると、このソースファイルをアクティブソースファイルとして、ソースファイル解析部232に通知する。ソースファイル解析部232は、アクティブソースファイルから参照可能な定義データ(関数、変数等)に関する関数名、変数名、処理概要等の情報を取得し、解析結果格納部27に格納する。補助画面制御部26は、解析結果格納部27に格納された情報を、補助画面132に表示する。
【選択図】図2

Description

本発明は、既存のソースファイルの再利用を支援するソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラムに関する。
設備機器用のコントローラの機能をアップデートするためには、組み込まれている既存のプログラム(ソースファイル)に新たなプログラムを追加したり修正する必要がある。このようなプログラムの追加や修正を行う場合、機能が類似している既存のプログラム内の関数等を利用(流用)すれば、プログラムの作成やテストなどに費やす工数を削減することができ、生産性を向上させることができる。
しかしながら、このように既存のプログラムの関数等を流用するためには、人が手作業により、既存のプログラムを比較的詳細に解析する必要がある。従って、既存のプログラムを解析しきれないなどの理由により、プログラム内の関数等を流用できない場合も多かった。
また、このような問題を解決するため、プログラムを解析するための技術も知られている。例えば、特許文献1には、ソースコードを解析して、関数の呼び出し関係と、関数とモジュールとの包含関係とを得て、設定したモジュール単位で表した、モジュール間呼出関連図を作成する技術について開示されている。
特開2008−293486号公報
しかしながら、このような技術は開発前のプログラム全体の構造を解析する構造調査で利用されるのが一般的である。従って、プログラムを実装(コーディング)する際には、構造調査で出力された資料から関連する部分を人が手作業で探して既存関数を流用できるか否かを検討する必要があり、調査結果の有効な活用が出来ていなかった。
本発明は、上記実情に鑑みてなされたものであり、プログラムの実装中に、好適に既存プログラムの再利用を支援することができるソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラムを提供することを目的とする。
上記目的を達成するため、本発明のソースファイル再利用支援装置は、
エディタでソースファイルが開かれた際に、前記ソースファイルをアクティブソースファイルとして検出する監視手段と、
前記監視手段がアクティブソースファイルを検出した際に、前記アクティブソースファイルを解析して、前記アクティブソースファイルから参照可能な定義データに関する情報を取得する解析手段と、
前記解析手段が取得した定義データに関する情報を補助画面に表示する補助画面表示手段と、
を備えることを特徴とする。
本発明によれば、エディタでソースファイルが開かれた際、又は、エディタでソースファイルに変更が加えられた際に、このソースファイルの解析がなされる。従って、プログラムの実装中に、好適に既存プログラムの再利用を支援することができる。
本発明の第1の実施形態に係るソースファイル再利用支援装置の物理的な構成を示す図である。 本発明の第1の実施形態に係るソースファイル再利用支援装置の機能構成図である。 フォルダとソースファイルとの関係を説明するための図である。 指定フォルダ解析処理の動作を説明するためのフローチャートである。 アクティブソースファイル解析処理の動作を説明するためのフローチャートである。 補助画面の例を示す図である。 入力候補表示処理の動作を説明するためのフローチャートである。 入力候補が選択可能に表示されるエディタ画面の例を示す図である。 本発明の第2の実施形態に係るソースファイル再利用支援装置の機能構成図である。 関数名を変更した際に実行される変更内容反映処理の動作を説明するためのフローチャートである。 関数の処理概要を変更した際に実行される変更内容反映処理の動作を説明するためのフローチャートである。 関数の引数を変更した際に実行される変更内容反映処理の動作を説明するためのフローチャートである。 本発明の第3の実施形態に係るソースファイル再利用支援装置の機能構成図である。 共通関数処理の動作を説明するためのフローチャートである。 共通関数処理を具体的に説明するための図である。
以下、本発明の各実施形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付す。また、特に言及が無い場合、ソースファイル(ソースコード)はC言語で記載されているものとして説明する。
<<第1の実施形態>>
本発明の第1の実施形態に係るソースファイル再利用支援装置100について説明する。このソースファイル再利用支援装置100は、既存のソースファイル(ソースコード)内で定義されている関数や変数等の再利用(流用)を支援するための装置である。
ソースファイル再利用支援装置100は、物理的には、図1に示すように、通信部11と、操作部12と、表示部13と、記憶部14と、入出力I/F部15と、制御部16と、を備える。各部はバス17を介して互いに接続されている。
通信部11は、通信ネットワーク2を介して、ネットワーク2上の図示せぬ情報処理装置等と通信を行うものであり、通信インタフェース等を備える。例えば、通信部11は、再利用の対象とするソースファイル等を、これらネットワーク2上の情報処理装置から受信してもよい。
操作部12は、ソースファイル再利用支援装置100に様々な情報を入力するために使用するものであり、キーボード等の入力装置を備える。
表示部13は、様々な情報を出力するものであり、液晶ディスプレイ等の表示装置を備える。また、表示部13には、エディタ画面131と補助画面132とが表示される。エディタ画面131は、ソースファイルを実装(コーディング)用の専用のエディタで開いた際に表示される画面であり、エディタ画面131上から、ソースファイルを編集等することが可能である。補助画面132は、エディタ画面131に表示されているソースファイル内から参照可能な関数、変数、定数等に関する各種の情報が表示される画面である。補助画面132の詳細については後述する。
記憶部14は、様々な情報、プログラム、及び、ソフトウェア開発ツールやエディタなどのアプリケーション等を記憶するものであり、ハードディスク等の補助記憶装置を備える。
入出力I/F部15は、入出力機器3を接続するためのインタフェースである。例えば、処理の対象となるソースファイルを、通信部11ではなく、入出力I/F部15を介して、CD−ROMドライブ等の入出力機器3から取り込むこともできる。
制御部16は、データの演算処理を行うと共に、バス17を介して通信部11、操作部12、出力部13、記憶部14、入出力I/F部15を制御するものであり、CPU(Central Processing Unit)16a、ROM(Read Only Memory)16b、RAM(Random Access Memory)16c等を備える。制御部16における演算処理及び制御処理は、具体的には、CPU16aが、RAM16cを作業領域として使用して各種データを一時的に記憶させながら、ROM16bに記憶されている制御プログラムを実行することにより行われる。
ソースファイル再利用支援装置100は、機能的には、図2に示すように、ソースファイル格納部21と、解析対象監視部22と、ファイル解析部23と、エディタ画面制御部24と、入力候補解析部25と、補助画面制御部26と、解析結果格納部27とを備える。なお、これらの各構成要素のうち解析対象監視部22と、ファイル解析部23と、エディタ画面制御部24と、入力候補解析部25と、補助画面制御部26とは、図1に示した制御部16が、同じく図1に示した通信部11、操作部12、出力部13、記憶部14、又は入出力I/F部15を制御することにより実現される。また、ソースファイル格納部21と解析結果格納部27とは、図1に示す記憶部14により主に実現される。
ソースファイル格納部21には、再利用の対象となるソースファイルが格納されている。なお、各ソースファイルは、機能やプロジェクトやライブラリ等に対応したフォルダ毎に格納されており、ソースファイル格納部21には、ソースファイルが格納されているフォルダの構成情報も含めて記憶されている。
また、ソースファイルが格納されるフォルダのなかから指定フォルダが設定される。ソースファイルで定義されている外部変数と外部関数は、指定フォルダおよび指定フォルダ以下のフォルダ内の他のソースファイルからのみ参照可能となる。
ここで、図3を参照して、フォルダとソースファイルとの関係について説明する。フォルダAには、ソースファイル「aaa.c」、「bbb.c」、「ccc.c」、及び、フォルダB、Cが格納されている。また、フォルダB、Cには、それぞれ、ソースファイル「ddd.c」、「eee.c」とソースファイル「fff.c」、「ggg.c」とが格納されている。また、例えば、フォルダAが指定フォルダに設定されている場合は、この図の全てのソースファイル間で、外部変数、外部関数を参照可能である。
図2に戻り、解析対象監視部22は、フォルダ監視部221と、ソースファイル監視部222とを備える。
フォルダ監視部221は、ソースファイル格納部21内のソースファイルが格納されているフォルダを監視して、指定フォルダが新たに設定された場合、または、指定フォルダの変更があった場合に、その旨をファイル解析部23に通知する。
ソースファイル監視部222は、ソースファイル格納部21内のソースファイルを監視し、エディタで開かれた、又は、エディタ上で変更が加えられたソースファイル(アクティブソースファイル)を検知し、その旨をファイル解析部23に通知する。
ファイル解析部23は、フォルダ解析部231と、ソースファイル解析部232とを備える。
フォルダ解析部231は、フォルダ監視部221によって通知された指定フォルダ以下に格納されている全てのソースファイル内で定義されている関数や変数や定数等に関する情報を取得し、フォルダデータ格納部に格納する。なお、本実施形態では、define構文で定義されているものを定数として扱う。
ソースファイル解析部232は、ソースファイル監視部222によって通知されたアクティブソースファイルを解析して、アクティブソースファイル内から参照可能な、関数や変数等の定義データに関する情報を取得する。この際、フォルダ解析部231は、アクティブソースファイル内で定義された定義データ(ローカル定義データ)と、アクティブソースファイル以外のソースファイルで定義された定義データ(外部定義データ)とを区別して各定義データに関する情報を取得し、取得した情報を解析結果格納部27のローカルデータ格納部271および外部データ格納部272に格納する。
エディタ画面制御部24は、エディタでソースファイルを開いた際に表示部13に表示されるエディタ画面131の表示を制御する。エディタ画面制御部24は、ファイル内容表示部241と、入力データ監視部242と、入力候補表示部243とを備える。
ファイル内容表示部241は、エディタ画面制御部24の主要な機能を担い、エディタ画面131に表示されるソースファイルの内容を制御する。例えば、ファイル内容表示部241は、ユーザからの操作に応じて、エディタ画面131に表示されているソースファイルをスクロールさせたり、ハイライト表示させたりする表示制御を行う。
入力データ監視部242は、エディタ画面131に表示されているソースファイルへの入力を監視し、所定文字数以上(例えば、3文字以上)のスペースを含まない連続した文字列の入力が有った際に、その文字列を入力候補解析部25に出力する。
入力候補表示部243は、入力候補解析部25によって検出された現在入力中の文字列に対応する入力の候補を、エディタ画面131上に表示する。
図2に戻り、入力候補解析部25は、入力データ監視部242から入力された文字列で入力候補格納部274内のローカル候補リスト274aと外部候補リスト274bとを検索し、入力の候補となる関数や変数の一覧を取得する。
補助画面制御部26は、補助画面132の表示を制御する。また、補助画面制御部26は、ローカルデータ表示部261と、外部データ表示部262と、フォルダデータ表示部263とを備える。ローカルデータ表示部261は、ローカルデータ格納部271に格納されている情報を補助画面132に表示するための制御を行う。外部データ表示部262は、外部データ格納部272に格納されている情報を補助画面132に表示するための制御を行う。フォルダデータ表示部263は、フォルダデータ格納部273に格納されている情報を補助画面132に表示するための制御を行う。
解析結果格納部27には、ファイル解析部23と入力候補解析部25とによって解析された解析結果が格納される。解析結果格納部27は、ローカルデータ格納部271と、外部データ格納部272と、フォルダデータ格納部273と、入力候補格納部274とを備える。
ローカルデータ格納部271には、ソースファイル解析部232によって取得されたローカル定義データに関する情報が記憶される。具体的には、ローカルデータ格納部271には、アクティブソースファイル内で定義された関数、変数、及び、定数に関する情報のリスト(ローカル関数リスト271a、ローカル変数リスト271b、ローカル定数リスト271c)が格納される。
なお、関数に関する情報は、例えば、関数名、処理概要、引数の型、及び、戻り値の型等を示す情報である。また、変数に関する情報は、例えば、変数名、変数の内容、及び、変数の型等を示す情報である。また、定数に関する情報は、例えば、定数名、定数の内容、及び、定数の値等を示す情報である。
外部データ格納部272には、ソースファイル解析部232によって取得された外部定義データに関する情報が記憶される。具体的には、外部データ格納部272には、アクティブソースファイル以外のソースファイルで定義され、且つ、アクティブソースファイルから外部参照可能な関数、変数、及び、定数に関する情報のリスト(外部関数リスト272a、外部変数リスト272b、外部定数リスト272c)が格納される。
フォルダデータ格納部273には、フォルダ解析部231によって取得された情報が記憶される。具体的には、フォルダデータ格納部273には、指定フォルダ以下に格納されている全てのソースファイル内で定義されている関数、変数、及び、定数に関する情報のリスト(全関数リスト273a、全変数リスト273b、全定数リスト273c)が格納される。
入力候補格納部274には、入力候補解析部25によって取得された入力の候補となる関数や変数のリスト(ローカル候補リスト274a、外部候補リスト274b)が格納される。
続いて、ソースファイル再利用支援装置100の動作について説明する。
(指定フォルダ解析処理)
始めに、指定フォルダ内のソースファイルを解析する指定フォルダ解析処理について説明する。
ユーザは、例えば、ソースファイル再利用支援装置100の操作部12を操作して、IDE(Integrated Development Environment)等のプログラム開発ツールのメニュー画面から指定フォルダ設定メニューを開き、指定フォルダを新たに指定したり、指定フォルダを変更するための操作を行う。フォルダ監視部221は、常時(あるいは定期的に)、指定フォルダを監視しており、指定フォルダが新たに作成されたり、又は、変更された場合、その旨をフォルダ解析部231に通知する。フォルダ解析部231は、フォルダ監視部221からの通知に応答して、図4のフローチャートに示す指定フォルダ解析処理を実行する。
指定フォルダ解析処理が実行されると、まず、フォルダ解析部231は、フォルダデータ格納部273に格納されている全関数リスト273a、全変数リスト273b、全定数リスト273cをクリアする(ステップS101)。
続いて、フォルダ解析部231は、フォルダ監視部221から、新たに設定された、又は変更されたと通知された指定フォルダおよび指定フォルダ以下のフォルダに格納されているソースファイルのなかから、未処理のソースファイルを1つ選択する(ステップS101)。
続いて、フォルダ解析部231は、選択したソースファイルを解析して、ソースファイル内で定義されている関数(但し、main関数は除く)を抽出する(ステップS101)。そして、フォルダ解析部231は、抽出した関数毎に、関数名、処理概要、引数の型、戻り値の型、等の情報を取得し、所定の形式(例えば、CSV(Comma Separated Values)形式)でリスト化した全関数リスト273aを作成して、フォルダデータ格納部273に登録する(ステップS102)。なお、既に全関数リスト273aが存在している場合、フォルダ解析部231は、全関数リスト273aに取得した情報を追加する。
なお、関数の抽出、および、抽出した関数の関数名、引数及び戻り値の型等の取得は、ソースファイルを公知の手法により構文解析することで実現可能である。また、関数の処理概要は、予め決められたルールに基づいて、関数定義文の直前のコメント文等から取得すればよい。
続いて、フォルダ解析部231は、選択したソースファイルを解析して、このソースファイル内で定義されている変数を抽出する(ステップS101)。そして、フォルダ解析部231は、抽出した各変数の、変数名、概要、型等の情報を取得し、所定の形式でリスト化した全変数リスト273bを作成して、フォルダデータ格納部273に登録する(ステップS102)。なお、既に全変数リスト273bが存在している場合、フォルダ解析部231は、全関数リスト273aに取得した情報を追加する。
なお、変数の抽出、および、抽出した変数の変数名、型等の取得は、ソースファイルを公知の手法により構文解析することで実現可能である。また、変数の概要等の情報は、予め決められたルールに基づいて、変数定義文の直前のコメント文等から取得すればよい。
続いて、フォルダ解析部231は、選択したソースファイルを解析して、このソースファイル内で定義されている定数を抽出する(ステップS101)。そして、フォルダ解析部231は、抽出した各定数の、定数名、概要、値等の情報を取得し、所定の形式でリスト化した全定数リスト273cを作成して、フォルダデータ格納部273に登録する(ステップS102)。なお、既に全定数リスト273cが存在している場合、フォルダ解析部231は、全定数リスト273cに取得した情報を追加する。
なお、定数の抽出、および、抽出した定数の定数名、値等の取得は、ソースファイルを公知の手法により構文解析することで実現可能である。また、定数の概要等の情報は、予め決められたルールに基づいて、定数定義文の直前のコメント文から取得すればよい。
続いて、フォルダ解析部231は、指定フォルダおよび指定フォルダ以下のフォルダに格納されている全てのソースファイルについて、ステップS101〜ステップS102の処理が完了したか否かを判別する(ステップS101)。全てのソースファイルで処理が完了していないと判別した場合(ステップS101;No)、フォルダ解析部231は、未処理のソースファイルを選択し、選択したソースファイルで定義されている関数、変数、定数を抽出し、関連する情報をフォルダデータ格納部273に格納する一連の処理(ステップS101〜ステップS102)を繰り返す。全てのソースファイルで処理が完了したと判別した場合(ステップS101;Yes)、指定フォルダ解析処理は終了する。
なお、指定フォルダ解析処理が終了時に、その旨を補助データ制御部のフォルダデータ表示部263に通知し、フォルダデータ表示部263が、フォルダデータ格納部273に格納されている情報を補助画面132に表示してもよい。
(アクティブソースファイル解析処理)
続いて、エディタ画面131に表示したり、エディタ画面131から変更を加えたアクティブソースファイルを解析するアクティブソースファイル解析処理について説明する。
ユーザは、例えば、ソースファイル再利用支援装置100の操作部12を操作して、ソースファイルをエディタ画面131上に開いたり、表示させたソースファイルを編集(変更)する。ソースファイル監視部222は、このように、エディタ画面131上に開かれたり、変更が加えられたソースファイル(アクティブソースファイル)を検知し、その旨をソースファイル解析部232に通知する。ソースファイル解析部232は、ソースファイル監視部222からの通知を受けて、図5のフローチャートに示すアクティブソースファイル解析処理を実行する。
なお、本実施形態では、エディタ画面上で変更したソースファイルが保存されたタイミングで、ソースファイルに変更が加えられたことを検知する。なお、このタイミング以外にも、エディタ画面上で改行が入力されたタイミングや、エディタ画面上で変更が加えられてから所定時間が経過したタイミングで、ソースファイルに変更が加えられたことを検知してもよい。
アクティブソースファイル解析処理が実行されると、まず、ソースファイル解析部232は、ローカルデータ格納部271と外部データ格納部272に記憶されているリストをクリアする(ステップS201)。
続いて、ソースファイル解析部232は、ソースファイル解析部232から通知されたアクティブソースファイルを解析して、アクティブソースファイル内で定義されているmain関数以外の関数(ローカル関数)を抽出する(ステップS202)。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、抽出した各ローカル関数に関する情報(関数名、処理概要、引数の型と概要、戻り値の型と概要等)を取得し、所定の形式(例えば、CSV形式)でリスト化したローカル関数リスト271aを作成して、ローカルデータ格納部271に登録する(ステップS203)。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、アクティブソースファイル内で定義されている変数(ローカル変数)を抽出する(ステップS204)。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、抽出した各ローカル変数の、変数名、概要、型等の情報を取得し、所定の形式でリスト化したローカル変数リスト271bを作成して、ローカルデータ格納部271に登録する(ステップS205)。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、アクティブソースファイル内で定義されている定数(ローカル定数)を抽出する(ステップS206)。具体的には、ソースファイル解析部232は、アクティブソースファイル内のdefine構文で定義されている定数をローカル定数として抽出すればよい。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、抽出した各ローカル定数の、定数名、概要、値等の情報を取得し、所定の形式でリスト化したローカル定数リスト271cを作成して、ローカルデータ格納部271に登録する(ステップS207)。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、アクティブソースファイルから参照可能であり、且つ、アクティブソースファイル以外のソースファイルで定義されている関数(外部関数)を抽出する(ステップS208)。例えば、ソースファイル解析部232は、アクティブデータファイルがインクルードしているヘッダファイル(stdio.h、math.hなどの標準Cライブラリで定義されているものは除く)を解析して、ヘッダファイル内で定義されている関数を外部関数として抽出すればよい。
続いて、ソースファイル解析部232は、ヘッダファイルを解析して、抽出した各外部関数の、関数名、処理概要、引数の型と概要、戻り値の型と概要、等の情報を取得し、所定の形式でリスト化した外部関数リスト272aを作成して、外部データ格納部272に登録する(ステップS209)。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、アクティブソースファイルから参照可能であり、且つ、アクティブソースファイル以外のソースファイルで定義されている変数(外部変数)を抽出する(ステップS210)。例えば、ソースファイル解析部232は、アクティブデータファイルがインクルードしているヘッダファイル(stdio.h、math.hなど標準Cライブラリで定義されているものは除く)を解析して、ヘッダファイル内で定義されている変数を外部変数として抽出すればよい。
続いて、ソースファイル解析部232は、抽出した各外部変数の、変数名、概要、型等の情報を取得し、所定の形式でリスト化した外部変数リスト272bを作成して、外部データ格納部272に登録する(ステップS211)。
続いて、ソースファイル解析部232は、アクティブソースファイルを解析して、アクティブソースファイルから参照可能であり、且つ、アクティブソースファイル以外のソースファイルで定義されている定数(外部定数)を抽出する(ステップS212)。例えば、ソースファイル解析部232は、アクティブデータファイルがインクルードしているヘッダファイル(stdio.h、math.hなど標準Cライブラリで定義されているものは除く)を解析して、ヘッダファイル内のdefine構文で定義されている定数を外部定数として抽出すればよい。
続いて、ソースファイル解析部232は、抽出した各外部定数の、定数名、概要、値等の情報を取得し、所定の形式でリスト化した外部定数リスト272cを作成して、外部データ格納部272に登録する(ステップS213)。
続いて、補助画面制御部26は、ローカルデータ格納部271、外部データ格納部272、および、フォルダデータ格納部273に格納されている情報を表示するための補助画面132を表示部13に表示する(ステップS214)。
ここで、補助画面132の例を図6(A)〜(C)に示す。ユーザは、操作部12を操作して、補助画面の上下に並んだタブからそれぞれ1つを選択する。補助画面制御部26は、選択されたタブに応じて、表示内容を適宜切り替える。
例えば、図6に示す補助画面の左の縦に並んだ3つの「ローカル」タブ、「外部」タブ、「フォルダ」タブは、定義データが定義されている場所に応じて情報の種類を切り換えるためのタブである。また、補助画面の上の横に並んだ3つの「関数」タブ、「変数」タブ、「定数」タブは、表示される情報の種類を切り換えるためのタブである。
例えば、「ローカル」タブと「関数」タブとが選択された場合、補助画面制御部26のローカルデータ表示部261は、ローカルデータ格納部271内のローカル関数リスト271aの内容を一覧表示する図6(A)に示すような補助画面を制御部に表示する。
また、「外部」タブと「変数」タブとが選択された場合、補助画面制御部26の外部データ表示部262は、外部データ格納部272内の外部変数リスト272bの内容を一覧表示する図6(B)に示すような補助画面を制御部に表示する。
また、「フォルダ」タブと「定数」タブとが選択された場合、補助画面制御部26のフォルダデータ表示部263は、フォルダデータ格納部273内の全定数リスト273cの内容を一覧表示する図6(C)に示すような補助画面を制御部に表示する。
なお、補助画面132上の項目をクリックすることで、クリックした項目で表示される内容を昇順、降順にソートしたり、補助画面132内に表示されている内容から指定文字列の検索や、指定文字列を含むものだけを一覧表示する等のテキスト操作も、補助画面132上から行えるものとする。以上でアクティブソースファイル解析処理は終了する。
(入力候補表示処理)
続いて、入力候補表示処理について説明する。
ユーザは、操作部12を操作して、エディタ画面131上に表示されているソースファイルに文字を入力する。エディタ画面制御部24の入力データ監視部242は、ソースファイルへの入力を常時監視しており、スペースや等号等を含まない連続した所定文字数以上(例えば、3文字以上)の連続した文字の入力を検知すると、入力された文字列を入力候補解析部25に通知し、入力候補解析部25は、図7に示す入力候補表示処理を実行する。
まず、入力候補解析部25は、入力データ監視部242から通知された所定文字数の文字列に前方一致する開発言語(本実施形態ではC言語)の予約語(while,switch,return等)が有るか否かを判別する(ステップS301)。
前方一致する予約語があると判別した場合(ステップS301;Yes)、入力候補解析部25は、その予約語を入力候補表示部243に通知する。そして、入力候補表示部243は、通知された予約語を、入力の候補としてエディタ画面131上に表示し(ステップS302)、入力候補表示処理は終了する。
前方一致する予約語がないと判別した場合(ステップS301;No)、入力候補解析部25は、ローカルデータ格納部271内のローカル関数リスト271a、ローカル変数リスト271b、及び、ローカル定数リスト271cを検索して、入力データ監視部242から通知された所定文字数の文字列に前方一致する関数名、変数名、定数名が有るか否かを判別する(ステップS303)。
一致するものがないと判別した場合(ステップS303;No)、入力候補解析部25は、ステップS305に処理を移す。
一致するものがあると判別した場合(ステップS303;Yes)、入力候補解析部25は、一致した関数名、変数名、定数名を所定の形式でリスト化したローカル候補リスト274aを作成して、入力候補格納部274に格納し(ステップS304)、ステップS305に処理を移す。
ステップS305において、入力候補解析部25は、外部データ格納部272内の外部関数リスト272a、外部変数リスト272b、及び、外部定数リスト272cを検索して、入力データ監視部242から通知された所定文字数の文字列に前方一致する関数名、変数名、定数名が有るか否かを判別する。
一致するものがないと判別した場合(ステップS305;No)、入力候補解析部25は、ステップS307に処理を移す。
一致するものがあると判別した場合(ステップS305;Yes)、入力候補解析部25は、一致した関数名、変数名、定数名を所定の形式でリスト化した外部候補リスト274bを作成して、入力候補格納部274に格納(ステップS306)し、ステップS307に処理を移す。
ステップS307において、入力候補表示部243は、入力候補格納部274にローカル候補リスト274aと外部候補リスト274bの少なくとも何れかが格納されているか否かを判別する。
格納されていない場合(ステップS307;No)、入力候補は存在しないこととなり、入力候補表示処理は終了する。
ローカル候補リスト274aと外部候補リスト274bの少なくとも何れかにリストが格納されている場合(ステップS307;Yes)、入力候補表示部243は、格納されているリストに登録されている関数名、変数名、定数名を、現在入力中の文字列に対応する入力の候補としてユーザが選択可能に表示する(ステップS308)。また、この際、入力候補表示部243は、ローカル候補リスト274aと外部候補リスト274bとのどちらの候補リストに登録されていたものであるのかがユーザに分かるように、入力候補を表示する。
続いて、ユーザは、操作部12を操作して、この表示から、入力したい入力候補を選択する。この選択操作に応じて、入力候補表示部243は、選択された入力候補を、エディタ画面131上に反映させる(ステップS309)。以上で入力候補表示処理は終了する。
ここで、ステップS308の処理で作成される画面について、図8の画面例を参照して説明する。この画面では、「get」に続く入力の候補として、「getTemperature()」と「getTempoutdoor」がエディタ画面131上に表示されている。ユーザは、操作部12を操作して、この表示から入力候補を選択可能であり、入力候補表示部243は、選択された入力候補をエディタ画面131上の「get」以降に反映させる。
また、この画面では、各入力候補の右側に、入力候補がローカル候補リスト274aと外部候補リスト274bとのどちらに登録されていたかを示す識別記号が付される。具体的には、ローカル候補リスト274aに登録されていた入力候補には「L」、外部候補リスト274bに登録されていた入力候補には「G」が付されて表示される。ユーザはこの識別記号を確認することで、入力候補が現在開いているソースファイルで定義されているのか、他のソースファイルで定義されているのかを確認することができる。
このように、本実施形態によれば、実装を行うためにエディタでソースファイルが開かれたり、開いたソースファイルが変更されると、このソースファイル(アクティブソースファイル)の解析(変更された場合は再解析)がなされて、アクティブソースファイルから参照可能な定義データ(関数、変数等)に関する情報(関数名、処理概要等)が補助画面132に自動的に表示される。従って、実装作業中のユーザは、自身がコーディングしている(又はコーディングしようとしている)ソースファイル内の各関数や変数等の概要を、補助画面132を通して瞬時に把握することができるため、これらの関数や変数等の再利用を容易に行うことが可能となる。従って、本実施形態に係るソースファイル再利用支援装置100によれば、プログラムの実装中に、好適に既存プログラムの再利用を支援することが可能となる。
また、本実施形態では、アクティブソースファイルから参照可能な定義データを、アクティブソース内で定義されているローカル定義データとアクティブソース以外のソースファイル内で定義されている外部定義データとに区分して、各定義データに関する情報を取得、表示する。従って、ユーザにとっては、全ソースファイルで利用可能なグローバル変数も容易に検出可能となり、同一データを意味するグローバル変数の重複等を防ぐことができ、より有意義な情報をユーザに提供することができる。
また,この本実施形態に係るソースファイル再利用支援装置100によれば、エディタ画面131に入力した文字列と前方一致した関数や変数の入力候補が選択可能に表示されて、選択することで入力を行うことが可能となるため、関数名や変数名の入力ミスや関数や変数で指定する型の間違い違いを防止することができ,開発時間を短縮することが可能となる。なお、入力した文字列と前方一致するだけでなく、後方一致や部分一致するものを入力候補としてもよい。
なお、図6で示した補助画面132に表示される関数名、変数名、定数名、処理概要、型、値等の項目はあくまで一例であり、これら以外の情報を取得して表示してもよい。例えば、コメント文等から関数の利用例や、同一関数を利用している他のファイルなど、解析に有用な他の情報を取得して表示しても良い。また、表示区分も関数、変数、定数としているが、これ以外にもマクロなどを表示しても良い。
また、本実施の形態では、エディタ画面131を実装用の専用のエディタで開いた画面として説明した。しかし、本発明は、このような専用のエディタが無ければ利用できないものではなく、市販の一般的なエディタを利用した場合でも、開いたり変更が加えられたソースファイルなどを検知した信号を取り出して、同様に連携して動作するようしてもよい。
<<第2の実施形態>>
続いて、第2の実施形態に係るソースファイル再利用支援装置200について説明する。ソースファイル再利用支援装置200は、図9に示すように、第1の実施形態に係るソースファイル再利用支援装置100と比較して、補助画面制御部26が変更内容反映部264を備える点のみが異なる。
変更内容反映部264は、補助画面132上から関数や変数の内容を変更した際に、その変更をソースファイルに反映させるための変更内容反映処理を行う。
続いて、ソースファイル再利用支援装置200で実施される変更内容反映処理の動作について説明する。
ユーザは、操作部12を操作して、前述したアクティブソースファイル解析処理で表示した補助画面132に表示されている情報(関数名、処理概要、引数、型)等を変更する。この変更の処理に応答して、変更内容反映部264は、変更内容反映処理を実施する。
(変更内容反映処理:関数名変更)
図10は、補助画面から関数名が変更された場合に実施される変更内容反映処理の動作を説明するためのフローチャートである。
まず、変更内容反映部264は、エディタ画面131に開かれているアクティブソースファイルおよび、アクティブソースファイルがインクルードしているソースファイルを検索して、補助画面132で関数名が変更された関数の定義部分を抽出する(ステップS401)。
そして、変更内容反映部264は、抽出した定義部分で定義されている関数名を、補助画面132で変更された内容と同じになるように変更する(ステップS402)。
続いて、変更内容反映部264は、指定フォルダ以下の全ソースファイルを検索して、関数名を変更した関数を利用(参照)している部分を抽出し、ステップS402と同様に関数名を変更する(ステップS403)。
以上で、関数名を変更した際の変更内容反映処理は終了する。なお、補助画面上から変数名や定数名が変更された場合にも、同様の変更内容反映処理が行われる。
(変更内容反映処理:関数処理概要変更)
図11は、補助画面から関数の処理概要が変更された場合に実施される変更内容反映処理の動作を説明するためのフローチャートである。
まず、変更内容反映部264は、エディタ画面131に開かれているアクティブソースファイルおよび、アクティブソースファイルがインクルードしているソースファイルを検索して、補助画面で処理概要が変更された関数の定義部分を抽出する(ステップS501)。
そして、変更内容反映部264は、抽出した関数定義部分の直前にあるコメント文の内容を、補助画面132で変更された処理概要と同じになるように変更する(ステップS502)。なお、補助画面132の関数の処理概要が空欄であった場合、ソースファイルには対応するコメント文が存在しない。従って、変更内容反映部264は、補助画面132上に新規入力された処理概要を含むコメント分を、抽出した関数定義部分の直前に新たに作成する。
以上で、関数の処理概要を変更した際の変更内容反映処理は終了する。なお、補助画面132上から変数や定数の概要が変更された場合にも、同様の変更内容反映処理が行われる。
(変更内容反映処理:関数の引数を変更)
図12は、補助画面から関数の引数が変更された場合に実施される変更内容反映処理の動作を説明するためのフローチャートである。
まず、変更内容反映部264は、エディタ画面131に開かれているアクティブソースファイルおよび、アクティブソースファイルがインクルードしているソースファイルを検索して、補助画面131で引数が変更された関数の定義部分を抽出する(ステップS601)。
そして、変更内容反映部264は、抽出した定義部分で定義されている引数を、補助画面131で変更された内容と同じになるように変更する(ステップS602)。例えば、補助画面上で新たに引数が加えられたり引数が削除されたりした場合は、抽出した定義部分でも同様に変更を行う。また、補助画面131上で引数の型が変更された場合は、抽出した定義部分でも同様に引数の型の変更を行う。
続いて、変更内容反映部264は、指定ファイル以下の全ソースファイルを検索して、引数を変更した関数を利用(参照)している部分を抽出し、ステップS602と同様に引数を変更する(ステップS603)。なお、引数の型をlong型からshort型へ変更する等の、値範囲が狭くなる変更をする場合は、明示的型変換(キャスト)をする等して、変更により値範囲の整合性が取れなくなることを防ぐようにする。
以上で、関数の引数を変更した際の変更内容反映処理は終了する。なお、補助画面上から関数の戻り値や、変数や定数の型、値が変更された場合にも、同様の変更内容反映処理が行われる。
このように、本実施形態によれば補助画面132で変更した内容が、関数や変数等を利用している全てのソースファイルに自動的に反映されるため、ユーザーが手作業で1つずつ変更を行う場合よりも、迅速且つ正確に行うことができる。
また、本実施形態によれば、補助画面132から変更をすることで修正の漏れなく引数の追加が行えるため、従来、既存コードへの反映漏れに不安があり、ほぼ同様の処理でも新たに関数を作成していたために発生していたコード量の増加や、同様のコードが複数あることによる修正時の修正漏れなどの問題が解決でき、処理を統合した関数を容易に作成することが可能となる。
また、本実施形態によれば、補助画面132から変更をすることで修正漏れの心配なく関数名の変更が行えるため、統一性の無かった既存の関数名を一定の決まりのある統一性のある関数名に変更することが比較的用に行え、関数の再利用時に、より分かりやすく利用することが可能となる。
<<第3の実施形態>>
続いて、第3の実施形態に係るソースファイル再利用支援装置300について説明する。ソースファイル再利用支援装置300は、図13に示すように、第1の実施形態に係るソースファイル再利用支援装置100に新たに共通関数処理部28が追加された構成である。
共通関数処理部28は、関数比較部281と共通関数生成部282とを備える。関数比較部281は、対象とする複数の関数を比較し、処理内容が一致する部分を特定する。共通関数生成部282は、処理内容が一致する部分を抜き出した共通関数を作成し、複数の関数それぞれから参照可能にするための処理を行う。
(共通関数処理)
続いて、ソースファイル再利用支援装置300で実施される共通関数処理の動作について説明する。
ユーザは、操作部12を操作して、共通関数生成処理の対象としたい複数の関数を選択して、プログラム開発ツールのメニュー画面等から、共通関数生成処理の開始を指示する。この指示操作に応答して、共通関数処理部28は、図14に示す共通関数処理を開始する。
まず、関数比較部281は、ユーザが選択した複数の関数を比較し、2つの以上の関数で共通する処理部分(共通処理部分)があるか否かを判別する(ステップS701)。
具体的には、関数比較部281は、比較する各関数の関数定義部分をソースファイルから取得する。そして、関数比較部281は、取得した各関数の関数定義部分のうち、空白(スペース、タブ)やコメント部分を除いた部分を公知のテキスト比較ソフト等を用いて比較し、一致する部分を各関数で共通する処理部分であると判別すればよい。
共通処理部分がないと判別した場合(ステップS701;No)、共通関数処理は終了する。共通処理部分があると判別した場合(ステップS701;Yes)、関数比較部281は、判別した共通処理部分を共通関数化することに有用性(メリット)があるか否かを判別する(ステップS702)。
例えば、関数比較部281は、共通処理部分のサイズ(ソースファイル内の対応部分の行数や文字数等)が所定の閾値以上である場合、共通関数化することでソースファイル全体のコーディング量を削減できるため、有用性があると判別する。若しくは、共通処理部分が、所定数以上の関数内で定義されている場合、共通関数化することでこの処理部分を一元管理できて保守性が大幅に向上するため、有用性があると判別してもよい。さらには、これら2つの条件を組み合わせて、共通処理部分のサイズが所定の閾値以上であり、且つ、共通処理部分が所定数以上の関数内で定義されている場合に、有用性があると判別してもよく、共通処理部分の有用性の判別は任意の基準が採用可能である。
共通処理部分を共通関数化することに有用性がないと判別した場合(ステップS702;No)、共通関数処理は終了する。共通処理部分を共通関数化することに有用性があると判別した場合(ステップS702;Yes)、共通関数生成部282は、この共通処理部分を各関数から抜き出して関数化した共通関数を生成する(ステップS703)。具体的には、共通関数生成部282は、各関数の定義部分から、共通処理部分を切り取る。そして、共通関数生成部282は、ソースファイルを新規作成し、このソースファイルに切り取った共通処理部分を関数化して貼り付ける処理を行う。
続いて、共通関数生成部282は、共通処理部分が抜き出された各関数内で、生成した共通関数を呼び出せるように、ソースファイルを変更する(ステップS704)。以上で共通関数処理は終了する。
具体的には、共通関数生成部282は、共通処理部分が抜き出された各関数が定義されているソースファイルの先頭部分に、共通関数が定義されているソースファイルをインクルードする記載を追加する。そして、共通関数生成部282は、共通処理部分が抜き取られた部分に、生成した共通関数を呼び出す記載を追加する。以上で共通関数処理は終了する。
ここで、共通関数処理について、図15を参照して具体的に説明する。ソースファイル「aaa.c」に定義されている関数Aとソースファイル「bbb.c」に定義されている関数Bとが共通化する対象として選択されて共通関処理が開始された場合を考える。
この場合、関数Aと関数Bとで共通する処理1が共通部分として抜き出され、新たにソースファイル(ヘッダファイル)「c.h」が作成さる。ヘッダファイル「c.h」内に共通処理部分である処理1が共通関数Cとして定義される。
また、共通処理部分として処理1が抜き出されたソースファイル「aaa.c」と「bbb.c」では、ファイルの先頭に共通関数Cが定義されている「c.h」をインクルードする記載が追加される。また、処理1が抜き出された部分には、共通関数Cを呼び出す記載が挿入される。
このように、本実施形態によれば、複数の関数で記述されている使用頻度の高い同一処理を、共通関数として抜き出す。これにより、コード量の削減を図ることが可能となり、
ソースファイルの可読性が向上し、新機関数からの再利用もより容易に行えることが可能となる。
また、本実施形態によれば、関数間での共通処理部分を切り出して共通関数化することに有用性があるか否かを判断し、有用性が低い場合は、共通処理部分を共通関数と抜き出す処理を行わない。従って、処理内容が各関数で共通しているものの、共通している部分(範囲)が非常に狭かったり、極めて少数の関数間でしか共通していないような、共通化することでかえって可読性が悪化するようなケースを防止することも可能となる。
なお、本発明は、上記各実施形態に限定されず、本発明の要旨を逸脱しない部分での種々の変更は勿論可能である。
例えば、上記各実施形態では、C言語で記載されているソースファイルを例にして主に説明したが、JAVA(登録商標)やBASIC等の他のプログラム言語で記載されているソースファイルにも本願発明が適用できるのは勿論である。なお、その場合、それぞれの言語の文法に沿った手法で、ローカル関数、ローカル変数、外部関数、外部変数等に関する情報を取得しなければならないのは勿論である。
また、例えば、本発明に係るソースファイル再利用支援装置100,200,300の動作を規定する動作プログラムを既存のパーソナルコンピュータや情報端末機器等に適用することで、当該パーソナルコンピュータ等を本発明に係るソースファイル再利用支援装置100,200,300として機能させることも可能である。
また、このようなプログラムの配布方法は任意であり、例えば、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
100,200,300 ソースファイル再利用支援装置
131 エディタ画面
132 補助画面
21 ソースファイル格納部
22 解析対象監視部
221 フォルダ監視部
222 ソースファイル監視部
23 ファイル解析部
231 フォルダ解析部
232 ソースファイル解析部
24 エディタ画面制御部
241 ファイル内容表示部
242 入力データ監視部
243 入力候補表示部
25 入力候補解析部
26 補助画面制御部
261 ローカルデータ表示部
262 外部データ表示部
263 フォルダデータ表示部
264 変更内容反映部
27 解析結果格納部
271 ローカルデータ格納部
271a ローカル関数リスト
271b ローカル変数リスト
271c ローカル定数リスト
272 外部データ格納部
272a 外部関数リスト
272b 外部変数リスト
272c 外部定数リスト
273 フォルダデータ格納部
273a 全関数リスト
273b 全変数リスト
273c 全定数リスト
274 入力候補格納部
274a ローカル候補リスト
274b 外部候補リスト
28 共通関数処理部
281 関数比較部
282 共通関数生成部

Claims (11)

  1. エディタでソースファイルが開かれた際に、前記ソースファイルをアクティブソースファイルとして検出する監視手段と、
    前記監視手段がアクティブソースファイルを検出した際に、前記アクティブソースファイルを解析して、前記アクティブソースファイルから参照可能な定義データに関する情報を取得する解析手段と、
    前記解析手段が取得した定義データに関する情報を補助画面に表示する補助画面表示手段と、
    を備えることを特徴とするソースファイル再利用支援装置。
  2. 前記監視手段は、前記エディタで開かれたソースファイルに変更が加えられたことを検知し、
    前記解析手段は、前記監視手段がソースファイルの変更を検知した際に、前記ソースファイルを解析して、前記ソースファイルから参照可能な定義データに関する情報を再取得する、
    ことを特徴とする請求項1に記載のソースファイル再利用支援装置。
  3. 前記定義データは、前記アクティブソースファイル内で定義されているローカル定義データと、前記アクティブソースファイルから参照可能な他のソースファイル内で定義されている外部定義データとを含み、
    前記解析手段は、前記ローカル定義データに関する情報と、前記外部定義データに関する情報とを取得し、
    前記補助画面表示手段は、前記解析手段が取得した前記ローカル定義データに関する情報と前記外部定義データに関する情報とを区分して補助画面に表示する、
    ことを特徴とする請求項1又は2に記載のソースファイル再利用支援装置。
  4. 前記アクティブソースファイルに所定文字数以上の文字列が入力されたことを検出する入力監視手段と、
    前記入力監視手段が所定文字数以上の文字列の入力を検出した際に、前記解析手段が取得した情報を検索して該文字列に前方一致する前記定義データの名称を取得する入力候補解析手段と、
    前記入力候補解析手段が取得した定義データの名称を、前記アクティブソースファイルへの入力の候補として、ユーザが選択可能に表示する入力候補表示手段と、をさらに備える、
    ことを特徴とする請求項1乃至3の何れか1項に記載のソースファイル再利用支援装置。
  5. 前記補助画面に表示されている定義データに関する情報に変更が加えられた際に、該定義データを定義、及び、利用するソースファイルの部分を、加えられた変更内容と同様に変更する変更内容反映部をさらに備える、
    ことを特徴とする請求項1乃至4の何れか1項に記載のソースファイル再利用支援装置。
  6. ソースファイル内の各関数の定義部分を比較して、複数の関数の間で処理内容が共通する部分を共通処理部分として検出する関数比較手段と、
    前記関数比較手段が検出した共通処理部分が示す処理を関数化した共通処理関数を生成する共通処理関数生成手段と、
    前記複数の関数の定義部分のうち前記共通処理部分があった部分を、前記共通処理関数を呼び出す部分に置換する置換手段と、
    を備えることを特徴とするソースファイル再利用支援装置。
  7. 前記関数比較手段は、前記複数の関数の間で処理内容が共通する部分を所定の基準と比較することで該共通する部分を共通化することの有用性を判別し、有用性があると判別した場合に、該共通する部分を共通処理部分として検出する、
    ことを特徴とする請求項6に記載のソースファイル再利用支援装置。
  8. エディタで開かれたソースファイル、又は、エディタで変更が加えられたソースファイルをアクティブソースファイルとして検出し、
    前記アクティブソースファイルを検出した際に、前記アクティブソースファイルを解析して、前記アクティブソースファイルから参照可能な定義データに関する情報を取得し、
    取得した定義データに関する情報を補助画面に表示する、
    ことを特徴とするソースファイル再利用支援方法。
  9. ソースファイル内の各関数の定義部分を比較して、複数の関数の間で処理内容が共通する部分を共通処理部分として検出し、
    検出した共通処理部分が示す処理を関数化した共通処理関数を生成し、
    前記複数の関数の定義部分のうち前記共通処理部分があった部分を、前記共通処理関数を呼び出す部分に置換する、
    ことを特徴とするソースファイル再利用支援方法。
  10. コンピュータを、
    エディタで開かれたソースファイル、又は、エディタで変更が加えられたソースファイルをアクティブソースファイルとして検出する監視手段、
    前記監視手段がアクティブソースファイルを検出した際に、前記アクティブソースファイルを解析して、前記アクティブソースファイルから参照可能な定義データに関する情報を取得する解析手段、
    前記解析手段が取得した定義データに関する情報を補助画面に表示する補助画面表示手段、
    として機能させるプログラム。
  11. コンピュータを、
    ソースファイル内の各関数の定義部分を比較して、複数の関数の間で処理内容が共通する部分を共通処理部分として検出する関数比較手段、
    前記関数比較手段が検出した共通処理部分が示す処理を関数化した共通処理関数を生成する共通処理関数生成手段、
    前記複数の関数の定義部分のうち前記共通処理部分があった部分を、前記共通処理関数を呼び出す部分に置換する置換手段、
    として機能させるプログラム。
JP2011238002A 2011-10-28 2011-10-28 ソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラム Pending JP2013097470A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011238002A JP2013097470A (ja) 2011-10-28 2011-10-28 ソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011238002A JP2013097470A (ja) 2011-10-28 2011-10-28 ソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラム

Publications (1)

Publication Number Publication Date
JP2013097470A true JP2013097470A (ja) 2013-05-20

Family

ID=48619372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011238002A Pending JP2013097470A (ja) 2011-10-28 2011-10-28 ソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP2013097470A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150133902A (ko) * 2014-05-20 2015-12-01 국방과학연구소 소프트웨어 제품 라인에 기반한 서비스 개발 시스템 및 방법
JP2016076080A (ja) * 2014-10-06 2016-05-12 三菱電機株式会社 ソースコード解析装置、ソースコード解析方法、及びプログラム
JP2018055389A (ja) * 2016-09-28 2018-04-05 本田技研工業株式会社 プログラム作成支援方法
JP2019160074A (ja) * 2018-03-15 2019-09-19 オムロン株式会社 プログラム開発支援システム、プログラム開発支援方法及びプログラム開発支援プログラム
CN110286934A (zh) * 2019-06-30 2019-09-27 潍柴动力股份有限公司 一种静态代码的检查方法及装置
JPWO2019077738A1 (ja) * 2017-10-20 2020-04-02 三菱電機株式会社 データ検証装置、データ検証方法及びデータ検証プログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281879A (ja) * 1994-04-11 1995-10-27 Hitachi Ltd アプリケーションプログラム編集装置
JPH08263299A (ja) * 1995-03-27 1996-10-11 Sanyo Electric Co Ltd プログラム変換方法
JP2000056955A (ja) * 1998-08-04 2000-02-25 Mitsubishi Electric Corp オブジェクト管理方法
JP2009086814A (ja) * 2007-09-28 2009-04-23 Hitachi Software Eng Co Ltd ソースコード管理システム
JP2009176064A (ja) * 2008-01-24 2009-08-06 Fuji Electric Holdings Co Ltd ソフトウェアリファクタリング支援装置および方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281879A (ja) * 1994-04-11 1995-10-27 Hitachi Ltd アプリケーションプログラム編集装置
JPH08263299A (ja) * 1995-03-27 1996-10-11 Sanyo Electric Co Ltd プログラム変換方法
JP2000056955A (ja) * 1998-08-04 2000-02-25 Mitsubishi Electric Corp オブジェクト管理方法
JP2009086814A (ja) * 2007-09-28 2009-04-23 Hitachi Software Eng Co Ltd ソースコード管理システム
JP2009176064A (ja) * 2008-01-24 2009-08-06 Fuji Electric Holdings Co Ltd ソフトウェアリファクタリング支援装置および方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150133902A (ko) * 2014-05-20 2015-12-01 국방과학연구소 소프트웨어 제품 라인에 기반한 서비스 개발 시스템 및 방법
KR101596257B1 (ko) 2014-05-20 2016-02-23 국방과학연구소 소프트웨어 제품 라인에 기반한 서비스 개발 시스템 및 방법
JP2016076080A (ja) * 2014-10-06 2016-05-12 三菱電機株式会社 ソースコード解析装置、ソースコード解析方法、及びプログラム
JP2018055389A (ja) * 2016-09-28 2018-04-05 本田技研工業株式会社 プログラム作成支援方法
JPWO2019077738A1 (ja) * 2017-10-20 2020-04-02 三菱電機株式会社 データ検証装置、データ検証方法及びデータ検証プログラム
JP2019160074A (ja) * 2018-03-15 2019-09-19 オムロン株式会社 プログラム開発支援システム、プログラム開発支援方法及びプログラム開発支援プログラム
CN110286934A (zh) * 2019-06-30 2019-09-27 潍柴动力股份有限公司 一种静态代码的检查方法及装置
CN110286934B (zh) * 2019-06-30 2023-04-18 潍柴动力股份有限公司 一种静态代码的检查方法及装置

Similar Documents

Publication Publication Date Title
JP2013097470A (ja) ソースファイル再利用支援装置、ソースファイル再利用支援方法、及び、プログラム
JP4502615B2 (ja) 類似文検索装置、類似文検索方法、およびプログラム
CN102637168A (zh) 一种实现图形用户界面中语言自动翻译的方法
US8701086B2 (en) Simplifying analysis of software code used in software systems
CN113760266B (zh) 一种功能模块文件的创建方法、创建装置和电子设备
US20100251102A1 (en) Displaying documents on mobile devices
CN113626017A (zh) 异构程序的分析方法、装置、计算机设备和存储介质
CN113419721A (zh) 基于web的表达式编辑方法、装置、设备和存储介质
JP2016076080A (ja) ソースコード解析装置、ソースコード解析方法、及びプログラム
CN115469849A (zh) 一种业务处理系统、方法、电子设备和存储介质
JP5109646B2 (ja) プログラムソース変換装置
JP3943582B2 (ja) 対訳文対応付け装置
JP4607671B2 (ja) 翻訳支援プログラム、方法及び装置
JP5123350B2 (ja) テストケース作成システム、方法およびプログラム
CN112181429A (zh) 信息处理方法、装置以及电子设备
CN115794056B (zh) 脚本文件的处理方法、装置、设备及存储介质
CN113656034B (zh) 信息处理方法、装置、电子设备以及存储介质
JP4241642B2 (ja) 情報表示方法、情報表示装置及び情報表示プログラム
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体
JP2000020296A (ja) プログラム変更支援装置
JP2007026182A (ja) オブジェクト指向プログラミングの生産性を上げるエディタ
JP4057166B2 (ja) 文字列検索装置および方法ならびに文字列検索プログラムを記録したコンピュータで読取可能な記録媒体
JP2017068307A (ja) 情報検索装置及びその制御方法、情報検索用プログラム
CN115221121A (zh) 文件检测处理方法、装置、存储介质与电子设备
JP2021114166A (ja) 文書管理・閲覧システムとその注釈文生成表示方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140107