JP2014134962A - ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム - Google Patents

ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム Download PDF

Info

Publication number
JP2014134962A
JP2014134962A JP2013002647A JP2013002647A JP2014134962A JP 2014134962 A JP2014134962 A JP 2014134962A JP 2013002647 A JP2013002647 A JP 2013002647A JP 2013002647 A JP2013002647 A JP 2013002647A JP 2014134962 A JP2014134962 A JP 2014134962A
Authority
JP
Japan
Prior art keywords
source code
conversion
storage unit
source
rule
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
Application number
JP2013002647A
Other languages
English (en)
Other versions
JP6172946B2 (ja
Inventor
Hiroyuki Kato
寛之 加藤
Keiji Sato
圭司 佐藤
Noriko Murakami
典子 村上
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.)
Fujitsu Marketing Ltd
Original Assignee
Fujitsu Marketing Ltd
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 Fujitsu Marketing Ltd filed Critical Fujitsu Marketing Ltd
Priority to JP2013002647A priority Critical patent/JP6172946B2/ja
Publication of JP2014134962A publication Critical patent/JP2014134962A/ja
Application granted granted Critical
Publication of JP6172946B2 publication Critical patent/JP6172946B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】ソースコードにエラーがある場合やソースコード作成規約に適合していない箇所がある場合に、修正箇所が広範囲におよぶ場合あっても、ソースコードをソースコード作成規約に従って変換することを可能とする。
【解決手段】本発明におけるソースコード変換装置は、ソースコードの全てについて、事前に構造及び呼出関係の解析を行い、ソースコードの解析結果に基づいて変換対象となる箇所の抽出を行い、抽出された変換対象箇所に対応するソースコードの書き換え対象箇所を特定し、該当箇所のソースコードの書き換えを行う。
【選択図】図1

Description

