(57)【要約】【課題】ソースコード解析支援システムを利用する者、それぞれの母国語間の差によって発生してしまうソースコード解析支援システムが検出する無駄な規約違反について、それを除外する作業負荷が高いという課題に対し、母国語の特徴を利用したロケール対応されたソースコード解析支援システムとその方法。【解決手段】ソースコードに対して関数や変数の命名規則や使用禁止命令などが規定された規約（コーディングルール）に基づいた解析結果を利用して、それぞれの母国語の特徴からソースコード解析の適用有無を予めロケール情報として準備しておき、それぞれの母国語にとって無駄なソースコード解析検出を防止する。更に、それぞれの母国語に併せてソースコード解析結果を翻訳する。【選択図】図１
2013246599.tif 000002
【特許請求の範囲】
【請求項１】
ソースコード解析支援システムにおけるロケール対応されたソースコード解析支援方法であって、
前記ソースコード解析支援システムは、入力装置と、出力装置と、ソースコードに対して関数、変数の命名規則および使用禁止命令を含むコーディングルールおよび前記コーディングルールの適用有無を示すロケール情報を記憶する記憶装置とを具備し、
前記ソースコード解析支援システムにより、
前記入力装置を介してソースコードを受信し、
前記記憶装置に記憶されている前記コーディングルールに基づきソースコードを解析し、
前記解析結果を適用候補として前記記憶装置に記憶し、
前記記憶装置に記憶されている前記ロケール情報から、適用するコーディングルールを検索し、
適用するコーディングルールに絞り込んだ結果を第１の解析結果として前記記憶装置に記憶し、
各母国語に対応した辞書情報に基づき、前記第１の解析結果を翻訳し、その結果を第２の解析結果として前記記憶装置に記憶し、
前記第２の解析結果を前記出力装置に出力する、
ことを特徴とするロケール対応されたソースコード解析支援方法。
【請求項２】
ソースコード解析支援システムにより、
前記ソースコードに対して特定の母国語に基づきソースコード解析対象を限定し、
前記入力装置により入力された対応言語に基づき、ソースコード解析結果を前記出力装置に出力する、
ことを特徴とする請求項１に記載のソースコード解析支援方法。
【請求項３】
前記母国語の特徴から判断されるロケール情報には各母国語として日本語、英語、中国語以外の母国語も含む、
ことを特徴とするロケール対応されたソースコード解析支援方法。
【請求項４】
コンピュータに、請求項１及至請求項３の何れか１項に記載のソースコード解析支援方法を実行させるソースコード解析支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード解析支援方法およびこれを実施するソースコード解析支援システムに関する。
【背景技術】
【０００２】
ソースコード解析システムは、ソースコードに対して関数や変数の命名規則や使用禁止命令などが規定された規約（コーディングルール）をもとにして規約違反の検出を目的としたものである。グローバル対応が推進される状況下において、日本語を母国語とする以外の者がソースコード解析システムを利用する機会が多くなってきている。ソースコード解析システムは、それぞれの母国語（英語や中国語）に対応された（単純にソースコード解析システムの画面表示文字を翻訳したもの）ものは存在している。一方で、ソースコードの解析時に利用する規約（コーディングルール）が、特定の母国語（例えば日本語）を基本としたものになっていて、ソースコード解析システム利用における習熟負荷が高く、日本語を母国語とする以外の者がソースコード解析システムを利用する機会が多い状況下において、こうした母国語の特徴に対応したソースコード解析システムが望まれてきている。関連する技術として、規約をもとにしたソースコードを解析する技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2010-198522号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のソースコード解析システムでは母国語の特徴（日本語や中国語では全角文字の概念はあるが、英語では全角文字の概念がなく半角文字のみであるという文字属性の違いなど）の違いがあるにも関わらず、ソースコードの解析時に利用する特定の規約（コーディングルール）は同じものが適用され、ソースコード解析システムを利用する者の母国語にとって必要がない規約が適用されてしまうことで、無駄な規約違反を除外する作業負荷が高いという問題点があった。
【０００５】
本発明は、ソースコード解析支援システムを利用する上での母国語間の特徴の差を軽減し習熟負荷を改善する、ソースコード解析支援方法およびこれを実施するソースコード解析支援システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するための一手段について説明する。本発明は、入力装置、出力装置、記憶部にあるソースコード解析部、ロケール管理部、解析結果翻訳部、解析結果出力部を有するシステムにおける、ロケール対応されたソースコード解析方法である。前記入力装置を介してソースコードを受信し、前記ソースコードに対して関数や変数の命名規則や使用禁止命令などが規定された記憶部にあるコーディングルールを基に、ソースコード解析部にてソースコードを全て解析し、適用候補として解析結果を格納し、前記ロケール管理部にて前記コーディングルールの適用有無が格納されたロケール情報から適用するコーディングルールを検索し、適用するコーディングルールに絞り込んだ結果を解析結果（翻訳前）として格納し、各母国語に対応したロケール情報（辞書）を基にして解析結果翻訳部にて翻訳した結果を解析結果（翻訳後）として格納し、出力装置を介して、ソースコード解析システムを利用する開発者へ表示する。
【発明の効果】
【０００７】
本発明によれば、それぞれの母国語で作成されたソースコードに合致した規約（コーディングルール）の適用が可能になり、ソースコード解析支援システムを利用する上での母国語間の特徴の差がなくなり習熟負荷が改善される効果が期待できる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係るソースコード解析支援システム１００の全体構成例を示す図である。
【図２】ソースコード解析部１０３に表示される画面例２００を示す図である。
【図３】解析結果１０４のデータ構成例を示す図である。
【図４】ロケール情報１０５のデータ構成例を示す図である。
【図５】解析結果（翻訳前）１０７のデータ構成例を示す図である。
【図６】ロケール情報（辞書）１０８のデータ構成例を示す図である。
【図７】解析結果（翻訳後）１１０のデータ構成例を示す図である。
【図８】解析結果出力部１１１に表示される画面例８００を示す図である。
【図９】ソースコード解析システム１００のハードウェア構成図を示す図である。
【図１０】ソースコード解析システム１００が具備するロケール管理部１０６の処理を示すフローチャートである。
【図１１】ソースコード解析システム１００が具備する解析結果翻訳部１０９の処理を示すフローチャートである。
【図１２】ソースコード解析システム１００が具備するソースコード解析部１０３の処理を示すフローチャートである。
【図１３】ソースコード例を示す図である。
【図１４】コーディングルール１０１のデータ構成例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の一実施例について、図面を参照して詳細に説明する。
【００１０】
図１は、本実施形態に係るソースコード解析支援システム１００の全体構成例を示す図である。ソースコード解析支援システム１００はソースコード１０２とコーディングルール１０１を入力として、ソースコード解析部１０３によりソースコードを解析し解析結果情報を解析結果１０４として格納される。ロケール管理部１０６は解析結果１０４と各コーディングルール（ルールID）に対応した各母国語の適用有無が格納されているロケール情報１０５をもとにして、各母国語として適用すべき情報に絞り込んだ結果を解析結果（翻訳前）１０７として格納される。解析結果翻訳部１０９は解析結果（翻訳前）１０７と各コーディングルール（ルールID）に対応した母国語に対するメッセージ（ルールIDに対応した検出メッセージ）が格納されたロケール情報（辞書）１０８をもとにしてメッセージを翻訳し、解析結果（翻訳後）１１０として格納される。解析結果出力部１１１は母国語に合わせた言語でソースコード解析システムを利用する開発者１１２に対してソースコードに対する各コーディングルール（ルールID）に対して母国語に合致した情報としてソースコード解析結果を表示する。
【００１１】
図９は、ソースコード解析支援システム１００のハードウェア構成例を示す図である。ソースコード解析支援システム１００は、入力装置９０２と、出力装置９０３と、ＣＰＵ９０４とを具備し、記憶部９０１にプログラム９１０として、ソースコード解析部１０３と、ロケール管理部１０６と、解析結果翻訳部１０９と、解析結果出力部１１１を具備する。また記憶部９０１にはコーディングルール１０１と、解析結果１０４と、ロケール情報１０５と、解析結果（翻訳前）１０７と、解析結果（翻訳後）１１０と、ロケール情報（辞書）１０８とを具備する。各部はバス（ＢＵＳ）によって接続されている。
【００１２】
図１４は、ソースコード解析支援システム１００が具備するコーディングルール１０１のデータ構成例を示す図である。図１３のソースコードに対する規約が格納される。図１４に示すように、コーディングルール１０１はルールID１４０１、規約１４０２、メッセージ１４０３とをそれぞれ対応付けて記憶する。ここで、ルールID１４０１には規約を識別するためのルール識別子（今回の例では「RULE01」、「RULE02」、「RULE03」）が格納され、規約１４０２には規約（今回の例では「PICTURE句の利用は禁止」、「「N項目」から「X項目」への転記」、「外部装置名には半角英数字のみ利用」）が格納され、メッセージ１４０３には規約違反メッセージ（今回の例では「使用禁止文を使用しています」、「属性に誤りがあります」、「名称規約に違反しています」）が格納される。
【００１３】
図３は、ソースコード解析支援システム１００が具備する解析結果１０４のデータ構成例を示す図である。ソースコード解析部１０３での解析結果（この時点では母国語の特徴に拠らず一括で解析する）が格納される。図３に示すように、解析結果１０４はプログラムID３０１、ルールID３０２、行番号３０３、メッセージ３０４とをそれぞれ対応付けて記憶する。ここで、プログラムID３０１にはコーディングルール１０１での解析において規約違反しているソースコード１０２のプログラム記号名（今回の例では「Sample01」、「Sample01」、「Sample02」）が格納され，ルールID３０２にはコーディングルール１０１での解析において規約違反しているルール識別子（今回の例では「RULE01」、「RULE02」、「RULE03」）が格納され、行番号３０３には規約に違反しているプログラムID３０１の行番号（今回の例では「100」、「200」、「100」）が格納され、メッセージ３０４にはルールID３０２に対する規約違反メッセージ（今回の例では「使用禁止文を使用しています」、「属性に誤りがあります」、「名称規約に違反しています」）が格納される。
【００１４】
図４は、ソースコード解析支援システム１００が具備するロケール情報１０５のデータ構成例を示す図である。それぞれの母国語の特徴からコーディングルール１０１のルール識別子ごとの母国語の適用有無が格納される。図４に示すように、ロケール情報１０５はルールID４０１、母国語４０２、４０３、４０４とをそれぞれ対応付けて記憶する。ルールID４０１にはルール識別子（今回の例では「RULE01」、「RULE02」、「RULE03」）が格納され、母国語４０２、４０３、４０４にはルール識別子に対する母国語の適用有無（今回の例では母国語４０２（日本語）では全て「可」、母国語４０３（英語）ではルール識別子RULE01、03は「可」、RULE02は「否」、母国語４０４（中国語）ではルール識別子RULE01、02は「可」、RULE03は「否」）が格納される。なお、ルールID４０１のルール識別子にはコーディングルール１０１に存在するもの全てが格納され、それに対応する母国語４０２〜４０４に対する母国語の適用有無も漏れなく格納されている。
【００１５】
図５は、ソースコード解析支援システム１００が具備する解析結果（翻訳前）１０７のデータ構成例を示す図である。解析結果１０４とロケール情報１０５から解析結果が格納される。図５に示すように、解析結果（翻訳前）１０７はプログラムID５０１、ルールID５０２、行番号５０３、メッセージ５０４とをそれぞれ対応付けて記憶する。ここで、プログラムID５０１にはロケール情報１０５での母国語の適用有無（今回の例ではソースコード解析システム入力画面２００において、入力部２０１に対象となる母国語を英語とし、母国語４０３（英語）ではルール識別子RULE02は「否」）に従いコーディングルール１０１での解析において規約違反しているソースコード１０２のプログラム記号名（今回の例では「Sample01」、「Sample02」）が格納され，ルールID５０２にはコーディングルール１０１での解析において規約違反しているルール識別子（今回の例では「RULE01」、「RULE03」）が格納され、行番号５０３には規約違反しているプログラムID５０１の行番号（今回の例では「100」）が格納され、メッセージ５０４にはルールID５０２に対する規約違反メッセージ（今回の例では「使用禁止文を使用しています」、「名称規約に違反しています」）が格納される。
【００１６】
図６は、ソースコード解析支援システム１００が具備するロケール情報（辞書）１０８のデータ構成例を示す図である。規約違反メッセージを各母国語に翻訳するために母国語のメッセージが格納される。図６に示すように、ロケール情報（辞書）１０８はルールID６０１、母国語６０２、６０３、６０４とをそれぞれ対応付けて記憶する。ルールID６０１にはルール識別子（今回の例では「RULE01」、「RULE02」、「RULE03」）が格納され、母国語６０２、６０３、６０４には規約違反メッセージ（今回の例では母国語６０２（日本語）での「使用禁止文を使用しています」、に対する母国語４０３（英語）を英文としている）が格納される。また、違反メッセージを母国語に翻訳する必要がない場合はメッセージは格納されない（今回の例ではルールID６０１での「RULE02」に対する母国語６０３（英語）は翻訳する必要がないため「空白」としている）。なお、ルールID６０１のルール識別子にはコーディングルール１０１に存在するもの全てが格納され、それに対応する母国語６０２〜６０４に対する母国語メッセージにも漏れなく格納されている。  図７は、ソースコード解析支援システム１００が具備する解析結果（翻訳後）１１０のデータ構成例を示す図である。解析結果（翻訳前）１０７とロケール情報（辞書）１０８から解析結果が翻訳されたものが格納される。図７に示すように、解析結果（翻訳後）１１０はプログラムID７０１、ルールID７０２、行番号７０３、メッセージ７０４とをそれぞれ対応付けて記憶する。ここで、プログラムID７０１にはロケール情報１０５での母国語の適用有無（今回の例ではソースコード解析システム入力画面２００において、入力部２０１に対象となる母国語を英語とし、母国語４０３（英語）ではルール識別子RULE02は「否」）に従いコーディングルール１０１での解析において規約違反しているソースコード１０２のプログラム記号名（今回の例では「Sample01」、「Sample02」）が格納され，ルールID７０２にはコーディングルール１０１での解析において規約違反しているルール識別子（今回の例では「RULE01」、「RULE03」）が格納され、行番号７０３には規約違反しているプログラムID７０１の行番号（今回の例では「100」、「100」）が格納され、メッセージ７０４にはロケール情報（辞書）１０８のルールID６０１に対する母国語６０２、６０３、６０４の規約違反メッセージ（今回の例では母国語６０３（英語）に対するメッセージ「英文」）が格納される。
【００１７】
図２に示すソースコード解析システム入力画面２００にはソースコード解析部１０３にて表示される対象となる母国語やソースコード解析の対象となるソースコード、適用するコーディングルールを選択する画面の例を示す。図２に示すソースコード解析システム入力画面２００において、画面起動時にソースコードを受信し、ソースコードファイル名を入出力部２０２へ表示する（今回の例では「Sample01」、「Sample02」、「Sample03」、「Sapmle04」を受信）。表示された入出力部２０１よりソースコード解析の対象となるソースコードを選択（今回の例では「Sample01」，「Sample02」，「Sample03」）する。入力部２０１に対象となる母国語（今回の例では「英語」）と、入力部２０３に適用するコーディングルール（今回の例では「任意のコーディングルール」）を入力し、実行ボタン２０４を押下することによって、ソースコード解析部１０３の処理が開始される。
【００１８】
図１２は、ソースコード解析支援システム１００が具備するソースコード解析部１０３の処理を示すフローチャートである。ソースコード解析部１０３は画面例２００（図２）において入力部２０１に入力された対応言語（今回の例では「英語」）、入力部２０３に入力された適用コーディングルール（今回の例では「任意のコーディングルール」）を取得（Ｓ１２０）する。次にソースコード解析部１０３は画面例２００（図２）において入力部２０２に入力された解析対象ソース（今回の例では「Smaple01」のソースコード（図１３））を取得（Ｓ１２１）する。次にソースコード解析部１０３はコーディングルール１０１（図１４）の先頭よりルール識別子（今回の例では「RULE01」）、規約（今回の例では「PICTURE句の利用は禁止」）、メッセージ（今回の例では「使用禁止文を使用しています」）を取得（Ｓ１２２）する。次にソースコード解析部１０３はＳ１２１で取得したソースコード（図１３）を構文解析や字句解析により規約に違反している該当箇所（今回の例ではソースコード（図１３）で規約に違反している000100 DATA01 PICTURE X(01)が該当箇所）を抽出（Ｓ１２３）する。次にソースコード解析部１０３はＳ１２３で抽出した規約違反に関する情報を解析結果１０４（図３）としてＳ１２１で取得した解析対象ソースのプログラム記号名（今回の例では「Samle01」）をプログラムID３０１として格納し、Ｓ１２２で取得した規約に関するルール識別子（今回の例では「RULE01」）をルールID３０２として格納し、Ｓ１２３で抽出した規約に違反している該当箇所の行番号（今回の例では「100」）を行番号３０３として格納し、Ｓ１２２で抽出した規約に違反している概要箇所のメッセージ（今回の例では「使用禁止文を使用しています」）をメッセージ３０４として格納する。次に、ソースコード解析部１０３はソースコード（図１３）にＳ１２３で取得した規約違反を全て抽出し終えると、再度Ｓ１２２を実行（今回の例ではコーディングルール１０１（図１４）の次の規約である「属性に誤りがあります」）する。次に、ソースコード解析部１０３はＳ１２１で取得したソースコード（図１３）より構文解析や字句解析により規約に違反している該当箇所（今回の例ではソースコード（図１３）で規約に違反している000200 MOVE DATA03 TO DATA02が該当箇所）を抽出（Ｓ１２３）する。次にソースコード解析部１０３はＳ１２３で抽出した規約違反に関する情報を解析結果１０４（図３）としてＳ１２１で取得した解析対象ソースのプログラム記号名（今回の例では「Samle01」）をプログラムID３０１として格納し、Ｓ１２２で取得した規約に関するルール識別子（今回の例では「RULE02」）をルールID３０２として格納し、Ｓ１２３で抽出した規約に違反している該当箇所の行番号（今回の例では「200」）を行番号３０３として格納し、Ｓ１２２で抽出した規約に違反している概要箇所のメッセージ（今回の例では「属性に誤りがあります」）をメッセージ３０４として格納する。次に、ソースコード解析部１０３はソースコード（図１３）にＳ１２３で取得した規約違反を全て抽出し終えると、再度Ｓ１２２を実行（今回の例ではコーディングルール１０１の次の規約である「外部装置名には半角英数字のみ利用」）する。次に、���ースコード解析部１０３はＳ１２１で取得した解析対象ソースに対して規約違反を全て抽出し終えると、再度Ｓ１２１を実行し、次の解析対象ソース（今回の例では「Sapmle02」）を取得し、Ｓ１２２以降を繰り返し実行する。また、ソースコード解析部１０３はＳ１２１で取得した解析対象ソースが取得できなくなり次第、ロケール管理部１０６が実行される。  図１０は、ソースコード解析支援システム１００が具備するロケール管理部１０６の処理を示すフローチャートである。ロケール管理部１０６は、ソースコード解析部１０３のＳ１２０で取得している情報から対応言語（今回の例では「英語」）を取得（Ｓ１００）する。次に、ロケール管理部１０６はＳ１００で取得した母国語に対し適用可否を判定するための検索キーを取得するために、解析結果１０４の１レコード毎のルールID（今回の例では「RULE01」）を取得（Ｓ１０１）する。次に、ロケール管理部１０６は、Ｓ１０１で取得した検索キーであるルールIDに基づきロケール情報１０５（図４）を先頭から検索し、合致する該当ルールIDにより該当レコードの母国語の適用有無を示す情報（４０２〜４０４）からＳ１００で取得した母国語の適用可否を判断（Ｓ１０２）する（今回の例では「RULE01」に対して「英語」であるため「可」と判断される）。適用する場合は解析結果（翻訳前）１０７（図５）として解析結果１０４（図３）の１レコード毎にルールIDに対するプログラムID３０１、ルールID３０２、行番号３０３、メッセージ３０４を解析結果（翻訳前）１０７（図５）のプログラムID５０１、ルールID５０２、行番号５０３、メッセージ５０４として格納（Ｓ１０３）する。適用しない場合は、再度Ｓ１０１を実行（今回の例ではRULE02、RULE03と繰り返す）する。また、ロケール管理部１０６は解析結果１０４（図３）のルールIDが取得できなくなり次第、解析結果翻訳部１０９が実行される。
【００１９】
図１１は、ソースコード解析支援システム１００が具備する解析結果翻訳部１０９の処理を示すフローチャートである。解析結果翻訳部１０９は、ロケール管理部１０６が取得した対象となる母国語を取得（Ｓ１１０）する（今回の例では「英語」）。次に、解析結果翻訳部１０９は、解析結果を翻訳するための検索キーとして解析結果（翻訳前）１０７（図５）の先頭よりルール識別子（今回の例では「RULE01」）を取得（Ｓ１１１）する。次に、解析結果翻訳部１０９は、Ｓ１１１で取得した検索キーであるルールIDに基づきロケール情報（辞書）１０８（図６）を先頭から検索し、合致する該当ルールIDに対してＳ１１０で取得した母国語に対するメッセージを取得（Ｓ１１２）する（今回の例では「RULE01」に対する英語の英文）。次に、解析結果翻訳部１０９は、解析結果（翻訳前）１０７（図５）の１レコード毎にＳ１１１で取得したルールIDに対するプログラムID５０１、ルールID５０２、行番号５０３、Ｓ１１２で取得したメッセージを解析結果（翻訳後）１１０（図７）としてプログラムID７０１、ルールID７０２、行番号７０３，メッセージ７０４として格納（Ｓ１１３）する。また、解析結果翻訳部１０９は、解析結果（翻訳前）１０７のルールIDが取得できなくなり次第、解析結果取得部１１１が実行される。
【００２０】
図８に示すソースコード解析システム出力画面８００には解析結果出力部１１１にて表示される対象となった母国語やソースコード解析結果が翻訳された画面の例を示す。図８に示すソースコード解析システム出力画面８００において、出力部８０１に対象となった母国語（今回の例では英語）と、出力部８０２にソースコード解析結果を翻訳した結果が出力される。
【００２１】
以上本発明の一実施例について説明した。
【００２２】
上記実施例によれば、それぞれの母国語で作成されたソースコードに合致した規約（コーディングルール）の適用が可能になり、ソースコード解析支援システムを利用する上での母国語間の特徴の差がなくなり習熟負荷が改善される効果が期待できる
以上本発明の実施例を説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００２３】
１００・・・ソースコード解析システム、９０２・・・入力装置、９０３・・・出力装置、９０４・・・ＣＰＵ、９０１・・・記憶部。
【図１】
2013246599.tif 000003
【図２】
2013246599.tif 000004
【図３】
2013246599.tif 000005
【図４】
2013246599.tif 000006
【図５】
2013246599.tif 000007
【図６】
2013246599.tif 000008
【図７】
2013246599.tif 000009
【図８】
2013246599.tif 000010
【図９】
2013246599.tif 000011
【図１０】
2013246599.tif 000012
【図１１】
2013246599.tif 000013
【図１２】
2013246599.tif 000014
【図１３】
2013246599.tif 000015
【図１４】
2013246599.tif 000016