(57)【要約】【課題】解析サービスに利用される解析ツールを用いてソースコードの開示なしで解析サービスを実現する。【解決手段】解析サービスに利用される解析ツールを用いてソースコードの開示なしで解析サービスを実現するための第１の情報処理装置であって、前記ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式のファイルをメトリクスとして得る第１の解析部と、前記第１の解析部により得られたメトリクスを出力する第１の出力部と、を有することを特徴とする第１の情報処理装置。【選択図】図６Ａ
2015153235.tif 000002
【特許請求の範囲】
【請求項１】
解析サービスに利用される解析ツールを用いてソースコードの開示なしで解析サービスを実現するための第１の情報処理装置であって、
前記ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式のファイルをメトリクスとして得る第１の解析部と、
前記第１の解析部により得られたメトリクスを出力する第１の出力部と
を有することを特徴とする第１の情報処理装置。
【請求項２】
請求項１に記載のメトリクスを入力として、前記第１の解析部で行った処理に後続する処理を行い、解析結果を得る第２の解析部と、
前記第２の解析部により得られた結果を出力する第２の出力部と
を有することを特徴とする第２の情報処理装置。
【請求項３】
前記第１の解析部による解析処理と前記第２の解析部による処理とは、ソースファイルの字句解析処理、構文解析処理、意味解析処理、ルールチェック処理のうちの少なくとも１をそれぞれ排他的に含む一連の処理であることを特徴とする請求項２に記載の第２の情報処理装置。
【請求項４】
前記メトリクスは、前記ソースコードのファイルパスやファイル名、メソッド名のいずれかとともにファイル規模や複雑度の少なくともいずれかを含む各種品質指標であることを特徴とする請求項１から３までのいずれか１項に記載の情報処理装置。
【請求項５】
ソースコードの開示なしで解析サービスを実現するための第２の情報処理装置であって、
ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式ファイルであるメトリクスを入力として、前記メトリクスの解析処理を行う第２の解析部と、
前記第２の解析部により得られた結果を出力する第２の出力部と
を有することを特徴とする第２の情報処理装置。
【請求項６】
解析サービスに利用される解析ツールを用いてソースコードの開示なしで解析サービスを実現するための情報処理プログラムであって、
前記ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式ファイルをメトリクスとして得る第１の解析処理と、
前記第１の解析処理により得られたメトリクスを出力する第１の出力処理と
をコンピュータに実行させるための情報処理プログラム。
【請求項７】
ソースコードの開示なしで解析サービスを実現するための情報処理プログラムであって、
ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式ファイルであるメトリクスを入力として、前記メトリクスの解析処理を行う第２の解析処理と、
前記第２の解析処理により得られた結果を出力する第２の出力処理と
をコンピュータに実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理技術に関し、特に、ソースコードの開示なしでソースコードの解析を行う解析サービスを実現する情報処理技術に関する。
【背景技術】
【０００２】
近年、複雑さを増しているソフトウェアの開発において、品質向上を目的に、静的コード解析のようなソースコードの解析ツールの利用が進んでいる。開発担当者はソースコードに対して、解析ツールを利用し、バグの早期発見やコーディングルール違反の特定を行っている。また、開発管理者は解析ツールから得られた各種品質指標や集計結果から、ソースコード全体の品質を把握している。
【０００３】
一方で、ソースコードの解析ツールに対しては課題も多い。例えば、解析ツールの使い方が簡単ではないため、解析ツールを導入したものの開発担当者が使いこなすことができず、解析ツールを有効に利用できていないケースや、結果を得るまでに開発担当者の工数がかかりすぎるケースもある。また、解析ツール自体の導入費や保守費が、ライセンス形態によっては、開発担当者の人数分のライセンスが必要であることを考えると、開発担当者の作業コストと合わせ、莫大なコストが発生してしまう。
【０００４】
そのため、開発対象のソースコードに対して、解析ツールを代わりに実行し、解析結果をレポートとして提供する解析サービスも利用され始めている。解析サービスの場合、解析ツールの導入が不要で、開発担当者が解析ツールに関する作業を行う必要もない。
【０００５】
特許文献１は、複数種の静的解析ツールを使用した場合における、品質検証者の作業負担軽減についての技術を開示している。
【０００６】
特許文献２は、ソースコードを複数の静的解析ツールで静的解析を行い、解析結果をわかりやすくまとめる技術を開示している。
【０００７】
特許文献３は、ソースコード静的解析ツールを実行する際に、入力パラメータとして必要になるオプション情報を自動的に収集できる技術を開示している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１６９５７３号公報
【特許文献２】特開２００９−２３０４２０号公報
【特許文献３】特開２０１２−５８９９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記特許文献１、特許文献２、特許文献３ともに、解析ツールの課題を解決するための技術に関する提案であり、ソースコードの開示の要不要に関しては触れられていない。
【００１０】
解析サービスは、上述の解析ツールに対する課題を解決する点で非常に有効であるが、解析サービスの提供者が利用する解析ツールは、入力にソースコード、アウトプットに解析結果という構成が一般的であり、解析サービスを行う上で、前提となるのがソースコードの開示である。しかしながら、解析サービス利用者にとって、ソースコードの開示が難しい場合、解析サービスを利用できないという問題がある。
【００１１】
ソースコードは、膨大な時間をかけて作成された製品情報そのものであり、ノウハウが凝縮されている。特に、知的財産権を収益の根幹とするソフトウェアにとってソースコードは重要な資産であり、自社の開発成果が競合他社に利用されるというリスクを考えると、ソースコードの開示は各企業にとって、重要な問題と言える。
【００１２】
本発明の目的は、ソースコードの解析サービスにおいて、解析サービス利用者がソースコードの開示をすることなく、解析サービスを利用することができる情報処理技術を提供することである。
【課題を解決するための手段】
【００１３】
既存のソースコードの解析ツールによれば、基本的に４つの構造で作られているものが多い。解析を行うために必要な情報の設定を行う「解析情報設定部」、解析を実行するためのGUIを含む「解析制御部」、解析を実行する「メイン解析部」、解析結果の集計やレポートを出力する「解析結果部」である。一般的に、解析ツールはこれら４つの機能が一つとなっており、解析対象のソースコードに対し、解析を実行し、解析結果が得られる。そのため、解析サービスの利用にあたり、ソースコードの開示は必須となる。
【００１４】
本発明では、解析サービスの利用者から解析サービスの提供者へのソースコードの開示を不要とするために、上述した４つの構造が一つとなった解析ツールをあえて二つに分割する手法をとる。
【００１５】
解析サービス利用者に対して、ソースコードの情報が必要な「解析情報設定部」、「解析制御部」、「メイン解析部」の一部（「メイン解析部A」）までを持った「解析ツールA」を提供する。「解析ツールA」は、当該ソースコードのファイルパスやファイル名、メソッド名（メソッド情報）のいずれかとともにファイル規模や複雑度等といった各種品質指標（以下、これらを「メトリクス」と称する。）を出力するツールとし、ソースコードに含まれるロジックは一切含まない。解析サービス提供者は、ロジック情報の含まれていないメトリクスを利用し、「メイン解析部」の一部（「メイン解析部B」）と「解析結果部」を持った「解析ツールB」にて、解析結果を確認できる。「解析ツールB」は、メトリクスを解析結果やレポートに適用するためのデータ処理を行う。
【００１６】
本発明の態様は、ソースコードの解析サービスにおいて、解析サービス利用者がソースコードの開示をすることなく、解析サービスを利用する方法であって、前記解析サービスで利用する解析ツールを、ソースコードの情報を含む「解析ツールA」と、ソースコードの情報を含まない「解析ツールB」とに分割することと、それら二つの解析ツールおよびその結果を利用した解析サービスを提供することを、特徴とする。なお、本発明は解析ツール（解析対象プログラム言語・メトリクス）に依存せずに適用可能である。
【００１７】
本発明の一観点によればソースコードの開示なしで解析サービスを実現するための第１の情報処理装置であって、前記ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式のファイルをメトリクスとして得る第１の解析部と、前記第１の解析部により得られたメトリクスを出力する第１の出力部と、を有することを特徴とする第１の情報処理装置が提供される。
【００１８】
本発明は、上記に記載のメトリクスを入力として、前記第１の解析部で行った処理に後続する処理を行い、解析結果を得る第２の解析部と、前記第２の解析部により得られた結果を出力する第２の出力部と、を有することを特徴とする第２の情報処理装置である。
【００１９】
上記において、前記第１の解析部による解析処理と前記第２の解析部による処理とは、ソースファイルの字句解析処理、構文解析処理、意味解析処理、ルールチェック処理のうちの少なくとも１をそれぞれ排他的に含む一連の処理であることを特徴とする。
【００２０】
前記メトリクスは、前記ソースコードのファイルパスやファイル名、メソッド名のいずれかとともにファイル規模や複雑度の少なくともいずれかを含む各種品質指標であることを特徴とする。各種品質指標は、ソースコードの解析によって得られる、ソースコードの数値情報（統計情報）やソースコードにおける指摘行（指摘位置）などの情報である。各種品質指標と、ソースコードのファイルパスやファイル名、メソッド名等とを合わせると、ソースコードの品質を評価したり、誤記を訂正するためのアドバイスを含む結果（図５のような）を得ることができる。
【００２１】
また、本発明は、ソースコードの開示なしで解析サービスを実現するための第２の情報処理装置であって、ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式ファイルであるメトリクスを入力として、前記メトリクスの解析処理を行う第２の解析部と、前記第２の解析部により得られた結果を出力する第２の出力部と、を有することを特徴とする第２の情報処理装置である。
【００２２】
また、本発明は、ソースコードの開示なしで解析サービスを実現するための情報処理プログラムであって、ソースファイルを入力とし、前記ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式ファイルをメトリクスとして得る第１の解析処理と、前記第１の解析処理により得られたメトリクスを出力する第１の出力処理と、をコンピュータに実行させるための情報処理プログラムである。
【００２３】
また、本発明は、ソースコードの開示なしで解析サービスを実現するための情報処理プログラムであって、ソースコードの解析処理を途中まで行った中間形式であって、ロジック情報を含まない中間形式ファイルであるメトリクスを入力として、前記メトリクスの解析処理を行う第２の解析処理と、前記第２の解析処理により得られた結果を出力する第２の出力処理と、をコンピュータに実行させるための情報処理プログラムである。
【発明の効果】
【００２４】
本発明によれば、解析サービス利用者は、ソースコードの開示をすることなく解析サービスを利用できる。従来の解析サービスと比べて、解析サービス提供者はソースコードの開示が難しかった解析サービス利用者に対し、従来実現できなかった解析サービスを提供することが可能となる。
【００２５】
また本発明によれば、ソースコードの開示が難しかった製品にソースコードの解析を行うことが可能となるため、保守性・生産性・品質の向上を目的に解析サービスを利用した製品開発が可能となる。
【図面の簡単な説明】
【００２６】
【図１】図１は、一般的なソースコード解析ツールの一構成例を示す機能ブロック図である。
【図２】図２は、静的解析対象ファイルの一例(engines\e_sureware.c)を示した図である。
【図３】図３は、メトリクスの一例（ファイル規模）を示した図である。
【図４】図４は、メトリクスの一例（ルール違反の指摘箇所）を示した図である。
【図５】図５は、レポートの一例を示した図である。
【図６Ａ】図６Ａは、本実施の形態による情報処理装置であって、ソースコードの開示を不要とするために、二つに分割した解析ツールのうち、メトリクスを出力するツールの一構成例を示す機能ブロック図である。
【図６Ｂ】図６Ｂは、本実施の形態による情報処理装置であって、ソースコードの開示を不要とするために、二つに分割した解析ツールのうち、解析結果を出力するツールの一構成例を示す機能ブロック図である。
【図７Ａ】図６Ａに対応する装置における処理の流れを示すフローチャート図である。
【図７Ｂ】図６Ｂに対応する装置における処理の流れを示すフローチャート図である。
【図８】図８は、一般的な解析サービスのサービス形態を概略的に示した図である。
【図９】図９は、ソースコードの開示を不要とした、本実施の形態による解析サービスのサービス形態を概略的に示した図である。
【発明を実施するための形態】
【００２７】
以下、本発明の実施形態について、図面を参照しながらより詳細に説明する。なお、以下においては、静的解析の対象に関して、オープンソースであるOpen SSLのソースファイル(enginesフォルダ配下)を例に挙げて説明するが、この形態に限定されるものはない。
【００２８】
図１は、一般的なソースコードの解析ツールを提供する情報処理装置（システム）の一構成例を示す機能ブロック図である。図１に示すように、本実施の形態による情報処理装置１１は、解析制御部１３と、解析情報設定部１４と、メイン解析部１５と、解析結果部２２と、を有する。ソースファイル１２が入力されると、解析制御部１３によって、解析情報設定部１４を操作し、解析を行うために必要な情報の設定を行う。続いて、解析制御部１３によって、メイン解析部１５における解析処理を実行させる。なお、メイン解析部１５では、一般的に、プリプロセッサ展開処理１６、字句解析処理１７、構文解析処理１８、意味解析処理１９、ルールチェック処理２０等が行われ、メトリクス２１が得られる。
【００２９】
解析が終了すると、解析結果部２２により解析結果がGUIに表示される。また、ツールによっては、レポート２３として出力する場合もある。
【００３０】
なお、解析ツールの構成については多様な変形形態が考えられるが、ソースコードを入力する入力部から解析結果をアウトプットとする出力部までが一連の処理を行う一気通貫となる構成が一般的である。
【００３１】
発明者は、例えば、C、C++、Javaの言語を対象に、ソースコードに存在するクローンコード(類似のコード)の抽出、 ソースコードのロジックの複雑さの明確化、静的解析によりコーディングレベルでの品質状況の分析、各種分析結果に基づくプログラム全体の見える化等の各分析を行うことができるということに想到した。
【００３２】
すなわち、上記の一連の処理を行う一気通貫となる構成において、ソースコードの解析過程のうちの少なくともいずれか１の工程において作成された中間形式のデータ（ファイル）を、解析サービス提供者に渡し、それを元にさらに解析を続けた結果として得られるレポートを解析サービス提供者から受け取ることにより、解析サービス提供者にソースコードを開示せずにソースコードの解析結果を受け取ることができる。
【００３３】
上記の考察について、より具体的に例を挙げて説明する。
図１に示すような一般的な情報処理を行う解析ツールに対し、図２に示すソースファイル(e_sureware.c)を入力してこれを解析することを考えてみる。
【００３４】
図２に示すソースファイルは、一連の処理を行うためのロジック情報を含む。これらの一連の処理の内容を含むソースコードにより、どのような処理を行うかが、解析サービス提供者にもわかってしまう。
【００３５】
そこで、本実施の形態による情報処理技術では、以下のような工夫を行っている。
図６Ａ、図６Ｂは、解析サービス提供者へのソースコードの開示を不要とするための情報処理の構成例を示す機能ブロック図である。図７Ａは、図６Ａに示す構成に基づく処理の流れを示すフローチャート図であり、図７Ｂは、図６Ｂに示す構成に基づく処理の流れを示すフローチャート図である。図６Ａは、図１に示すような情報処理を二つに分割した解析ツールのうち、メトリクスを出力するツールの構成例を示す機能ブロック図である。第１の情報処理装置である解析ツールA２１は、例えば、図２に示すようなソースファイル２２を入力とし（図７Ａ：ステップＳ１−Ｓ２）、解析制御部２３によって、解析情報設定部２４を操作し、解析を行うために必要な情報の設定を行う（ステップＳ３）。続いて、解析制御部２３によって、メイン解析部A２５による処理を実行させる（ステップＳ４）。
【００３６】
メイン解析部A２５による第１の解析処理が終了すると、メトリクス２６を所定の位置に出力する（ステップＳ５―Ｓ６）。なお、出力されるメトリクス２６は下記の図３や図４のような情報であり、ソースコードに含まれるロジック情報は含まない。どの情報を選んで、出力を行うかは、ソースコードの形式や解析過程に依存するが、例えば４つの構造が一つとなった解析ツールをあえて二つに分割することで、ソースコードの開示をしないで済むという観点から考えれば、ロジック情報を含まないようになった後であれば、受け渡しに適したファイル形式になった状態で第１の情報処理を終えて、ソースコード解析サービス提供者に提供（送信、手渡しなど）すれば良い。
【００３７】
図２に示すソースコードのデータに基づいて、例えば図１のメイン解析処理１６−２０までのうちのいくつかまでの処理を行い、解析を行うために必要な情報の設定値に基づいて、例えば、図３のファイル規模（例えば、構文解析１８までを行った結果）や図４のルール違反（例えば、ルールチェック２０までを行った結果）の指摘箇所（図２の行のうちの指摘される行）のようなメトリクスが解析結果として得られ（矢印参照）、図５のような結果（レポート）が作成可能となる。
【００３８】
尚、ここで示すメトリクスはあくまで一例であり、解析ツールによって異なる。図３や図４に示されるメトリクスにはソースコードに含まれるロジック情報は含まれていないことがわかる。但し、ソースコードの問題点を抽出するための解析を行うものであるから、ソースコードの評価の経過・結果である各種品質指標を最終的にレポートするためのファイルであることが好ましい。即ち、ファイルパス（フォルダ名）、ファイル名、メソッド名（メソッド情報）のいずれかの対象特定情報とともに、ファイル規模、複雑度等のうち少なくとも１つのメトリクスが含まれていることが好ましい。
【００３９】
ここでは、図３及び図４のようなデータが得られた段階での結果をメトリクス２６として出力させることで、図６Ａの第１の解析処理を終了させる。
【００４０】
図６Ｂは、ソースコードの開示を不要とするために、二つに分割した解析ツールのうち、第１の解析処理で得られた、図３及び図４に示すようなメトリクス２６を入力とし、解析結果（レポート）３５を出力するツールである第２の情報処理装置の一構成例を概略的に示す機能ブロック図である。第２の情報処理装置である解析ツールB３１は、第１の情報処理で得られたメトリクス３２を入力とし（ステップＳ１１−１２）、メイン解析部B３３、すなわち、図１の処理１６−２０までのうち、第１の情報処理で既に行った処理に後続する処理を実行することにより、第２の解析処理が行われ（ステップＳ１３）、解析結果部３４において解析結果の閲覧を可能とする。また、図５に示すようなレポート３５を所定の位置に出力する（ステップＳ１４−１５）。なお、出力されるレポート３５は上述した図５のような情報であり、ソースコードに含まれるロジック情報は含まない。図５によれば、ソースファイル(e_sureware.c)は、規模が８５８ステップ、指摘箇所が４件、指摘密度が４．７であり、図３の下から４行目のデータ（矢印参照）と図４のデータとが図５に反映されていることがわかる。図３と図４とのような中間形式ファイルから、図５の１行（例えば矢印参照）が作成できる。
【００４１】
従って、第２の情報処理を行う際には、ロジック情報を含むソースコードは不要である。ここで、ロジック情報を含まないとは、第１の情報処理で得られたメトリクスからは、全体としてどのようなロジック処理を行っているかを特定できない程度であることを意味する。
【００４２】
尚、第２の情報処理装置に入力するのは、ファイル自体でなく、メトリクスファイルの参照ができるような参照先ＵＲＬなどであっても良い。
【００４３】
また、メイン解析部A２５（第１の解析部）による解析処理とメイン解析部B３３（第２の解析部）による処理とは、例えば、図１に示すようなソースファイルの字句解析処理、構文解析処理、意味解析処理、ルールチェック処理のうちの少なくとも１をそれぞれ排他的に含む一連の処理である。
【００４４】
図８は、一般的な解析サービスのサービス形態を概略的に示した図である。サービス利用者４１はソースファイル４２をサービス提供者４３に開示する。サービス提供者４３はソースファイル４４を入手後、解析ツール４５を利用し、レポート４６を作成する。そして、作成されたレポート４７をサービス利用者４１に提供する。解析ツール４５は図１に示す一般的な解析ツールであるため、ソースコードの開示が必須となる。
【００４５】
図９は、本実施の形態による、ソースコードの開示を不要とした解析サービスのサービス形態を概略的に示した図である。サービス利用者５１はソースファイル５２を入力とし、解析ツールA５３を利用し、メトリクス５４を取得する。サービス提供者５５はサービス利用者５１からメトリクス５６を入手後、解析ツールB５７を利用し、レポート５８を作成する。そして、作成されたレポート５９をサービス利用者５１に提供する。解析ツールA５３は図６Ａに示すメトリクスを出力するツールであるため、ソースコードの開示が不要となる。
このようなサービスの提供も、本発明の内容に含まれるものである。
【００４６】
以上に説明したように、本実施の形態によれば、解析サービス利用者がソースコードの開示をすることなく、解析サービスを利用できる。従来の解析サービスと比べて、解析サービス提供者はソースコードの開示が難しかった解析サービス利用者に対し、従来実現できなかった解析サービスを提供することが可能となる。
【００４７】
また、従来ソースコードの開示が難しかった製品にソースコードの解析を行うことが可能となるため、保守性・生産性・品質の向上を目的に解析サービスを利用した製品開発が  可能となる。
【００４８】
上記の処理および制御は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によるソフトウェア処理、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）によるハードウェア処理によって実現することができる。
【００４９】
また、上記の実施の形態において、添付図面に図示されている構成等については、これらに限定されるものではなく、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて適宜変更して実施することが可能である。
【００５０】
また、本発明の各構成要素は、任意に取捨選択することができ、取捨選択した構成を具備する発明も本発明に含まれるものである。
【産業上の利用可能性】
【００５１】
本発明は、ソースコードの解析装置として利用可能である。
【符号の説明】
【００５２】
２１Ａ…解析ツール、２２…ソースファイル、２３…解析制御部、２４…解析情報設定部、２５…メイン解析部Ａ、２６・３６…メトリクス、３３…メイン解析部Ｂ、３４…解析結果部、３５…レポート。
【図１】
2015153235.tif 000003
【図２】
2015153235.tif 000004
【図３】
2015153235.tif 000005
【図４】
2015153235.tif 000006
【図５】
2015153235.tif 000007
【図６Ａ】
2015153235.tif 000008
【図６Ｂ】
2015153235.tif 000009
【図７Ａ】
2015153235.tif 000010
【図７Ｂ】
2015153235.tif 000011
【図８】
2015153235.tif 000012
【図９】
2015153235.tif 000013