本発明は、ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラムに関し、特に、アプリケーションの作成に用いられる複数のソースコードにソースコード作成規約に適合していない箇所がある場合に、適合していない箇所をソースコード作成規約に適合するように変換を行う、ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラムに関するものである。
近年、コンピュータで利用されるアプリケーションのソフトウェア開発においては、アプリケーションの品質を向上させるために、アプリケーションの作成に用いられるソースコードの内容を解析し、エラーとなる箇所やソースコードの作成規約に適合していない箇所を検出したら、適合していない箇所を自動的に修正する技術が知られている。
例えば、公知例1においては、ソースコードの構文解析を行い、エラーとなる箇所を検出したら過去のエラー原因を元にエラーとなる箇所を修正する技術が開示されている。さらには、公知例2においては、ソースコードのエラー箇所を辞書情報に基づいて検索し、エラー箇所を検出したら辞書情報を元に正しい記述に修正する技術が公開されている。
特開2010−67103号公報 特開平5−257738号公報
従来技術におけるソースコードの変換方式は、ソースコードを逐次チェックし、エラーとなる箇所や仕様通りに作成されていない箇所を検出したら該当箇所を修正するものである。例えば、公知例1における方法は、ソースコードを行単位で読み込み、構文解析を行い、構文解析によりエラーが検出されたらソースコードの修正を行うものである。
したがって、従来技術においては、ソースコード中のエラーとなる箇所を単純に置換することにより変換することは可能であるが、ソースコードの記述に構文上問題がなく、ソースコード作成規約に定められた処理が定められた箇所に記載されていないといった場合に、ソースコード作成規約で定められた位置に所定の処理を追記するといった処理を行うことが難しい。
さらには、ソースコードの修正範囲が広範囲におよぶ場合、例えば、1つのエラー箇所に対応して1つのソース内で分散して複数の修正が必要な場合や、修正対象のソースコードが複数のファイルに跨っている場合においても、従来技術においては、エラーとなる箇所のみの修正しか行えないため対応することが難しい。
本発明は上記課題を解決する事を可能としたものであり、ソースコードにエラーがある場合やソースコード作成規約に適合していない箇所がある場合に、修正箇所が広範囲におよぶ場合あっても、ソースコードをソースコード作成規約に従って変換することを可能とする、ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラムを提供することを目的とするものである。
上記課題を解決するために、本発明におけるソースコード変換装置は、アプリケーションを構成するために作成された複数のソースコードをコンピュータによって変換するソースコード変換装置であって、前記複数のソースコードの構造及び呼出関係を解析するソースコード構造解析部と、前記ソースコード構造解析部によって解析されたソースコードの構造及び呼出関係を記憶するソースコード構造記憶部と、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係から1又は複数の変換対象箇所を抽出し、抽出された変換対象箇所に対応する1または複数のソースコードの書き換えを行うソースコード変換処理部とから構成されることを特徴とする。
本発明におけるソースコード変換装置は、ソースコード構造解析部によって、アプリケーションを構成するために作成された複数のソースコードの全てについて、事前に構造及び呼出関係の解析を行い、その解析結果は、ソースコード構造記憶部に記憶される。そして、ソースコード変換処理部によって、ソースコード構造記憶部に記憶されているソースコードの解析結果に基づいて変換対象となる箇所の抽出を行い、抽出された変換対象箇所に対応するソースコードの書き換え対象箇所を特定し、該当箇所のソースコードの書き換えを行う。本態様においては、ソースコード変換処理部が事前に解析されたソースコードの構造や呼出関係に基づいて変換対象箇所を特定することにより、変換対象箇所が分散している場合や複数のソースコードに跨っている場合であっても、変換対象箇所を特定することが可能である。
また、本発明の一態様においては、前記ソースコード変換装置であって、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係が、前記アプリケーションのソースコード作成規約に従った構造及び呼出関係になっているかを検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定するソースコード検査処理部と、前記ソースコード検査処理部によって特定された1又は複数の規約違反箇所を記憶する検査結果記憶部とを備え、前記ソースコード変換処理部は、前記検査結果記憶部に記憶されている1又は複数の規約違反箇所を変換対象箇所として抽出し、抽出された変換対象箇所に対応する1又は複数のソースコードの書き換えを行うことを特徴とする。
この態様におけるソースコード変換装置においては、ソースコード検査処理部によって、ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係がソースコード作成規約に従っているかどうかを事前に検査を行い規約違反箇所の特定を行う。特定された規約違反箇所は検査結果記憶部に記憶される。ソースコード変換処理部は、検査結果記憶部に記憶されている規約違反箇所をソースコードの変換対象箇所として特定し、該当箇所のソースコードの書き換えを行う。本態様においては、ソースコード検査処理部においてソースコードの構造及び呼出関係がソースコード作成規約に従っているかどうかを事前に検証することにより、ソースコード作成規約に違反する箇所を特定することが可能となり、特定された規約違反箇所を変換対象箇所とすることで、ソースコード作成規約に違反する箇所を変換対象箇所として特定することが可能である。
また、本発明の一態様においては、前記ソースコード変換装置であって、前記ソースコード検査処理部は、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係がソースコードの種類に対応した構造及び呼出関係になっているかをソースコード作成規約として用いて検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定することを特徴とする。
この態様におけるソースコード変換装置においては、ソースコードの種類に対応した構造及び呼出関係になっているかをソースコード作成規約として用いることにより、複数のソースコードに跨って規定されている呼出関係が定義されているソースコード作成規約に違反する箇所を特定することが可能となる。
さらに、本発明におけるソースコード変換方法は、アプリケーションを構成するために作成された複数のソースコードの構造及び呼出関係を解析するステップと、解析されたソースコードの構造及び呼出関係をソースコード構造記憶部に記憶するステップと、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係から1又は複数の変換対象箇所を抽出し、抽出された変換対象箇所に対応する1または複数のソースコードの書き換えを行うステップとをコンピュータにより実行することを特徴とする。
また、本発明の一態様においては、前記ソースコード変換方法であって、さらに、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係が、前記アプリケーションのソースコード作成規約に従った構造及び呼出関係になっているかを検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定するステップと、特定された1又は複数の規約違反箇所を検査結果記憶部に記憶するステップとを有し、前記ソースコードの書き換えを行うステップは、前記検査結果記憶部に記憶されている1又は複数の規約違反箇所を変換対象箇所として抽出し、抽出された変換対象箇所に対応する1又は複数のソースコードの書き換えを行うステップとしてコンピュータにより実行することを特徴とする。
また、本発明の一態様においては、前記ソースコード変換方法であって、前記規約違反箇所を特定するステップは、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係がソースコードの種類に対応した構造及び呼出関係になっているかをソースコード作成規約として用いて検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定するステップとしてコンピュータにより実行することを特徴とする。
さらに、本発明におけるソースコード変換プログラムは、コンピュータに読み込まれることによって、上述したソースコード変換装置を実現するためのプログラムである。
本発明によれば、ソースコードの構造及び呼出関係を事前に解析し、解析結果に基づいて変換対象箇所の特定を行うことにより、変換対象箇所が分散している場合や複数のソースコードに跨っている場合であっても、変換対象箇所を特定しソースコードの書き換えを行うことが可能となる。さらには、ソースコードの構造及び呼出関係を事前に解析し、解析結果からソースコード作成規約に違反する箇所を特定し、変換対象箇所とすることで、ソースコード作成規約に違反するソースコードをソースコード作成規約に則した内容に書き換えることが可能となる。
本発明のソースコード変換装置の全体構成図を示す図である。 本発明の実施例1におけるクラス構造の解析結果のデータ構造を示す図である。 本発明の実施例1におけるメソッド構造の解析結果のデータ構造を示す図である。 本発明の実施例1におけるインスタンス構造の解析結果のデータ構造を示す図である。 本発明の実施例1におけるメソッド呼出関係の解析結果のデータ構造を示す図である。 本発明の実施例1におけるソースコード変換規則の定義を示す図である。 本発明の実施例2におけるソースコード変換規則の定義を示す図である。 本発明の実施例2におけるソースコード変換規則の定義を示す図である。 本発明の実施例1における全体処理フローチャートを示す図である。 本発明の実施例1におけるソースコード構造解析処理の処理フローを示す図である。 本発明の実施例1におけるソースコード変換処理の処理フローチャートを示す図である。 本発明の実施例3における検査規則の定義を示す図である。 本発明の実施例3における検査結果のデータ構造を示す図である。 本発明の実施例3における全体処理フローチャートを示す図である。 本発明の実施例3におけるソースコード検査処理の処理フローチャートを示す図である。 本発明の実施例3におけるソースコード変換処理の処理フローチャートを示す図である。 本発明の実施例3におけるソースコード変換規則を示す図である。
以下に、本願の開示するソースコード変換装置、ソースコード変換方法及びソースコード変換プログラムの実施例を図面に基づいて説明する。以下に示す実施例においては、アプリケーションを構成するために作成された複数のソースコードについて、複数ソースコードの構造及び呼出関係を解析し、解析結果に基づいて変換対象箇所の抽出を行い、抽出された変換対象箇所に対応するソースコードの該当箇所の書き換えを行う実施例について説明を行う。しかしながら、本願の開示するソースコード変換装置、ソースコード変換方法及びソースコード変換プログラムの実施例は以下で説明するものに限られるわけでなく、ソースコードの変換を自動的に行う各種装置、方法およびプログラムにも同様に適用することが可能である。
最初に、本実施例に係るソースコード変換装置の全体構成の概要について説明する。図1は、本実施例に係るソースコード変換装置の全体構成を示す図である。ソースコード変換装置1は、ソースコード構造解析処理部101、ソースコード構造記憶部104、ソースコード変換処理部102、変換規則記憶部105とから構成される。さらに、ソースコード変換処理部102は、ソースコード検査処理部103、検査規則記憶部107、検査結果記憶部106とから構成されていてもよい。ソースコード変換処理部102がさらに、ソースコード検査処理部103、検査規則記憶部107、検査結果記憶部106とから構成される場合については実施例3として後述する。
ソースコード変換装置1は、コンピュータに保存されている修正対象となるソースコード一式を入力データとして読み取り、読み取ったソースコード一式の構造及び呼出関係を解析する。そして、解析結果に基づいてソースコードの変換を行い、変換されたソースコード一式を、コンピュータ内に保存する。
ソースコード変換装置1が有する各処理部及び記憶部について説明する。
まず、ソースコード構造解析処理部101とソースコード構造記憶部104について説明する。
ソースコード構造解析処理部101は、修正対象となるソースコード一式をコンピュータ上から読み取りソースコードの構造及び呼出関係の解析を行う。ソースコードの構造解析は、読み取ったソースコードそれぞれについて構文解析を行うことによって行われる。例えば、ソースコードがVISUAL BASIC(登録商標)言語で作成されている場合、VISUAL BASIC言語の構文ルールに基づいて、ソースコード内で定義されているクラス定義、メソッド定義、インスタンス定義、などの箇所を抽出しソースコード構造として解析する。
それぞれの定義箇所の抽出は、例えば、言語の構文ルールに基づいて作成された正規表現によって抽出してもよいし、ソースコードを行単位で読み込んで行データと言語の構文ルールとの比較を行うことによって、どのような定義なのかを判別することによって抽出してもよい。例えば、言語の構文ルールによって、「クラス定義はClassの文字列が定義文字として含まれている行で始まり、End Classの記述で終わる」と定められている場合は、「Class」および「End Class」の文字列定義箇所を正規表現や行データの比較などにより検索することで、クラス定義箇所の抽出を行い、クラス定義行の内容及びクラス定義の開始行、終了行の抽出を行う。
さらに、ソースコードの構造解析は、読み取ったソースコードそれぞれについての呼出関係についても解析される。ソースコードの呼出関係についても、ソースコードの構造解析を行う場合と同様に、読み取ったソースコードそれぞれについて構文解析を行うことによって行われる。例えば、ソースコードはVISUAL BASIC言語で作成されている場合、VISUAL BASIC言語の構文ルールに基づいて、ソースコード内で定義されているインスタンス定義の箇所を抽出し、さらに抽出したインスタンス定義から、インスタンスの生成元となるクラスおよびインスタンス定義から呼び出しているメソッドの抽出を行うことにより、どのクラスのどのメソッドを呼び出しているのかを解析する。
これらのインスタンス定義箇所の抽出、クラスおよびメソッドの抽出は、例えば、言語の構文ルールに基づいて作成された正規表現によって抽出してもよいし、ソースコードを行単位で読み込んで行データと言語の構文ルールとの比較を行うことによって、どのような定義なのかを判別することによって抽出してもよい。
例えば、言語の構文ルールによって、インスタンス定義は「インスタンス名=new クラス名」として定義されることが定められており、メソッド呼出は「インスタンス名.メソッド名」として記述されることが定められている場合は、まず、newの文字列の定義箇所を正規表現や行データの比較などによって検索することで、インスタンス定義箇所の抽出を行い、インスタンス名およびクラス名を取得する。そして、取得したインスタンス名の文字列を、正規表現や行データの比較などによって検索することによって呼び出しているメソッド名を取得する。
ソースコード構造記憶部104には、ソースコード構造解析処理部101によって解析されたソースコードの構造及び呼出関係が記憶される。ソースコード構造解析処理部101によって解析された構造及び呼出関係がどのようなデータ構造としてソースコード構造記憶部104に記憶されるかのデータ構造の例として、クラス構造、メソッド構造、インスタンス構造、メソッド呼出関係、のそれぞれについて説明する。
図2は、クラス構造の解析結果としてソースコード構造記憶部104に記憶されるデータ構造の例である。クラス構造の解析結果としては図2に示されるように「クラス名」「ファイル名」「開始行番号」「終了行番号」「修飾子」「継承元」の情報を有する。「クラス名」は定義されているクラスの名称を、「ファイル名」は定義されているクラスが記述されているソースコードのファイル名称の保存場所を含めたフルパス形式を、「開始行番号」は定義されているクラスが記述されているファイル名で表されるソースコード内での開始行番号を、「終了行番号」は定義されているクラスが記述されているファイル名で表されるソースコード内での終了行番号を、「修飾子」は定義されているクラスがどの範囲からアクセスできるかを表すアクセス修飾子を、「継承元」は定義されているクラスが継承している継承元クラスを、それぞれ記憶するものである。
例えば、「クラス名」が“M_SHAINView”、「ファイルパス」が“WebASMaster/M_SHAINView.vb”、「開始行番号」が“4”、「終了行番号」が“89”、「修飾子」が“Public”、「継承元」が“BasePage”として記憶されている場合は、クラスM_SHAINViewが修飾子PublicとしてBasePageクラスを承継して定義されており、WebASMaster/M_SHAINView.vbのファイル内の4行目から89行目に記述されている事を表す。
図3は、メソッド構造の解析結果としてソースコード構造記憶部104に記憶されるデータ構造の例である。メソッド構造の解析結果としては、図3に示されるように「メソッド名」「パラメータ」「戻り値型」「ファイル名」「クラス名」「開始行番号」「終了行番号」の情報を有する。「メソッド名」は定義されているメソッドの名称を、「パラメータ名」は定義されているメソッドが受け取る引数パラメータを、「戻り値型」は定義されているメソッドが返却する値の型を、「ファイル名」は定義されているメソッドが記述されているソースコードのファイル名称の保存場所を含めたフルパス形式を、「クラス名」は定義されているメソッドが記述されているクラス名を、「開始行番号」は定義されているメソッドが記述されているファイル名で表されるソースコード内での開始行番号を、「終了行番号」は定義されているメソッドが記述されているファイル名で表されるソースコード内での終了行番号を、それぞれ記憶するものである。
例えば、「メソッド名」が“Page_Load”、「パラメータ」が“Object,EventArgs”、「戻り値型」が“String”、「ファイル名」が“WebASMaster/M_SHAINView.vb”、「クラス名」が“M_SHAINView”、「開始行番号」が“7”、「終了行番号」が“23”、として記憶されている場合は、メソッドPage_LoadはM_SHAINViewクラスに定義されており、引数としてパラメータObjectとEventArgsを受け取り、戻り値型としてStringを返し、WebASMaster/M_SHAINView.vbのファイル内の7行目から23行目に記述されている事を表す。
図4は、インスタンス構造の解析結果としてソースコード構造記憶部104に記憶されるデータ構造の例である。インスタンス構造の解析結果としては図4に示されるように「宣言変数名」「インスタンス型」「ファイル名」「クラス名」「メソッド名」「宣言行番号」の情報を有する。「宣言変数名」は定義さているインスタンスの名称を、「インスタンス型」は定義されているインスタンスのクラス型を、「ファイル名」は定義されているインスタンスが記述されているソースコードのファイル名称の保存場所を含めたフルパス形式を、「クラス名」は定義されているインスタンスが記述されているクラス名を、「メソッド名」は定義されているインスタンスが記述されているメソッド名を、「宣言行番号」は定義されているインスタンスが記述されているファイル名で表されるソースコード内での宣言行番号を、それぞれ記憶するものである。
例えば、「宣言変数名」が“param”、「インスタンス型」が“M_SHAINMANAGERParam”、「ファイル名」が“WebASMaster/M_SHAINView.vb”、「クラス名」が“M_SHAINView”、「メソッド名」が“InsertButton_Click”、「宣言行番号」が“37”、として記憶されている場合は、インスタンスparamはインスタンス型がM_SHAINMANAGERParamとして、M_SHAINViewクラス内のInsertButton_Clickメソッド内に定義されており、WebASMaster/M_SHAINView.vbのファイル内の37行目に記述されている事を表す。
図5は、メソッド呼出関係の解析結果としてソースコード構造記憶部104に記憶されるデータ構造の例である。メソッド呼出関係の解析結果としては図5に示されるように「ファイル名」「クラス名」「メソッド名」「呼出先クラス名」「呼出先メソッド名」「呼出先メソッドパラメータ」「呼出行番号」の情報を有する。「ファイル名」はメソッド呼出処理が記述されているソースコードのファイル名称の保存場所を含めたフルパス形式を、「クラス名」はメソッド呼出処理が記述されているクラス名を、「メソッド名」はメソッド呼出処理が記述されているメソッド名を、「呼出先クラス」は呼出先のメソッドが定義されているクラス名を、「呼出先メソッド名」は呼出先メソッドの名称を、「呼出先メソッドパラメータ」はメソッド呼出処理によって呼び出すメソッドに引き渡すパラメータを、「呼出行番号」はメソッド呼出処理が記述されているファイル名で表されるソースコード内での行番号を、それぞれ記憶するものである。
例えば、「ファイル名」が“WebASMaster/M_SHAINView.vb”、「クラス名」が“M_SHAINView”、「メソッド名」が“InsertButton_Click”、「呼出先クラス名」が“Validator”、「呼出先メソッド名」が“ServerValidate”、「呼出先メソッドパラメータ」が“param”、「呼出行番号」が“32”、として定義されている場合は、M_SHAINViewクラスのメソッドInsertButton_ClickからValidatorクラスのServerValidateメソッドにパラメータparamを渡して呼出を行っており、その呼出はWebASMaster/M_SHAINView.vbのファイル内の32行目に記述されている事を表す。
次に、ソースコード変換処理部102と変換規則記憶部105について説明する。
ソースコード変換処理部102は変換規則記憶部105に記憶されている変換規則を読み取り、変換規則に基づいてソースコード構造記憶部104に記憶されているソースコードの構造及び呼出関係から変換対象箇所の特定を行う。変換対象箇所が特定されたら、修正対象となるソースコードをコンピュータ上から読み込み、変換対象箇所のソースコードの書き換えが必要かどうかを判断し、書き換えが必要であると判断された場合には、ソースコードの書き換えを行う。そして、変換されたソースコード一式をコンピュータ上に保存する。
図6は、変換規則記憶部105に記憶されている変換規則の例を示したものである。例えば、変換規則は図6に示されるようなXML(Extensible Markup Language)データ形式で変換規則が記憶されている。図6の例では、メソッド内のCatchの記述行とEnd Tryの記述行の間にLM.WriteButtonEvent(Me,sender,e)という記述がされていなかった場合に、当該記述を追記するという変換規則の例を表している。具体的には、図6の5行目の<method targetword1=“¥sCatch¥s” targetword2=“¥sEnd¥sTry¥s”>の記述が変換対象の元となる箇所の記述の定義であり、6行目の<item mode=“insert” target=“LM.WriteButtonEvent(Me,sender,e)” />の記述が変換対象の元となる記述をどのように変換するのかの変換ルールの定義である。
図6の5行目の変換元となる箇所の定義では、methodタグに属性値としてtargetword1とtargetword2が定義されているため、メソッド定義内に記述されているtargetword1とtargetword2の定義文字にマッチする間の箇所が変換対象箇所となる。すなわち、メソッド定義内のCatchの記述行とEnd Tryの記述行の間の記述が変換対象の元となる箇所になる。
そして、図6の6行目の変換対象の元なる記述をどのように変換するかの定義では、itemタグに属性値として、modeとtargetが定義されている。modeにはどのように変換するのかが定義されており、targetは変換の内容が定義されている。当該例においては、modeの値が“insert”と定義されており、targetの値が“LM.WriteButtonEvent(Me,sender,e)”とされているため、変換対象の元となる箇所にtargetの値をinsert、すなわち、値を挿入する、という定義になっている。
このように変換規則を定義することにより、メソッド内のCatchの記述行とEnd Tryの記述行の間にLM.WriteButtonEvent(Me,sender,e)という記述がされていなかった場合に、当該記述を追記するという変換規則の定義となる。
次にフローチャートを用いて、ソースコード変換装置がどのようにソースコードの変換処理を行うのか、具体的な処理フローを説明する。
図9は実施例1におけるソースコード変換処理の全体処理フローを表したフローチャート図である。ソースコード変換装置1においては、まず初めに、修正対象となるソースコード一式の構造及びメソッド呼出関係の構造解析が行われる(S901)。この解析処理は、事前にソースコードの全体について、ソースコード構造解析処理部101によって行われ、解析結果はソースコード構造記憶部104に記憶される。ソースコード構造解析処理の詳細については後述する。
ソースコード全体の構造解析が事前に行われると、ソースコードの変換処理が行われる(S902)。ソースコードの変換処理はソースコード変換処理部102によって行われる。ソースコードの変換は変換規則記憶部105に記憶されている変換規則ごとに行われる。いずれの変換規則の変換処理を行うのか、指示を受け付けて、指示された変換規則の変換処理のみを行うようにしてもよいし、すべての変換規則の変換処理を繰り返しすべて行うようにしてもよい。ソースコードの変換処理はソースコード構造記憶部104に記憶されているソースコードの構造に基づいて変換箇所の特定を行い、特定された変換箇所に該当するソースコードの書き換えが行われる。ソースコード変換処理の詳細については後述する。
ここで、1つの変換規則の変換処理が行われ、次の変換規則の変換処理を行う際には、再度ソースコードの構造解析処理が行われる(S903)。これは、S902のソースコード変換処理によって解析結果の元となるソースコードの内容が書き換わっているため、再度の構造解析処理が必要なためである。S903におけるソースコードの解析処理は、ソースコード全体について、再度、構造解析を行ってもよいし、ソースコード変換処理部によって変換されたソースコードに関連するソースコードについてのみ、再度、構造解析を行うようにしてもよい。
次に、ソースコード構造解析処理部101によって行われる、ソースコード構造解析処理の詳細について説明する。
図10は実施例1におけるソースコード構造解析処理部101によって行われる、ソースコード構造解析処理の処理フローを表したフローチャート図である。
ソースコード構造解析処理部101は解析対象となるソースコード一式をコンピュータ上から読み込みを行うと、読み込んだソースコードからクラス定義一覧の取得を行う(S1001)。クラス定義の取得は、ソースコードが記載されている言語のクラス定義の構文ルールに基づいて、正規表現によって抽出してもよいし、ソースコードを行単位で読み込んで行データと言語のクラス定義の構文ルールとの比較を行うことによって取得してもよい。以下の処理で述べる、メソッド定義、インスタンス定義、メソッド呼出定義などの取得についても同様である。
クラス定義の一覧が取得されたら、取得したクラス定義ごとに繰り返し処理を行う(S1002)。まず、取得したクラス定義についてクラス構造情報をソースコードから取得して、取得したクラス構造情報をソースコード構造記憶部104に記憶する(S1003)。ここで記憶するクラス構造情報は図2に示されているような「クラス名」「ファイル名」「開始行番号」「終了行番号」「修飾子」「継承元」などである。
次に、当該クラス定義内に定義されているメソッド定義の一覧を取得する(S1004)。メソッド定義一覧の取得は、当該クラスが定義されているファイル名のファイルの開始行番号から終了行番号の間に定義されているメソッド定義の一覧を取得することによって行われる。
メソッド定義の一覧が取得されたら、取得したメソッド定義ごとに繰り返し処理を行う(S1005)。まず、取得したメソッド定義についてメソッド構造情報をソースコードから取得して、取得したメソッド構造情報をソースコード構造記憶部104に記憶する(S1006)。ここで記憶するメソッド構造情報は図3に示されているような「メソッド名」「パラメータ」「戻り値型」「ファイル名」「クラス名」「開始行番号」「終了行番号」などである。
その次に、当該メソッド定義内に定義されているインスタンス定義の一覧を取得する。インスタンス定義一覧の取得は、当該メソッドが定義されているファイル名のファイルの開始行番号から終了行番号の間に定義されているインスタンス定義の一覧を取得することによって行われる。インスタンス定義の一覧を取得したら、それぞれのインスタンス構造情報をソースコードから取得して、取得したインスタンス構造情報をソースコード構造記憶部104に記憶する(S1007)。ここで記憶するインスタンス構造情報は図4に示されているような「宣言変数名」「インスタンス型」「ファイル名」「クラス名」「メソッド名」「宣言行番号」などである。
その次に、当該メソッド定義内に他のメソッドの呼出処理を行っているメソッド呼出箇所の一覧を取得する。メソッド呼出箇所一覧の取得は、当該メソッドが定義されているファイル名のファイルの開始行番号から終了行番号の間に定義されているメソッド呼出定義の一覧を取得することによって行われる。メソッド呼出定義の一覧を取得したら、それぞれのメソッド呼出情報をソースコードから取得して、取得したメソッド呼出情報をソースコード構造記憶部104に記憶する(S1008)。ここで記憶するメソッド呼出情報は図5に示されているような「ファイル名」「クラス名」「メソッド名」「呼出先クラス名」「呼出先メソッド名」「呼出メソッドパラメータ」「呼出行番号」などである。
そして、S1004で取得したメソッド定義の一覧すべてについてS1006からS1008の処理を行ったかをチェックする(S1009)。取得したメソッド定義すべてについて処理が行われていない場合は、S1005に戻って処理を行っていないメソッド定義について処理を行う(S1009:NO)。取得したメソッド定義すべてについて処理が行われている場合(S1009:YES)は、S1001で取得したクラス定義の一覧すべてについて、S1002からS1009の処理を行ったかをチェックする(S1010)。取得したクラス定義すべてについて処理が行われていない場合は、S1002に戻って、処理を行っていないクラス定義について処理を行う(S1010:NO)。取得したクラス定義すべてについて処理を行っていた場合(S1010:YES)は、ソースコードの構造解析処理を終了する。
次に、ソースコード変換処理部102によって行われるソースコード変換処理の詳細について説明する。
図11は実施例1におけるソースコード変換処理部102によって行われる、ソースコード変換処理の処理フローを表したフローチャート図である。
まず、ソースコード変換処理部102は変換規則記憶部105からソースコードの変換規則の一覧を取得する(S1101)。そして、取得した変換規則ごとに繰り返し処理を行う(S1102)。例えば、変換規則は図6に示されているようなXMLデータ形式で作成されている。
次に、変換規則から変換処理の対象となる記述の定義を取得し、変換対象箇所の一覧をソースコード構造記憶部104から取得し変換対象箇所およびソースコードを特定する(S1103)。例えば、図6の定義例においては、変換元となる箇所としてメソッド定義内に記述されているtargetword1とtargetword2の定義文字にマッチする間の箇所が定義されているため、ソースコード構造記憶部104に記憶されているメソッド構造情報から、メソッド一覧の取得を行い、取得されたメソッドに対応する「ファイル名」の「開始行番号」と「終了行番号」の間にtargetword1とtargetword2の定義文字が含まれる箇所を変換対象箇所として特定する。
変換対象箇所が特定できたら、取得した変換対象箇所の一覧についてそれぞれの箇所を繰り返し処理する(S1104)。そして、変換対象箇所について、変換規則の定義情報を元に、ソースコードの変換が必要かどうかを判定する(S1105)。例えば、図6の定義例においては、変換対象の元となる箇所にtargetの値を挿入する、という定義になっているため、当該変換対象箇所にtargetの値が存在するかどうかを判定する。targetの値が存在した場合は、すでに必要な記述がされているということであり、ソースコードの変換は不要であると判断され、targetの値が存在しない場合は、必要な記述がされていないということなので、ソースコードの変換が必要であると判断される。
ソースコードの変換が必要であると判断された場合は(S1105:YES)、ソースコードの変換処理を行い変換したソースコードをコンピュータ上に記録する(S1106)。図6の定義例においては、変換規則の定義に従ってtargetword1とtargetword2の定義文字の間にtargetの値を記述する。ソースコードの変換が必要ないと判断された場合は(S1105:NO)、ソースコードの変換処理は行わない。
その次に、全ての変換対象箇所について処理を行ったかを確認し(S1107)、未処理の変換対象箇所がある場合は(S1107:NO)、S1104に戻り次の変換対象箇所の処理を行う。未処理の変換対象箇所がない場合は(S1107:YES)、全ての変換規則について処理を行ったかを判定し(S1108)、未処理の変換規則がある場合は(S1108:NO)、S1102に戻り、未処理の変換規則について繰り返し処理を行う。すべての変換規則について処理を行った場合は(S1108:YES)、ソースコード変換処理を終了する。
以上が、実施例1におけるソースコード変換装置のソースコードの変換処理の詳細となる。本実施例においては、ソースコード変換処理部が事前に解析されたソースコードの構造や呼出関係に基づいて変換対象箇所を特定することにより、変換対象箇所が分散している場合や複数のソースコードに跨っている場合であっても、変換対象箇所を特定しソースコードの変換処理を行うことが可能となっている。
実施例2では、ソースコードの種類に対応してソースコードの変換処理を行う場合について説明する。ここでいうソースコードの種類とは、ソースコードにどのような処理が記述されているかの種別である。例えば、画面処理を行うソースコード、データベース処理を行うソースコードといった、処理目的による種別の事をいう。
実施例1においては、ソースコード内において特定の記述が必要な箇所に、必要な記述がされていない場合に、記述を追記して書き換える例について説明を行った。例えば、図6の変換規則では、メソッド内の特定箇所に特定の記述を追記するという場合の定義例であった。しかし、ソースコードの作成規約によっては、全てのソースコードに対して同様に処理を記述するのではなく、ソースコードの種類に応じて記述する処理の内容が異なる場合がある。例えば、画面処理を行うソースコード内のメソッドに記述する例外処理と、データベース処理を行うソースコード内のメソッドに記述する例外処理と、記述内容が異なるような場合である。
このような場合においては、変換規則記憶部105に記憶されている変換規則の定義を複数用意しておくことで対応することができる。例えば、図7は、画面処理を行うソースコードのメソッドに対して例外処理が記述されていなかった場合に例外処理を記述する変換規則の定義例であり、図8は、データベース処理を行うソースコードのメソッドに対して例外処理が記述されていなかった場合に例外処理を記述する変換規則の定義例である。
まず、図7の変換規則の定義においては、画面処理を行うソースコードのメソッドに対して例外処理が記述されていなかった場合に例外処理を記述する変換規則の定義例として、メソッド記述の開始直後に例外処理記述の開始の記述を行い、メソッド記述の終了直前に例外処理記述の終了の記述を行うことを定義している。
具体的には、図7の5行目において、methodタグのtargetwordの値としてメソッド記述の開始文字列の正規表現を定義することで、メソッド記述の開始位置を変換対象箇所として特定している。さらに、targetclassの値として“View”を定義することにより、変換対象のクラスとして定義されているViewクラスを承継しているクラスのソースコード、すなわち画面処理のソースコードとして指定している。このように変換対象のソースコードを指定できることにより、ソースコードの種類に対応したソースコードの変換処理が可能となる。
また、図7の変換規則の定義例に示されている様に、1つの変換規則の定義内に複数の変換規則を記述してもよい。例えば、図7においては、5行目と10行目にmethodタグが記述されている。このように変換規則を定義することによって、5行目から8行目の変換規則の定義では、メソッド記述の開始直後に例外処理記述の開始の記述がされていなかった場合には、例外処理記述の開始を追記するといった定義を行い、10行目から14行目の変換規則の定義では、メソッド記述の終了直前に例外処理の終了の記述がされていなかった場合には、例外処理記述の終了を追記するといった定義を行うことができる。
次に、図8の変換規則の定義においては、データベース処理を行うソースコードのメソッドに対して例外処理が記述されていなかった場合に例外処理を記述する変換規則の定義例として、メソッドの記述行に例外処理の記述がされていなかったら、メソッド記述行に例外処理の記述を行うことを定義している。
具体的には、図8の5行目において、methodタグのtargetwordの値としてメソッド記述の開始文字列の正規表現を定義することで、メソッド記述の開始位置を変換対象箇所として特定している。さらに、targetclassの値としてManagerを定義することにより、変換対象のクラスをとして定義されているManagerクラスを承継しているクラスのソースコード、すなわちデータベース処理のソースコードとして指定している。そして、図8の7行目において、itemタグのmodeの値を“add”と定義することによって、変換対象箇所にtargetの値がなかった場合に、targetの値を追記するといった定義を行っている。
以上のようにソースコードの種類に対応して複数の変換規則を定義し、変換規則記憶部105に記憶させておくことで、ソースコード変換装置1は、ソースコードの種別に応じたソースコードの変換を行うことが可能となる。この場合における、ソースコードの変換処理の処理フローについては実施例1と、同様な処理フローとなる。
すなわち、実施例1において説明した図11のソースコード変換処理の処理フローのS1101において、図7に示すような画面処理を行うソースコードに対する変換規則の定義や、図8に示すようなデータベース処理を行うソースコードに対する変換規則の定義の取得を行い、取得した変換規則に対応した変換箇所一覧の取得(S1103)および変換処理の必要性の判断(S1105)、変換処理の実行を行う(S1106)。
以上が、実施例1、実施例2におけるソースコード変換装置1のソースコードの変換処理の詳細となる。なお、変換規則の定義例として図6および図7、図8において、XMLによる定義例を示したが、変換規則の定義は実施例に示した形式に限定されるのではなく、実施例に示したような変換処理を行う定義データであればどのような形式の定義データであってもよい。
実施例1および実施例2においては、変換規則記憶部105に記憶されている変換規則の定義によってソースコードの変換対象となる箇所を特定し、変換処理を行う実施例について説明を行ったが、ソースコードの変換対象となる箇所の特定は、変換規則の定義によって行うのではなく、事前にソースコードの検査を行い、検査結果に対応してソースコードの変換処理を行うようにしてもよい。
このような処理を行うために、実施例3におけるソースコード変換装置1は、実施例1のソースコード変換装置1のソースコード変換処理部102がさらに、ソースコード検査処理部103、検査規則記憶部107および検査結果記憶部106とから構成される。実施例3におけるソースコード変換装置1においても実施例1におけるソースコード変換装置1と同様に、コンピュータに保存されている修正対象となるソースコード一式を入力データとして読み取り、読み取ったソースコード一式の構造及び呼出関係を解析する。そして、解析結果に基づいてソースコードの変換を行い、変換されたソースコード一式を、コンピュータ内に保存する。
まず、実施例3におけるソースコード変換装置1のソースコード変換処理部102がさらに有する、ソースコード検査処理部103、検査規則記憶部107および検査結果記憶部106について説明する。
ソースコード検査処理部103は、検査対象となるソースコード一式をコンピュータ上から読み取りソースコードが検査規則記憶部107に記憶されている検査規則通りの構成になっているかどうかの検査の処理を行う。ソースコードの検査はソースコード構造記憶部104に記憶されている事前解析されたソースコードの構造及び呼出関係に基づいて検査される。
図12は、検査規則記憶部107に記憶されている検査規則の例を示したものである。例えば、検査規則は図12に示されるようなソースコード形式で検査規則が記憶されている。図12は、ソースコード中のCatchの記述行とEnd Tryの記述行の間にログを出力する記述がされているかどうかを検査する検査規則である。
図12の検査規則に基づいて、ソースコード検査処理部103がどのようにソースコードの検査を行うかについて説明する。検査規則記憶部107は検査規則を読み込むと、読み込んだ検査規則を順次実行することでソースコードの検査を行う。
まず、検査規則記憶部107は、図12の21行目の記述に基づいて、ソースコード構造記憶部104からすべてのメソッド定義一覧を取得する。そして、取得したメソッド定義ごとに、24行目から45行目の検査処理を行う。具体的には、27行目において、検査を行うメソッド定義の「ファイル名」「開始行番号」「終了行番号」の情報に基づいて、ソースコードからCatch句の記述情報を取得する。そして、30行目において、取得したCatch句の記述情報にLog出力処理が記述されているかを検査する。Log出力処理の記述がされていなかった場合は、39行目において、検査結果を検査結果記憶部106に記憶する。
検査結果記憶部106には、ソースコード検査処理部103において検査されたソースコードの検査結果が記憶される。図13は検査結果記憶部106に記憶される検査結果のデータ構造の例である。検査結果は図13に示されるように「チェックID」「ファイル名」「開始行番号」「終了行番号」「指摘事項」の情報を有する。「チェックID」は検査規則のチェックIDを、「ファイル名」は検査規則によって検査されたソースコードのファイル名称の保存場所を含めたフルパス形式を、「開始行番号」は検査規則によって検査されたファイル名で表されるソースコード内での開始行番号を、「終了行番号」は検査規則によって検査されたファイル名で表されるソースコード内での終了行番号を、「指摘事項」は検査規則によって検査された結果の指摘事項を、それぞれ記憶するものである。
例えば、「チェックID」が“F50001”、「ファイル名」が“D:¥src¥CommonUtil.vb”、「開始行番号」が“21”、「終了行番号」が“28”、「指摘事項」が“例外発生個所にログ出力処理が記載されていません。”、と記憶されている場合は、D:¥src¥CommonUtil.vbのソースコードをF50001のルールIDの検査規則で検査した結果、21行目から28行目について、例外発生個所にログ出力処理が記載されていなかったということを表す。
次にフローチャートを用いて、実施例3において、ソースコード変換装置がどのようにソースコードの変換処理を行うのか、具体的な処理フローを説明する。
図14は実施例3におけるソースコード変換処理の全体処理フローを表したフローチャート図である。実施例3におけるソースコード変換装置1においては、まず初めに、修正対象となるソースコード一式の構造及びメソッド呼出関係の構造解析が行われる(S1401)。この解析処理は、事前にソースコードの全体について、ソースコード構造解析処理部101によって行われ、解析結果はソースコード構造記憶部104に記憶される。ソースコード構造解析処理の詳細については実施例1におけるソースコード解析処理と同様である。
ソースコード全体の構造解析が事前に行われると、次にソースコード全体の検査処理が行われる(S1402)。ソースコードの検査処理はソースコード検査処理部103にて行われる。ソースコード検査処理の詳細については後述する。
ソースコードの検査処理行われたら、次にソースコードの変換処理が行われる(S1403)。ソースコードの変換処理はソースコード変換処理部102によって行われる。ソースコードの変換は変換規則記憶部105に記憶されている変換規則ごとに行われる。いずれの変換規則の変換処理を行うのか、指示を受け付けて、指示された変換規則の変換処理のみを行うようにしてもよいし、すべての変換規則の変換処理を繰り返しすべて行うようにしてもよい。ソースコードの変換処理は検査結果記憶部106に記憶されているソースコードの検査結果に基づいて変換箇所の特定を行い、特定された変換箇所に該当するソースコードの書き換えが行われる。ソースコード変換処理の詳細については後述する。
ここで、1つの変換規則の変換処理が行われ、次の変換規則の変換処理を行う際には、再度ソースコードの構造解析処理が行われる(S1404)。これは、S1403のソースコード変換処理によって解析結果の元となるソースコードの内容が書き換わっているため、再度の構造解析処理が必要なためである。S1403におけるソースコードの解析処理は、ソースコード全体について、再度、構造解析を行ってもよいし、ソースコード変換処理部によって変換されたソースコードに関連するソースコードについてのみ、再度、構造解析を行うようにしてもよい。
図15は、実施例3においてソースコード検査処理部103において行われる。ソースコード検査処理の処理フローを表したフローチャート図である。図15のフローチャートに基づいてソースコード検査処理について詳述する。まず、ソースコード検査処理部103は検査規則記憶部107から検査規則の一覧を取得する(S1501)。そして、取得した検査規則ごとに繰り返し処理を行う(S1502)。例えば、検査規則は図12に示されているようなソースコード形式で作成されている。
次に、検査規則の定義を逐次実行することにより、検査処理を実行する(S1503)。例えば、図12の検査規則に基づいた検査においては、ソースコードからCatch句にLog出力処理の記述がされているかどうかが検査される。そして、検査の結果が検査結果記憶部106に記録される(S1504)。検査結果は、検査の結果が不適合であった場合のみ記録される。例えば、図12の検査規則に基づいた検査においては、ソースコードからCatch句にLog出力処理の記述がされていない箇所の一覧が記録される。
その次に、全ての検査規則について検査処理を行ったかを確認し(S1505)、未検査の検査規則がある場合は(S1505:NO)、S1502に戻り次の検査規則の処理を行う。未検査の規則がない場合は(S1505:YES)、ソースコード検査処理を終了する。
次に、ソースコード変換処理部102によって行われる、ソースコード変換処理の詳細について説明する。
図16は実施例3におけるソースコード変換処理部102によって行われるソースコード変換処理の処理フローを表したフローチャート図である。
まず、ソースコード変換処理部102は検査結果記憶部106からソースコードの検査結果の一覧を取得する(S1601)。そして、検査結果があるかどうかを判定する(S1602)。検査結果が無かった場合は、変換対象の元となる箇所が無いということなので処理を終了する(S1602:NO)。検査結果が存在した場合は(S1602:YES)、変換規則記憶部105からソースコードの変換規則の一覧を取得する(S1603)。そして、取得した変換規則ごとに繰り返し処理を行う(S1604)。例えば、変換規則は図17に示されているようなXMLデータ形式で作成されている。
次に、変換規則の定義に基づいて、変換対象箇所の一覧を検査結果記憶部107から取得し、取得した情報に基づいて、変換対象箇所およびソースコードを特定することによってソースコードの変換処理を実行する(S1605)。具体的には、図17に示されている様に変換規則が定義されている場合、図17の5行目において、fileタグにtargetCheckIDの値として“F5001”が定義されているため、変換対象箇所は、検査結果記憶部106に記憶されている検査結果のうち、チェックIDが“F5001”で記憶されている箇所となる。
すなわち、チェックIDが“F5001”でチェックされた箇所の一覧を検査結果記憶部106から取得し、検査結果から「ファイル名」「開始行番号」「終了行番号」を取得する。そして、検査結果の情報に基づいて、ソースコードから変換対象箇所を特定する。変換対象箇所が特定されたら、実施例1の場合と同様に変換規則に基づいてソースコードの変換処理を実行する。
ソースコード変換処理を実行したら、全ての変換規則について処理を行ったかを確認し(S1606)、未処理の変換規則がある場合は(S1606:NO)、S1604に戻り次の変換規則の処理を行う。未処理の変換規則がない場合は(S1606:YES)、ソースコード変換処理を終了する。
以上が、実施例3におけるソースコード変換装置のソースコードの変換処理の詳細となる。実施例3におけるソースコード変換装置においては、事前に検査規則に基づいて、ソースコードの検査を行い、ソースコードの記述が検査結果に適合しない箇所のみをソースコードの変換元として特定することによって、より適切に変換箇所の特定を行うことが可能となる。
さらには、ソースコードの種類に対応した構造及び呼出関係になっているかをソースコード作成規約として用いることにより、ソースコードの構造及び呼出関係が規定通りになっていない箇所を規定通りに変換することや、複数ソースコードに跨ってソースコードの変換が必要となる場合に、変換箇所の特定を事前に行い、変換処理を行うことが可能となる。
以上、実施例1ないし実施例3において、本発明におけるソースコード変換装置の構成について説明を行ったが、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。
すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、ソースコード構造解析処理部101またはソースコード構造記憶部104を外部の装置としてネットワーク経由で接続するようにしてもよい。
また、上記実施例においては、ソースコード変換装置に基づいて説明を行ったが、上記実施例はハードウェアロジックやプログラムによって各種の処理を実行することが実現されているコンピュータに処理を実行させる方法であってもよいし、上記実施例を行う予め用意されたプログラムをコンピュータに読み込ませて実行するようなプログラムであってもよい。
1 ソースコード変換装置
101 ソースコード構造解析処理部
102 ソースコード変換処理部
103 ソースコード検査処理部
104 ソースコード構造記憶部
105 変換規則記憶部
106 検査結果記憶部
107 検査規則記憶部

