(57)【要約】【課題】顧客が静的解析の知識を多く必要とせずに静的解析を実行することを可能とし、プロジェクトごとの静的解析システムの維持コストの削減、および静的解析実施部門の無駄の無い静的解析システムの運用を可能とするソースコード静的解析支援システムを得ること。【解決手段】ソースコードの静的解析を依頼する端末装置２０と、ソースコードの静的解析の実施に必要な解析対象情報を端末装置２０から受信し、ソースコードの静的解析の結果である解析結果を端末装置２０へ送信する通信部１１と、端末装置２０から受信した解析対象情報を用いてソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析部１３とを有する静的解析装置１０とが、通信回線３０を介して接続される。【選択図】      図１
2004240477.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードの静的解析を依頼する端末装置と、
前記ソースコードの静的解析の実施に必要な解析対象情報を前記端末装置から受信し、前記ソースコードの静的解析の結果である解析結果を前記端末装置へ送信する通信手段と、
前記端末装置から受信した前記解析対象情報を用いて前記ソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析手段と、
を有する静的解析装置と、
が、通信回線を介して接続されていることを特徴とするソースコード静的解析支援システム。
【請求項２】
前記通信手段は、
前記ソースコードの静的解析の実施が初回である場合には、前記解析対象情報として、ソースコード、該ソースコードの開発環境を記述した開発環境情報、該開発環境情報に対応して作成されるシステムインクルードファイル、および前記ソースコードのコンパイル時の手続が記述されるコンパイル時手続情報を前記端末装置から受信して前記開発環境情報と前記システムインクルードファイルを格納するとともに、受信した前記ソースコードを識別するための登録情報を付与して前記端末装置に送信し、
前記ソースコードの静的解析の実施が２回目以降である場合には、前記解析対象情報としてソースコードおよびコンパイル時手続情報と、前記登録情報とを前記端末装置から受信することを特徴とする請求項１に記載のソースコード静的解析支援システム。
【請求項３】
前記通信手段は、前記ソースコードの静的解析の実施が初回である場合には、前記静的解析装置に格納されている開発環境情報の一覧を前記端末装置に送信して表示させる機能をさらに有することを特徴とする請求項１または２に記載のソースコード静的解析支援システム。
【請求項４】
前記静的解析装置は、前記ソースコードの静的解析の実施が２回目以降である場合に、前記ソフトウェア静的解析部によって現在実施された解析結果と、前記静的解析装置に格納されている前回の解析結果とを比較した解析履歴情報を生成する解析履歴生成手段をさらに備えることを特徴とする請求項１〜３のいずれか１つに記載のソースコード静的解析支援システム。
【請求項５】
ソースコードの静的解析を依頼する端末装置と通信回線を通じて接続された静的解析装置であって、
前記ソースコードの静的解析の実施に必要な解析対象情報を前記端末装置から受信し、前記ソースコードの静的解析の結果である解析結果を前記端末装置へ送信する通信手段と、
前記端末装置から受信した前記解析対象情報を用いて前記ソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析手段と、
を備えることを特徴とする静的解析装置。
【請求項６】
前記通信手段は、
前記ソースコードの静的解析の実施が初回である場合には、前記解析対象情報として、ソースコード、該ソースコードの開発環境を記述した開発環境情報、該開発環境情報に対応して作成されるシステムインクルードファイル、および前記ソースコードのコンパイル時の手続が記述されるコンパイル時手続情報を前記端末装置から受信して前記開発環境情報と前記システムインクルードファイルを格納するとともに、受信した前記ソースコードを識別するための登録情報を付与して前記端末装置に送信し、
前記ソースコードの静的解析の実施が２回目以降である場合には、前記解析対象情報としてソースコードおよびコンパイル時手続情報と、前記登録情報とを前記端末装置から受信することを特徴とする請求項５に記載の静的解析装置。
【請求項７】
前記通信手段は、前記ソースコードの静的解析の実施が初回である場合には、前記静的解析装置に格納されている開発環境情報の一覧を前記端末装置に送信して表示させる機能をさらに有することを特徴とする請求項５または６に記載の静的解析装置。
【請求項８】
前記ソースコードの静的解析の実施が２回目以降である場合に、前記ソフトウェア静的解析部によって現在実施された解析結果と、前記静的解析装置に格納されている前回の解析結果とを比較した解析履歴情報を生成する解析履歴生成手段をさらに備えることを特徴とする請求項５〜７のいずれか１つに記載の静的解析装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ソフトウェアのソースコードの静的解析作業を支援して、その解析手順を効率化するソースコード静的解析支援システムおよび静的解析装置に関するものである。
【０００２】
【従来の技術】
ソフトウェア開発において、コーディング時のソースコードの記述誤りによって、ソフトウェアが正常に動作しないという不具合は数多く発生する。このソースコードの記述誤りはソースコードをレビューすることで削減することが可能であるが、ソースコードの規模が大きくまた複雑になるにつれてソースコードの完全なレビューは困難となる。このソースコードのレビューの１つの方法であるソースコード静的解析は、ソースコードを実際に実行せずに構文的あるいは意味的に解析し、記述誤りの可能性の高い部分について警告を出力するもので、記述誤りの発見を支援するものである。
【０００３】
このようなソースコードの記述誤りをソフトウェアの試験前に検出し、ソースコード開発者が修正できるような情報を提供するために、ソースコードを実際に実行せずに構文的または意味的に解析し、記述誤りの可能性の高いソースコードの記述に対して警告を出力する静的解析システムが英国Ｐｒｏｇｒａｍｍｉｎｇ  Ｒｅｓｅａｒｃｈ社製のＱＡＣ（商品名）、ＱＡＣ＋＋（商品名）や、富士通ミドルウェア社製のＥＹＤＳ（登録商標）等として開発され、販売されている。
【０００４】
また、ソースコードのレビューに加えて、プログラムの開発が終了した後に、ソースコードの改良や保守の作業を行う場合に、その作業効率を向上させ、誤修正を防止するためのプログラム保守支援装置が提案されている（たとえば、特許文献１参照）。この特許文献１に記載のプログラム保守支援装置は、インクルードファイル内の複数のデータ名とこのデータと参照・更新関係にあるプログラムのソースコードファイル名とを記憶する参照・更新関係記憶部と、コンパイル・リンク作業の指定を記憶するコンパイル・リンク作業部と、インクルードファイルから参照・更新関係を有するデータ名を検出して参照・更新関係記憶部に記憶した後、コンパイル・リンク作業部に記憶されている作業指定を基に、プログラムのソースコードファイルからデータ名を検出して、参照・更新関係記憶部に記憶されているデータ名に対応させてプログラムのソースコードファイル名を参照・更新関係記憶部に記憶する処理を行う参照・更新関係検出／処理部と、その処理結果を表示する表示部とを有している。これによって、プログラムとインクルードファイルのクロスリファレンスが作成され、プログラムとインクルードファイル内のデータとの対応関係をプログラムの保守を行う者に対して表示するようにしている。
【０００５】
【特許文献１】
特開平５−１５８６６７号公報（第３頁）
【０００６】
【発明が解決しようとする課題】
しかしながら、上述した従来の静的解析システムには、つぎのような種々の問題点があった。まず、第１の問題点として、静的解析システムは、言語標準規格に対して解析対象ソースコードがどのように乖離しているかを解析するために、ソースコードの解析にはソースコードごとの詳細な特性情報が必要であり、その内容を静的解析システムに反映するためには静的解析システムに関する熟練が必要であった。このような問題点に対し、たとえば、富士通ミドルウェア社製のＥＹＤＳ（登録商標）等では、ソースコードの開発環境ごとの大まかな特性情報をセットとして提供し、顧客に対してそれらの中からソースコードの開発環境に最も近い設定を選択させることで、特定の開発環境の基礎的な設定内容に関しては容易に設定を行うことが可能な機能を備えている。しかし、全てのソースコード毎の設定は準備されておらず、あらかじめ準備されていない開発環境においては、煩雑な設定を行う必要があり、そのために静的解析システムに習熟する必要があった。
【０００７】
つぎに、第２の問題点は、上記第１の問題点から、静的解析システムに習熟していない顧客が解析を行うと、本当に不具合となる可能性のあるソースコードの記述に対する警告が、ソフトウェアの実行上は問題のないソースコードの記述、またはソフトウェアの実行上、警告対象となるが故意にそのような記述をしているソースコードの記述に対して出力された警告に埋没してしまい、それらの区別が困難となるというものである。すなわち、本当に不具合となる可能性のある警告を見つけ出すために、静的解析システムに習熟していない顧客は出力された結果の解析に時間を費やさなければならなかった。
【０００８】
つぎに、第３の問題点は、ソースコード静的解析は、コーディング終了からテスト開始段階までのソフトウェア開発の特定の期間で利用されることが多く、各開発者の静的解析システムの利用時期が集中する反面、利用されない期間も長いことに起因するものである。すなわち、ソースコード静的解析システムをソフトウェア開発プロジェクトごとに設置する場合には、利用が集中するピークに合わせて静的解析システムを構築する必要があるために、システムとしては十分な構成となるが、その分利用されない期間にシステムを維持するコストが無駄になってしまうという問題点があった。
【０００９】
そして、第４の問題点は、上記第３の問題点に対処するために、ソースコード静的解析を専門に行う組織にソースコードの解析を依頼する場合に起因するものである。基本的にソースコードは機密性の高い情報であり、ソースコードの種類によっては、ソースコード静的解析の担当者の目に触れさせることはできる限り避ける必要がある。しかし、ソースコードの解析をその専門組織に依頼する場合には、機密性の高いソースコードが、ソースコード静的解析の担当者の目に触れてしまう危険性が高くなってしまう。そこで、たとえばソースコード静的解析を自己の組織の外部の専門組織に依頼するのではなく、ソースコード静的解析を専門に行う部門を自己の組織の内部に設置して、ソースコード静的解析を行う作業担当者を常設する方法が考えられる。しかし、この場合にも、上記第３の問題点と同じく、その部門の維持にコストがかかってしまうという問題点があった。
【００１０】
また、特許文献１に記載のプログラム保守支援装置においても、プログラムの保守時におけるインクルードファイルとソースコードファイルとの間の定義などの参照関係を明示して、保守を行って作業効率を改善するものではあるが、上記した第１〜第４の問題点を解決するものではない。
【００１１】
これらのように、従来の静的解析システムでは実際の静的解析を実行するまでの準備に静的解析の知識を必要とする上に、解析対象ソースコードの特性を静的解析システムに反映するために静的解析システムに熟練する必要があり、静的解析システムに対して適切な設定を行わないと、解析の結果として本来意図していない膨大な警告を発生し確認に時間がかかるといった問題点があった。
【００１２】
また、静的解析システムはソフトウェア開発において特定のフェーズに集中的に利用されるため、各プロジェクトで静的解析システムを設置すると、利用されない期間にシステムを維持するコストが無駄となり、集中して静的解析を行う部門を設置する場合でも、作業担当者の維持コストがかかるという問題点もあった。さらに、ソースコード静的解析を専門組織に依頼する場合には、ソースコードの機密性を考慮すると、ソースコードの内容が解析担当者の目に触れることは好ましくないという問題点もあった。
【００１３】
この発明は、上記に鑑みてなされたもので、顧客が静的解析の知識を多く必要とせずに静的解析を実行することを可能とし、プロジェクトごとの静的解析システムの維持コストの削減、および静的解析実施部門の無駄の無い静的解析システムの運用を可能とするソースコード静的解析支援システムおよび静的解析装置を得ることを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるソースコード静的解析支援システムは、ソースコードの静的解析を依頼する端末装置と、前記ソースコードの静的解析の実施に必要な解析対象情報を前記端末装置から受信し、前記ソースコードの静的解析の結果である解析結果を前記端末装置へ送信する通信手段と、前記端末装置から受信した前記解析対象情報を用いて前記ソースコードの静的解析を行い、解析結果を出力するソフトウェア静的解析手段と、を有する静的解析装置と、が、通信回線を介して接続されていることを特徴とする。
【００１５】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるソースコード静的解析支援システムおよび静的解析装置の好適な実施の形態を詳細に説明する。
【００１６】
実施の形態１．
図１は、この発明にかかるソースコード静的解析支援システムおよび静的解析装置の実施の形態１の概略構成を示すブロック図である。ソースコード静的解析支援システムは、プログラムのソースコードを作成し、その静的解析の依頼をする端末装置２０と、該端末装置２０によって作成されたソースコードの静的解析を実行する静的解析装置１０とが、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットなどのネットワーク３０を介して接続された構成となっている。
【００１７】
端末装置２０は、図示していないが、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などの表示部、キーボードやポインティングデバイスなどの入力部、種々の処理を実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算処理部、ソースコードなどを格納する記憶部、通信回線を介して他の端末装置２０や静的解析装置１０との間で通信を行う通信部を有しており、ソースコードを作成し、静的解析装置１０との間で通信を行うことが可能なパーソナルコンピュータなどの情報処理端末である。
【００１８】
静的解析装置１０は、端末装置２０との間で通信を行う通信部１１、静的解析で必要な情報を端末装置２０にＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式などの形式で表示するための通信情報データベース１２、端末装置２０からのソースコードの静的解析を行うソフトウェア静的解析部１３、静的解析を行ったソースコードに関する情報などを格納する解析情報データベース１４、解析情報データベース１４の構成を変更する構成／変更管理部１５、解析情報データベース１４に格納されている過去の情報と新しく格納される情報とを比較して解析する解析履歴生成部１６を有する。
【００１９】
通信部１１は、静的解析装置１０と通信回線を介して接続された端末装置２０との間でデータの送受信を行う役割を有する。具体的には、ソースコード静的解析を行う際に必要な情報を端末装置２０に提示したり、端末装置２０からソースコード静的解析の対象となる情報やソースコードを受信したり、受信したソースコードの静的解析の解析結果を端末装置２０に送信したりする。
【００２０】
通信情報データベース１２は、ソースコード静的解析を行う際に端末装置２０との間でやりとりされる情報を電子データの形式で格納する。この実施の形態１では、端末装置２０に表示されたＷｅｂブラウザでソースコード静的解析に必要な解析対象情報を入力、閲覧および送信させるための表示画面がＨＴＭＬ形式などのファイル形式で格納されている場合を例に挙げている。そのため、この実施の形態１では、これらの通信部１１と通信情報データベース１２とを合わせて、Ｗｅｂサーバの役割を担っている。
【００２１】
ここで、解析対象情報は、開発環境コンパイラの独自設定の登録などの解析対象であるソースコードの開発環境についての開発環境情報、解析対象ソースコードが利用しているシステムインクルードファイル、ｍａｋｅｆｉｌｅやｐｒｏｊｅｃｔファイルなどの解析対象ソースコードのコンパイル時の手続が格納されたコンパイル時手続情報、解析対象ソースコードである顧客の開発ソースコード、そして顧客を識別するために顧客に対して一意に割り振られるユーザＩＤや、解析対象であるソースコードを識別するために割り振られるプロジェクトナンバなどの解析対象のソースコードを管理するために初回解析時に登録する登録情報を含むものである。
【００２２】
以上において、ソースコードで使用される関数や型、マクロ定義などを格納するインクルードファイルは、この発明では開発ソースコードに含まれている。また、開発環境コンパイラとは、開発環境に応じて種々のコンパイラが存在するので、開発環境に応じて選択されたコンパイラを意味するものである。さらに、開発環境情報（開発環境コンパイラ）については、想定される開発環境を予め通信情報データベース１２に登録しておき、顧客がその通信情報データベース１２に格納された開発環境の中から選択することができるようにしてもよい。さらにまた、登録情報には、２回目以降の静的解析時に入力するために、顧客であることを確認するためのパスワードなどのセキュリティ情報を含むものであってもよい。これらの解析対象情報を解析対象ごとに顧客が端末装置２０から入力または添付できるように、たとえばＨＴＭＬ形式のファイルが通信情報データベース１２に格納されている。
【００２３】
ソフトウェア静的解析部１３は、上記端末装置２０から受信した解析対象情報を入力として、ソースコードの静的解析を行い、ソフトウェア静的解析の解析結果である警告が埋め込まれたソースコード、表計算アプリケーションで利用可能な形式の解析結果の集計ファイル、ソースコード解析結果を評価した解析結果成績書、およびソースコードの問題のある部分に関する修正提案を出力する。ソフトウェア静的解析部１３は、このような静的解析を行うものであれば、市販されているものであっても、独自に開発したものであってもよい。
【００２４】
構成／変更管理部１５は、端末装置２０から受信した開発環境情報とシステムインクルードファイル、およびソフトウェア静的解析部１３で出力された解析結果を、解析情報データベース１４に登録して管理する機能を有する。なお、ソースコードの初回解析時においては、ソフトウェア静的解析部１３で出力された解析結果がそのまま解析情報データベース１４に格納されるが、ソースコードの２回目以降の解析時においては、出力された解析結果は解析情報データベース１４に、過去の解析結果が残るように累積的に保存されることが望ましいが、前回の解析時の解析結果に上書きして格納されるようにしてもよい。
【００２５】
解析履歴生成部１６は、２回目以降のソースコード静的解析時に、そのときのソフトウェア静的解析部１３で出力された解析結果と、解析情報データベース１４に登録されている前回行われたソフトウェア静的解析部１３で出力された解析結果とを比較分析して、解析履歴成績書を作成する。この解析履歴成績書は、たとえばある指標についての今回の解析結果と前回の解析結果との差分を計算し、その差分を解析結果の改善の良否として、グラフなどの形で視覚的に表現したものである。たとえば、数値が小さければ小さいほど解析結果の評価が高いある指標について、前回の解析結果を基準として算出された計算値が負の値で示され、その絶対値が大きければ、ソースコードの構造が改善されていることになる。
【００２６】
解析情報データベース１４は、通信部１１で端末装置２０から受信した解析対象情報のうち開発環境情報とシステムインクルードファイルのほか、ソフトウェア静的解析部１３で出力された結果と、解析履歴生成部１６で生成された解析履歴成績書を、ソースコードに対して付された登録情報と関連付けして格納する。開発環境情報とシステムインクルードファイルは、あるソフトウェアの開発において１対１に対応するものであるので、その内容が変更されることはないと考えられるので、ソースコードの初回解析時において解析情報データベース１４に登録される。このようにすることで、同じソフトウェアの２回目以降のソースコード静的解析時において、端末装置２０から静的解析装置１０に送信する情報量を抑制することが可能となる。
【００２７】
なお、図１には示されていないが、端末装置２０と静的解析装置１０との間で通信を行うために、ＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）サーバなどがネットワーク上に配置されている。
【００２８】
つぎに、このソースコード静的解析支援システムの動作処理手順について、図２〜図６を参照しながら説明する。図２は、この発明にかかるソースコード静的解析支援システムを用いてソースコードの静的解析を初回に行う場合の処理の流れを模式的に示す図であり、図３は、ソースコードの静的解析を２回目以降に行う場合の処理の流れを模式的に示す図である。なお、以下では、ソースコードの静的解析を依頼する端末装置２０から静的解析装置１０に対する表示画面の指示や、静的解析装置１０から端末装置２０への指示された表示画面データの送信は、たとえば、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によって行われるものとする。このようなプロトコルを用いたネットワークにおけるデータの送受信は、公知の技術であるので、その詳細な説明は省略する。
【００２９】
図４は、静的解析の対象となるソースコードを含む解析対象情報を静的解析装置が受け付ける処理手順を示すフローチャートである。まず、ソースコードの静的解析を実行しようと考えている顧客によって、顧客の端末装置２０から静的解析装置１０にアクセスされると、静的解析装置１０は、ＨＴＴＰによって端末装置２０に、通信情報データベース１２に格納されている静的解析を実行するためのＨＴＭＬ形式の初期画面データを送信する。この初期画面データには、対象となるソースコードについて静的解析が初めてか否かを選択する項目が付されており、顧客の端末装置２０には、ソースコード解析が初めてか否かを選択する画面が表示される（ステップＳ１０１）。
【００３０】
端末装置２０に選択画面が表示されると、顧客によって、このシステムでの解析対象となるソースコードの静的解析の実施が初めてか否かが判断される（ステップＳ１０２）。解析対象となるソースコードの静的解析の実施が初めてである場合（ステップＳ１０２でＹｅｓの場合）には、その旨が静的解析装置１０へと送信され、静的解析装置１０の通信部１１は、解析情報データベース１４に格納されている過去に解析実績のある開発環境情報（開発環境コンパイラ）の一覧画面を顧客の端末装置２０に送信して表示させる（ステップＳ１０３）。
【００３１】
開発環境コンパイラの一覧画面が端末装置２０に表示されると、その中から解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラがあるか否かが顧客によって判断される（ステップＳ１０４）。解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラが存在する場合（ステップＳ１０４でＹｅｓの場合）には、顧客によって同種の開発環境コンパイラが一覧画面から選択され、その情報が静的解析装置１０へと送信される。静的解析装置１０の通信部１１は、顧客によって選択された開発環境コンパイラの内容を、顧客の端末装置２０に表示させる（ステップＳ１０５）。そして、この表示された開発環境コンパイラが、解析対象ソースコードの開発環境コンパイラとして、顧客の端末装置２０の表示画面上で設定される。
【００３２】
一方、ステップＳ１０４で、解析対象となるソースコードの開発環境コンパイラと同種の開発環境コンパイラが存在しない場合（ステップＳ１０４でＮｏの場合）には、その旨が静的解析装置１０へと送信される。その後、静的解析装置１０の通信部１１は、通信情報データベース１２に格納されているソースコードの静的解析に必要な開発環境コンパイラの独自設定の登録画面を送信して、顧客の端末装置２０に表示させる（ステップＳ１０６）。顧客は、端末装置２０の入力部から静的解析で必要な開発環境コンパイラの情報を入力する。この開発環境コンパイラの独自設定の登録画面では、暗黙のマクロ定義や言語拡張記述の置き換えなどの方法を記述するが、平易な表現を用いて顧客の入力を容易にする画面設計とされていることが望ましい。
【００３３】
この開発環境コンパイラの独自設定の登録画面に必要事項が入力された後、静的解析装置１０の通信部１１は、解析情報データベース１４に格納されているシステムインクルードファイルの指定画面を端末装置２０に表示させる（ステップＳ１０７）。ここで、システムインクルードファイルは、ステップＳ１０６で設定した開発環境コンパイラが独自に有するものである。このシステムインクルードファイルの指定画面は、システムのファイル構造をツリー状に可視的に表示できるものであり、その表示の中から、一連のシステムインクルードファイル群が格納されているディレクトリを指定するようにすると、入力が容易になり望ましい。
【００３４】
静的解析装置１０は、顧客の端末装置２０にステップＳ１０５での開発環境選択画面を表示させた後、またはステップＳ１０７でシステムインクルードファイルの指定画面を表示させた後、ｍａｋｅｆｉｌｅなどのコンパイル時手続情報を入力もしくは選択する画面、またはコンパイル時手続情報が記載されたファイルを指定する設定画面を、端末装置２０に表示させる（ステップＳ１０９）。顧客は、この画面でコンパイル時の手続に関する情報の設定を行う。なお、コンパイル時手続情報が記載されたファイルを指定する場合に、ファイルが格納されているディレクトリをツリー状に可視的に表示させて、そのツリー状の中のディレクトリ中から所望のファイルを選択させるようにしてもよい。
【００３５】
つぎに、静的解析装置１０の通信部１１は、通信情報データベース１２の中から、顧客が静的解析時に付加的な設定を行うことが可能な画面を、端末装置２０に送信して表示させる（ステップＳ１１０）。ここで、静的解析時の付加的な設定とは、開発環境コンパイラの種類によって、そのコンパイラに特別に指定しなければならないパラメータに対して行う設定のことをいう。
【００３６】
つぎに、静的解析装置１０の通信部１１は、顧客が解析を依頼するソースコードを指定する指定画面を通信情報データベース１２の中から端末装置２０に対して送信して表示させる（ステップＳ１１１）。そして、顧客は、この指定画面で解析対象のソースコードを指定する。
【００３７】
上述した各ステップの画面における入力が端末装置２０側で完了すると、静的解析装置１０の通信部１１は、入力された情報の正誤の確認を行うための送信画面を端末装置２０に表示させる（ステップＳ１１２）。顧客によって、この送信画面での入力内容の確認が行われた後に、解析対象情報の送信指示が出されると、これらの解析対象情報が静的解析装置１０へと送信される。
【００３８】
静的解析装置１０の通信部１１は、顧客の端末装置２０から正常に解析対象情報を受信したことを確認すると、この受信した解析対象情報に対して、ソースコード静的解析の依頼を受け付けたことを示す受付番号、ユーザＩＤ、プロジェクトナンバなどのソースコードを管理するための登録情報を付与する。そして、解析対象に付与された登録情報を含む解析対象情報が静的管理装置の解析情報データベース１４などによって保管されたことを示す内容の画面を、端末装置２０に送信して表示させ（ステップＳ１１３）、解析対象情報の登録処理が終了する。
【００３９】
一方、ステップＳ１０２において、解析対象のソースコードの静的解析の実施が初めてではなく、以前に静的解析実施の実績がある場合（ステップＳ１０２でＮｏの場合）には、その旨が静的解析装置１０へと送信され、静的解析装置１０の通信部１１は、通信情報データベース１２に格納されている登録情報入力画面を顧客の端末装置２０に送信して表示させる（ステップＳ１０８）。登録情報入力画面は、対象となるソースコードの静的解析の初回依頼時に静的解析装置１０から上述したステップＳ１１３で発行された受付番号やユーザＩＤ、プロジェクトナンバなどの登録情報を、顧客に対して入力させるように構成されている。顧客は、この登録情報入力画面の所定の場所に、ユーザＩＤやプロジェクトナンバなどソースコードを識別するための情報を入力する。その後、上述したステップＳ１０９〜Ｓ１１３の処理によって、解析対象情報の登録処理が実行される。
【００４０】
図５は、静的解析装置における静的解析の処理手順を示すフローチャートである。まず、静的解析装置１０の通信部１１によって顧客の端末装置２０から受信したコンパイル時手続情報とソースコードを保存する（ステップＳ２０１）。
【００４１】
つぎに、通信部１１は、解析を依頼する顧客の端末装置２０から受信したソースコードは過去に解析実績のあるソースコードであるか否かを判断する（ステップＳ２０２）。過去に解析実績のあるソースコードであるか否かは、ソースコードに関する登録情報を参照することによって行う。過去に解析実績のあるソースコードである場合（ステップＳ２０２でＹｅｓの場合）には、構成／変更管理部１５は、ソースコードの登録情報を参照して、該登録情報と関連付けされて格納されているシステムインクルードファイルを解析情報データベース１４から取り出す（ステップＳ２０３）。一方、過去に解析実績のあるソースコードでない場合（ステップＳ２０２でＮｏの場合）には、構成／変更管理部１５は、顧客の端末装置２０から取得したシステムインクルードファイルを解析情報データベース１４に登録する（ステップＳ２０４）。
【００４２】
ステップＳ２０３で解析情報データベース１４から登録済みシステムインクルードファイルを取り出した後に、または、ステップＳ２０４で顧客の端末装置２０から取得したシステムインクルードファイルを解析情報データベース１４に登録した後に、解析を依頼する顧客の端末装置２０から受信したソースコードが、過去に同種の開発環境コンパイラでの解析実績があるか否かを判断する（ステップＳ２０５）。過去に同種の開発環境コンパイラでの解析実績があるソースコードである場合（ステップＳ２０５でＹｅｓの場合）には、構成／変更管理部１５は、解析情報データベース１４からそのソースコードの開発環境コンパイラと合致する登録済みの開発環境コンパイラの独自設定を取り出す（ステップＳ２０６）。一方、過去に同種の開発環境コンパイラでの解析実績が無いソースコードである場合（ステップＳ２０５でＮｏの場合）には、構成／変更管理部１５は、顧客の端末装置２０から取得した開発環境コンパイラの独自設定を解析情報データベース１４に登録する（ステップＳ２０７）。
【００４３】
ステップＳ２０６で解析情報データベース１４から登録済みの開発環境コンパイラの独自設定を取り出した後に、または、ステップＳ２０７で顧客の端末装置２０から取得した開発環境コンパイラの独自設定を解析情報データベース１４に登録した後に、ソフトウェア静的解析部１３は、開発環境コンパイラ、システムインクルードファイル、コンパイル時手続情報、およびソースコードを含む登録情報を用いて、ソースコードの静的解析を行う（ステップＳ２０８）。そして、このソフトウェア静的解析部１３によって出力されたソースコードの解析結果、具体的には、警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書およびソースコード修正提案が、一時的に静的解析装置１０内に記憶される。
【００４４】
つぎに、構成／変更管理部１５は、解析情報データベース１４に過去の解析データが存在するか否かを判断する（ステップＳ２０９）。この過去の解析結果が存在するか否かの判断は、ユーザＩＤやプロジェクトナンバなどの登録情報を用いて行う。ここで、解析情報データベース１４に過去の解析結果が存在する場合（ステップＳ２０９でＹｅｓの場合）には、解析履歴生成部１６は、解析情報データベース１４に格納されている過去の解析結果と、ソフトウェア静的解析部１３によって出力された解析結果との比較分析を実施して、その結果である解析履歴成績書を生成する（ステップＳ２１０）。その後、構成／変更管理部１５は、警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書、ソースコード修正提案および解析履歴成績書を解析情報データベース１４に登録して（ステップＳ２１１）、処理が終了する。
【００４５】
一方、ステップＳ２０９で、解析情報データベース１４に過去の解析データが存在しない場合（ステップＳ２０９でＮｏの場合）には、ソフトウェア静的解析部１３によって出力された警告が埋め込まれたソースコード、表計算アプリケーション用集計ファイル、解析結果成績書およびソースコード修正提案を含む解析結果を、解析情報データベース１４に登録して（ステップＳ２１２）、処理が終了する。
【００４６】
図６は、ソースコードの静的解析結果を顧客に表示する処理手順を示すフローチャートである。まず、ソースコードの静的解析結果を取得したい顧客の端末装置２０から静的解析装置１０にアクセスされると、静的解析装置１０の通信部１１は、通信情報データベース１２に格納されている登録情報入力画面を顧客の端末装置２０に送信する（ステップＳ３０１）。顧客は、この登録情報入力画面の所定の場所に、静的解析の結果を取得したいソースコードについての受付番号、ユーザＩＤ、プロジェクトナンバなどを含む登録情報を入力する。
【００４７】
顧客によって入力された登録情報入力画面の内容が、顧客の端末装置２０から静的解析装置１０へ送信されると、静的解析装置１０の通信部１１は、登録情報入力画面に入力された内容と通信情報データベース１２に格納されている登録情報の内容とを比較することによって、顧客が正しくソースコード静的解析を依頼した顧客であるか否かを判断する（ステップＳ３０２）。ここで、入力内容に誤りがある場合（ステップＳ３０２でＮｏの場合）には、静的解析装置１０の通信部１１は、エラー画面を通信情報データベースから顧客の端末装置２０に送信して表示させ（ステップＳ３０３）、処理が終了する。
【００４８】
一方、ステップＳ３０２で、静的解析装置１０の通信部１１によって、顧客が正しくソースコード静的解析を依頼した顧客であると判断された場合（ステップＳ３０２でＹｅｓの場合）には、静的解析装置１０の通信部１１は、ソフトウェア静的解析部１３によって実施されたソースコードの解析結果成績書、表計算アプリケーション用集計ファイル、警告が埋め込まれたソースコード、ソースコード修正提案を含む解析結果が表示された表示画面、およびこれらのファイルをダウンロードするためのダウンロード画面を、顧客の端末装置２０に送信して表示させる（ステップＳ３０４）。その後、構成／変更管理部１５によって解析情報データベース１４で管理されている過去の静的解析の解析結果に、現在顧客が依頼しているソースコードの解析結果についての以前の版（以下、過去の解析結果という）が存在するか否かを判断する（ステップＳ３０５）。この過去の解析結果が存在するか否かの判断は、ステップＳ３０１で入力された登録情報を用いて、解析情報データベース１４内の解析結果を検索することによって行うことができる。
【００４９】
ステップＳ３０５で、過去の解析データが存在しない場合（ステップＳ３０５でＮｏの場合）には、そのまま処理が終了する。一方、ステップＳ３０５で、過去の解析データが存在する場合（ステップＳ３０５でＹｅｓの場合）には、解析履歴生成部１６によって生成され、解析情報データベース１４に格納されている解析履歴成績書が、通信部１１によって顧客の端末装置２０へ送信され、表示される（ステップＳ３０６）。そして、処理が終了する。
【００５０】
この実施の形態１によれば、ソースコードを作成する端末装置２０とソースコード静的解析を実行する静的解析装置１０とが、ネットワーク３０で接続されるように構成し、静的解析装置１０と端末装置２０との間でソースコード静的解析を実行するための情報を電子的に、より具体的にはＷｅｂブラウザを用いて、受付および提示するように構成したので、複数のプロジェクトで作成されたソースコードを１拠点で集中的に静的解析を実行することができるという効果を有する。また、１拠点で集中的に静的解析を実行することができるので、静的解析装置１０には静的解析に必要な情報やノウハウが集積され、この集積されたノウハウを使用することで、顧客が静的解析に関する多くの知識を必要とすることなく、ソースコードの静的解析を実行することができる。その結果、解析の実行に際して、詳細な設定やノウハウを必要としないでソースコード静的解析を実行しても、設定ミスやノウハウの不足を原因とした解析結果の警告を大量に発生させる問題や、解析自体が失敗するといった問題点を回避することができる。
【００５１】
さらに、１拠点で集中的に静的解析を実行することができるので、プロジェクトごとにソースコード静的解析支援システムを構築する必要がなくなる。すなわち、複数のプロジェクトで共通して１つのソースコード静的解析支援システムを運用するので、プロジェクトの数が多くなればなるほど、プロジェクト当たりのソースコード静的解析支援システムの維持コストを低減することができるという効果も有する。さらにまた、この発明によるソースコード静的解析支援システムでは、静的解析を行うための人員を必要とすることがなく、プロジェクトの一員が顧客としてソースコード静的解析支援システムを使用するので、ソースコードの内容が静的解析を行う解析担当者の目に触れることもない。さらにまた、複数のプロジェクトが同時に静的解析を行うことは稀であり、システム利用の繁閑の差がなく、無駄のないソースコード静的解析支援システムの運用を行うことができるという効果を有する。
【００５２】
さらにまた、解析結果が解析情報データベース１４に保管されるため、大量の解析結果データと自らのソースコードの解析結果を比較することで、より正確で定量的なソースコードの品質を測定することが可能となる。そして、時系列的な解析結果の分析によって、ソースコードの品質の維持管理に役立てることができる。
【００５３】
実施の形態２．
上述した実施の形態１では、顧客の端末装置２０と静的解析装置１０との間の情報のやり取りを、ＨＴＴＰなどを利用してＷｅｂブラウザで行う場合を示したが、この実施の形態２では、顧客の端末装置２０と静的解析装置１０との間の情報のやり取りを、さらに電子メールによっても行うことができる場合について説明する。なお、図１には示されていないが、端末装置２０と静的解析装置１０との間で電子メールの送受信を行うために、ＤＮＳサーバやメールサーバがネットワーク上に存在している。
【００５４】
この実施の形態２のソースコード静的解析支援システムおよび静的解析装置の構成は、図１に示した構成と同じである。ただし、実施の形態１の図１の静的解析装置１０において、通信部１１は、ソースコード静的解析の実施に必要な情報やソースコード静的解析の結果を、電子メールを用いても端末装置２０との間で送受信することができる機能を有し、通信情報データベース１２には、ソースコード静的解析を依頼した端末装置２０のメールアドレスが、ソースコードに関する解析対象情報に関連付けして格納されるようにしている。
【００５５】
つぎに、この実施の形態２のソースコード静的解析支援システムの動作処理手順について、図７と図８を参照しながら説明する。ただし、静的解析装置１０における静的解析の処理手順は、実施の形態１の図５に示されるフローチャートと同じであるので、その説明は省略する。
【００５６】
図７は、顧客が静的解析装置にソースコードの静的解析を行う際の電子メールによる受付の処理手順を示すフローチャートである。なお、以下の説明では、顧客は、実施の形態１で説明したように、静的解析装置１０にアクセスして、その解析情報データベース１４内の解析対象情報を閲覧しながら、電子メールでの静的解析の依頼書を作成しているものとする。
【００５７】
まず、解析対象となるソースコードのソースコード静的解析が初めてである場合（ステップＳ４０１でＹｅｓの場合）には、顧客は、静的解析装置１０にアクセスして、過去に解析実績のある開発環境情報（開発環境コンパイラ）の一覧画面を表示部に表示させながら、この中に解析対象となるソースコードと同一の開発環境コンパイラとなるものが存在するか否かを判断する（ステップＳ４０２）。解析対象となるソースコードと同一の開発環境コンパイラとなるものが存在する場合（ステップＳ４０２でＹｅｓの場合）には、その開発環境コンパイラを識別する識別番号などを電子メールの本文に記述（入力）する（ステップＳ４０３）。このとき、静的解析装置１０側での処理を効率化するために、記述した内容が一覧画面の中から開発環境コンパイラを選択したものであることを示す所定のキーワード、たとえば「開発環境コンパイラ（解析実績あり）：」などに続けて、上記識別番号などを記述する。このように電子メール本文への記述方法を規定することによって、静的解析装置１０の通信部１１は、キーワードに続く文字列が、開発環境コンパイラに関する設定内容であることを認識することが可能となる。
【００５８】
一方、解析対象となるソースコードと同一の開発環境コンパイラとなるものが一覧画面に存在しない場合（ステップＳ４０２でＮｏの場合）には、解析対象となるソースコードの静的解析に必要な開発環境コンパイラの独自設定を電子メール本文に記述する（ステップＳ４０４）。このとき、静的解析装置１０側での処理を効率化するために、記述した内容が開発環境コンパイラの独自設定であることを示す所定のキーワード、たとえば「開発環境コンパイラ（解析実績なし）：」に続けて、その内容を記述する。つぎに、開発環境コンパイラが持っている独自のシステムインクルードファイルを電子メールに添付する（ステップＳ４０５）。このとき、電子メールに添付されるシステムインクルードファイル群は圧縮されていてもよい。
【００５９】
一方、最初の段階で解析対象のソースコードの静的解析が初めてでない場合（ステップＳ４０１でＮｏの場合）には、実施の形態１の図３のステップＳ１１３で示されるように、解析対象のソースコードに対して受付番号、ユーザＩＤ、プロジェクトナンバを含む登録情報が既に発行されているので、これらの受付番号、ユーザＩＤ、プロジェクトナンバなどの解析対象であるソースコードと顧客を識別するための情報を電子メールの本文に記述する（ステップＳ４０６）。このとき、静的解析装置１０側での処理を効率化するために、記述した内容がソースコードと顧客を識別するための情報であることを示す所定のキーワードに続けて、上記ソースコードと顧客を識別するための情報を記述する。たとえば、「ユーザＩＤ：」というキーワードの後にユーザＩＤを記述し、「プロジェクトナンバ：」というキーワードの後にプロジェクトナンバを記述する。
【００６０】
ステップＳ４０３での過去の解析実績から同一の開発環境コンパイラを選択するための識別情報などを電子メール本文に記述後に、ステップＳ４０５での独自のシステムインクルードファイルを電子メールに添付した後に、または、ステップＳ４０６で電子メール本文にソースコードと顧客を識別するための情報を記述した後に、ｍａｋｅｆｉｌｅなどのコンパイル時手続情報が格納されたファイルを電子メールに添付する（ステップＳ４０７）。なお、コンパイル時手続情報を電子メール本文に記述することが可能な場合には、本文に記述してもよい。なお、この場合には、静的解析装置１０側での処理を効率化するために、記述した内容がコンパイル時手続情報であることを示す所定のキーワード、たとえば「コンパイル時手続情報：」に続けて、コンパイル時手続情報を記述する。
【００６１】
つぎに、この発明にかかるソースコード静的解析支援システムを運用する際に定められる所定の書式にしたがって、電子メールの表題部および本文にソースコードの解析時における設定を記述する（ステップＳ４０８）。本文に記述する設定は、顧客が付加的に設定可能なもの、たとえば、開発環境コンパイラの種類によって特別に指定しなければならないものなどである。なお、表題部に記述する場合には、ソースコードの静的解析の依頼であることがわかるように、所定のキーワード、たとえば「ソースコード解析依頼書」などを記述する。また、本文に記述する場合には、静的解析装置１０側での処理を効率化するために、記述した内容がソースコードの解析時における設定であることを示す所定のキーワード、たとえば「付加設定：」に続けて、ソースコードの解析時における設定を記述する。
【００６２】
つぎに、電子メールに解析対象であるソースコードを添付する（ステップＳ４０９）。そして、電子メール本文に記述された内容や添付されたファイルの確認が行われた後に、静的解析装置１０に設定されたＩＰアドレスを宛先として、電子メールが送信され（ステップＳ４１０）、処理が終了する。
【００６３】
なお、静的解析装置１０の通信部１１では、上述した書式の電子メールを受信すると、本文中に記述されている内容については、所定のキーワードを基に判断を行い、開発環境情報（開発環境コンパイラ）、コンパイル時手続情報、ユーザＩＤ、プロジェクトＩＤなどの情報を抽出する。
【００６４】
図８は、ソースコードの静的解析結果を電子メールで顧客に送信する処理手順を示すフローチャートである。まず、静的解析装置１０のソフトウェア静的解析部１３によって静的解析の結果が出力されると、通信部１１は、警告が埋め込まれた解析結果ソースコード、表計算アプリケーション用集計ファイル、解析結果成績書、およびソースコード修正提案の各ファイルを電子メールに添付する（ステップＳ５０１）。
【００６５】
つぎに、静的解析装置１０の構成／変更管理部１５は、過去の解析データが解析情報データベース１４に存在するか否かを判断する（ステップＳ５０２）。過去の解析データがある場合（ステップＳ５０２でＹｅｓの場合）には、通信部１１は、解析履歴生成部１６によって生成され、解析情報データベース１４に格納されている解析結果履歴成績書も電子メールに添付する（ステップＳ５０３）。その後、またはステップＳ５０２で過去の解析データがない場合（ステップＳ５０２でＮｏの場合）には、静的解析装置１０の通信部１１は生成した電子メールを、解析対象情報に関連付けして格納されたメールアドレスを宛先に設定して、ソースコードの静的解析を依頼した顧客の端末装置２０へと送信し（ステップＳ５０４）、処理が終了する。
【００６６】
なお、端末装置２０は、Ｗｅｂページによって解析対象情報を静的解析装置１０へ送信し、静的解析装置１０から電子メールで解析結果を受け取ったり、逆に電子メールで解析対象情報を静的解析装置１０へ送信し、静的解析装置１０からＷｅｂページで解析結果を受け取ったりすることも可能である。
【００６７】
この実施の形態２によれば、電子メールを使用して、解析対象のソースコードの静的解析を行う際に必要な情報を端末装置２０から静的解析装置１０へ送信し、また、静的解析が行われた結果を静的装置から端末装置２０へ送信することが可能なように構成したので、上述した実施の形態１の効果に加えて、依頼したソースコードの静的解析結果が静的解析装置１０による静的解析の終了後に届けられ、顧客の側から静的解析装置１０へとアクセスする必要がないという効果を有する。
【００６８】
【発明の効果】
以上説明したように、この発明によれば、ソースコード静的解析を実行するための情報を電子的に受付および提示することによって、１拠点にて集中的に静的解析実行環境を構築するように構成したので、ソースコード静的解析支援システムには静的解析に必要な情報やノウハウが集積され、このノウハウを利用することで、解析の実行に際して詳細な設定やノウハウを必要としないでソースコード静的解析を実行し設定ミスやノウハウの不足を原因とした解析結果の警告を大量に発生させる問題や、解析自体が失敗するといった問題を回避することができ、ソフトウェアの品質の向上に役立てることができる。
【図面の簡単な説明】
【図１】この発明によるソースコード静的解析支援システムの構成を模式的に示すブロック図である。
【図２】この発明によるソースコード静的解析支援システムを用いてソースコードの静的解析を初回に行う場合の処理の流れを模式的に示す図である。
【図３】この発明によるソースコード静的解析支援システムを用いてソースコードの静的解析を２回目以降に行う場合の処理の流れを模式的に示す図である。
【図４】この発明にかかるソースコード静的解析支援システムの解析対象情報を受け付ける処理手順の実施の形態１を示すフローチャートである。
【図５】この発明にかかる静的解析装置における静的解析の処理手順を示すフローチャートである。
【図６】この発明にかかるソースコード静的解析支援システムの解析結果を顧客に表示する処理手順の実施の形態１を示すフローチャートである。
【図７】この発明にかかるソースコード静的解析支援システムの解析対象情報を受け付ける処理手順の実施の形態２を示すフローチャートである。
【図８】この発明にかかるソースコード静的解析支援システムの解析結果を顧客に送信する処理手順の実施の形態２を示すフローチャートである。
【符号の説明】
１０  静的解析装置、１１  通信部、１２  通信情報データベース、１３  ソフトウェア静的解析部、１４  解析情報データベース、１５  構成／変更管理部、１６  解析履歴生成部、２０  端末装置、３０  ネットワーク。
【図１】
2004240477.tif 000003
【図２】
2004240477.tif 000004
【図３】
2004240477.tif 000005
【図４】
2004240477.tif 000006
【図５】
2004240477.tif 000007
【図６】
2004240477.tif 000008
【図７】
2004240477.tif 000009
【図８】
2004240477.tif 000010