Claims (7)

  1. アプリケーションを構成するために作成された複数のソースコードをコンピュータによって変換するソースコード変換装置であって、
    前記複数のソースコードの構造及び呼出関係を解析するソースコード構造解析部と、
    前記ソースコード構造解析部によって解析されたソースコードの構造及び呼出関係を記憶するソースコード構造記憶部と、
    前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係から1又は複数の変換対象箇所を抽出し、抽出された変換対象箇所に対応する1または複数のソースコードの書き換えを行うソースコード変換処理部と
    から構成されることを特徴とするソースコード変換装置。
  2. 請求項1記載のソースコード変換装置であって、
    前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係が、前記アプリケーションのソースコード作成規約に従った構造及び呼出関係になっているかを検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定するソースコード検査処理部と、
    前記ソースコード検査処理部によって特定された1又は複数の規約違反箇所を記憶する検査結果記憶部と
    を備え、
    前記ソースコード変換処理部は、前記検査結果記憶部に記憶されている1又は複数の規約違反箇所を変換対象箇所として抽出し、抽出された変換対象箇所に対応する1又は複数のソースコードの書き換えを行う
    ことを特徴とするソースコード変換装置。
  3. 請求項2記載のソースコード変換装置であって、
    前記ソースコード検査処理部は、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係がソースコードの種類に対応した構造及び呼出関係になっているかをソースコード作成規約として用いて検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定する
    ことを特徴とするソースコード変換装置。
  4. アプリケーションを構成するために作成された複数のソースコードをコンピュータにより変換するソースコード変換方法であって、
    アプリケーションを構成するために作成された複数のソースコードの構造及び呼出関係を解析するステップと、
    解析されたソースコードの構造及び呼出関係をソースコード構造記憶部に記憶するステップと、
    前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係から1又は複数の変換対象箇所を抽出し、抽出された変換対象箇所に対応する1または複数のソースコードの書き換えを行うステップと
    をコンピュータにより実行することを特徴とするソースコード変換方法。
  5. 請求項4記載のソースコード変換方法であって、
    さらに、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係が、前記アプリケーションのソースコード作成規約に従った構造及び呼出関係になっているかを検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定するステップと、
    特定された1又は複数の規約違反箇所を検査結果記憶部に記憶するステップと
    を有し、
    前記ソースコードの書き換えを行うステップは、前記検査結果記憶部に記憶されている1又は複数の規約違反箇所を変換対象箇所として抽出し、抽出された変換対象箇所に対応する1又は複数のソースコードの書き換えを行うステップとしてコンピュータにより実行することを特徴とするソースコード変換方法。
  6. 請求項5記載のソースコード変換方法であって、
    前記規約違反箇所を特定するステップは、前記ソースコード構造記憶部に記憶されているソースコードの構造及び呼出関係がソースコードの種類に対応した構造及び呼出関係になっているかをソースコード作成規約として用いて検査し、ソースコード作成規約に従っていない1又は複数の規約違反箇所を特定するステップとしてコンピュータにより実行することを特徴とするソースコード変換方法。
  7. コンピュータに読み込まれることによって、請求項1ないし3のいずれか1項記載のソースコード変換装置を実現するためのプログラム。
JP2013002647A 2013-01-10 2013-01-10 ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム Expired - Fee Related JP6172946B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013002647A JP6172946B2 (ja) 2013-01-10 2013-01-10 ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013002647A JP6172946B2 (ja) 2013-01-10 2013-01-10 ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム

Publications (2)

Publication Number Publication Date
JP2014134962A true JP2014134962A (ja) 2014-07-24
JP6172946B2 JP6172946B2 (ja) 2017-08-02

Family

ID=51413174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013002647A Expired - Fee Related JP6172946B2 (ja) 2013-01-10 2013-01-10 ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム

Country Status (1)

Country Link
JP (1) JP6172946B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132387A (ja) * 1998-10-22 2000-05-12 Fujitsu Ltd オブジェクト指向プログラム作成支援装置
JP2008092475A (ja) * 2006-10-04 2008-04-17 Seiko Epson Corp 情報管理装置、情報管理方法及びそのプログラム
JP2008250914A (ja) * 2007-03-30 2008-10-16 Canon Software Inc プログラム修正装置及び方法、並びにプログラム
JP2010198522A (ja) * 2009-02-27 2010-09-09 Hitachi Ltd ソースコード解析方法およびソースコード解析支援システム
JP2012033017A (ja) * 2010-07-30 2012-02-16 Fujitsu Marketing Ltd 規則検査装置、規則検査方法及び規則検査プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132387A (ja) * 1998-10-22 2000-05-12 Fujitsu Ltd オブジェクト指向プログラム作成支援装置
JP2008092475A (ja) * 2006-10-04 2008-04-17 Seiko Epson Corp 情報管理装置、情報管理方法及びそのプログラム
JP2008250914A (ja) * 2007-03-30 2008-10-16 Canon Software Inc プログラム修正装置及び方法、並びにプログラム
JP2010198522A (ja) * 2009-02-27 2010-09-09 Hitachi Ltd ソースコード解析方法およびソースコード解析支援システム
JP2012033017A (ja) * 2010-07-30 2012-02-16 Fujitsu Marketing Ltd 規則検査装置、規則検査方法及び規則検査プログラム

Also Published As

Publication number Publication date
JP6172946B2 (ja) 2017-08-02

Similar Documents

Publication Publication Date Title
JP7371141B2 (ja) リアルタイムデータフロープログラミング言語のためのツールおよび方法
US10545856B2 (en) Test case generation system
US8028276B1 (en) Method and system for generating a test file
JP5197688B2 (ja) 統合環境生成器
KR101645052B1 (ko) 디버깅 파이프라인
JP2019053729A (ja) スマートコントラクトのテスト方法及びテスト装置
US8645913B2 (en) Web-service based generation of business objects
Challita et al. Towards formal-based semantic interoperability in multi-clouds: the fclouds framework
US11422917B2 (en) Deriving software application dependency trees for white-box testing
CN116028028A (zh) 请求函数生成方法、装置、设备及存储介质
CN110020412B (zh) 一种生成imix标准报文的方法、装置及电子设备
US10606569B2 (en) Declarative configuration elements
US9064042B2 (en) Instrumenting computer program code by merging template and target code methods
JP2013235398A (ja) プログラム分析装置及び方法及びプログラム
Mayer et al. On the applicability of workflow management systems for the preservation of business processes
US20230072988A1 (en) System and a method for automatic generation of smart contracts across blockchain platforms
JP6172946B2 (ja) ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム
CN113672233B (zh) 一种基于Redfish的服务器带外管理方法、装置及设备
CN115618363A (zh) 漏洞路径的挖掘方法及相关设备
Prabhune et al. P-PIF: a ProvONE provenance interoperability framework for analyzing heterogeneous workflow specifications and provenance traces
US10509659B1 (en) Input processing logic to produce outputs for downstream systems using configurations
Hamdani et al. A Novel Framework to Automatically Generate IFML Models From Plain Text Requirements
JP2013030017A (ja) テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム
JP5556480B2 (ja) 文脈違反検出支援方法、文脈違反検出支援装置、及び文脈違反検出支援プログラム
JP7322964B2 (ja) テスト情報抽出装置、テスト情報抽出方法及びプログラム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140707

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170403

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170704

R150 Certificate of patent or registration of utility model

Ref document number: 6172946

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees