(57)【要約】【課題】クライアントの負荷を抑制し、静的解析の結果を編集中のソースコードに反映することができ、解析ルールの管理が容易な静的解析システムを提供する。【解決手段】複数のソースコードにまたがる静的解析において、静的解析時に必要な全てのソースコードの解析を行うのではなく、事前に静的解析可能なサーバのバージョン管理ツールなどで管理されているコミット済みのソースコードに対して、サーバにおいて事前処理として解析を実施し、実際の解析時には、サーバにおいてこの事前処理の結果に基づいて静的解析を実施する。【選択図】図１
2008225519.tif 000002
【特許請求の範囲】
【請求項１】
サーバ、クライアント間で複数のソースコードの静的解析を行う静的解析システムにおいて、
前記サーバで、複数の前記ソースコードに対して前記静的解析のための所定の事前処理を予め実施し、前記事前処理の解析結果を利用して前記サーバとクライアント間による前記ソースコードの静的解析を実施することを特徴とする静的解析システム。
【請求項２】
前記サーバは、前記クライアントからソースコードが送付される毎に、
送付された前記ソースコードに対して前記事前処理による解析を行い、前記事前処理による解析結果に基づいて行ったソースコード解析の解析結果を前記クライアントに通知することを特徴とする請求項１に記載の静的解析システム。
【請求項３】
前記事前処理による解析によって、静的解析でルール違反となる処理を検出して前記解析結果に含めることを特徴とする請求項２に記載の静的解析システム。
【請求項４】
前記サーバは、複数のソースコードに跨る静的解析を行う場合に、前記事前処理による解析結果に基づいて、ソースコードの静的解析を行うことを特徴とする請求項２又は請求項３に記載の静的解析システム。
【請求項５】
前記解析結果及び前記ソースコードに基づいて、ソースコード編集の進捗状況を示す進捗情報を生成してユーザ毎に登録する手段を備えることを特徴とする請求項２から請求項４のいずれか１項に記載の静的解析システム。
【請求項６】
前記進捗情報は、ソースコードの記述量、バグの数、更新頻度、更新時間のいずれか１以上を含むことを特徴とする請求項５に記載の静的解析システム。
【請求項７】
クライアントとの間で複数のソースコードの静的解析を行うサーバにおいて、
複数の前記ソースコードに対して前記静的解析のための所定の事前処理を予め実施し、前記事前処理の解析結果を利用して前記クライアントとの間による前記ソースコードの静的解析を実施することを特徴とするサーバ。
【請求項８】
前記クライアントからソースコードが送付される毎に、
送付された前記ソースコードに対して前記事前処理による解析を行い、前記事前処理による解析結果に基づいて行ったソースコード解析の解析結果を前記クライアントに通知することを特徴とする請求項７に記載のサーバ。
【請求項９】
前記事前処理による解析によって、静的解析でルール違反となる処理を検出して前記解析結果に含めることを特徴とする請求項８に記載のサーバ。
【請求項１０】
複数のソースコードに跨る静的解析を行う場合に、前記事前処理による解析結果に基づいて、ソースコードの静的解析を行うことを特徴とする請求項８又は請求項９に記載のサーバ。
【請求項１１】
前記解析結果及び前記ソースコードに基づいて、ソースコード編集の進捗状況を示す進捗情報を生成してユーザ毎に登録する手段を備えることを特徴とする請求項２から請求項４のいずれか１０項に記載のサーバ。
【請求項１２】
前記進捗情報は、ソースコードの記述量、バグの数、更新頻度、更新時間のいずれか１以上を含むことを特徴とする請求項１１に記載のサーバ。
【請求項１３】
サーバ、クライアント間で複数のソースコードの静的解析を行う静的解析システムの解析方法であって、
前記サーバにおいて、
前記クライアントからソースコードが送付される毎に、
送付された前記ソースコードに対して前記静的解析のための所定の事前処理を予め実施し、前記事前処理の解析結果を利用して前記クライアントとの間による前記ソースコードの静的解析を実施し、解析結果を前記クライアントに通知するステップを有することを特徴とする解析方法。
【請求項１４】
前記サーバにおいて、
前記事前処理による解析によって、静的解析でルール違反となる処理を検出して前記解析結果に含めるステップを有することを特徴とする請求項１３に記載の解析方法。
【請求項１５】
前記サーバにおいて、
複数のソースコードに跨る静的解析を行う場合に、前記事前処理による解析結果に基づいて、ソースコードの静的解析を実施するステップを有することを特徴とする請求項１４に記載の解析方法。
【請求項１６】
前記サーバにおいて、
前記解析結果及び前記ソースコードに基づいて、ソースコード編集の進捗状況を示す進捗情報を生成してユーザ毎に登録するステップを有することを特徴とする請求項１４又は請求項１５に記載の解析方法。
【請求項１７】
クライアントとの間で複数のソースコードの静的解析を行うサーバ上で実行されるプログラムであって、
前記サーバに、
前記クライアントからソースコードが送付される毎に、
送付された前記ソースコードに対して前記静的解析のための所定の事前処理を予め実施し、前記事前処理の解析結果を利用して前記クライアントとの間による前記ソースコードの静的解析を実施し、解析結果を前記クライアントに通知する処理を実行させることを特徴とするプログラム。
【請求項１８】
前記サーバに、
前記事前処理による解析によって、静的解析でルール違反となる処理を検出して前記解析結果に含める処理を実行させることを特徴とする請求項１７に記載のプログラム。
【請求項１９】
前記サーバに、
複数のソースコードに跨る静的解析を行う場合に、前記事前処理による解析結果に基づいて、ソースコードの静的解析を実施させることを特徴とする請求項１８に記載のプログラム。
【請求項２０】
前記サーバに、
前記解析結果及び前記ソースコードに基づいて、ソースコード編集の進捗状況を示す進捗情報を生成してユーザ毎に登録する処理を実行させることを特徴とする請求項１８又は請求項１９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードの静的解析を行う静的解析システム、サーバ、静的解析方法及びプログラムに関するものである。
【背景技術】
【０００２】
従来のソースコード静的解析システムの一例が、特許文献１（特開２００４−２４０４７７号公報）に記載されている。従来のソースコード静的解析システムは、特許文献１のようなサーバに静的解析の手段を集約して実施する方式と、各クライアント（開発環境）においてそれぞれ静的解析の手段を有する方式とがある。
【０００３】
サーバに集約する方式では、ルールを一元管理できる点や、クライアントに負荷をかけずに静的解析を実施できる点、静的解析の結果を管理しやすい点、バッチ処理によって定期的に静的解析処理を行えばよいため、より負荷の高い処理を実施可能な点などの利点がある。
【０００４】
一方、各クライアントにおいて静的解析を実施する方式では、編集中のソースコードに対して適宜静的解析を実施でき、開発中のソースコードにその問題箇所を表示することなどができるため、開発者が利用しやすいという利点がある。
【特許文献１】特開２００４−２４０４７７号公報  １５頁、図１
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、従来のソースコード静的解析システムには以下のような問題点があった。
【０００６】
すなわち、サーバで実施する場合には、通常定期的なバッチ処理で実施されるため、クライアントで編集中のソースコードと静的解析実施時のソースコードとに差ができている可能性があるため、クライアントで行っているソースコードの編集とは同期が取れず、静的解析の結果を編集中のソースコードに反映することが困難であるという問題点があった。
【０００７】
また、各クライアントにおいて静的解析を実施する方式には、クライアント毎で適用しているルールの管理がしにくいという問題点や、他の開発者が編集している複数のソースコードに跨るような静的解析を実施すると、負荷が高くて時間がかかり、開発者の作業が遅延するという問題点があった。
【０００８】
（目的）
本発明の目的は、クライアントの負荷を抑制し、静的解析の結果を編集中のソースコードに反映することができ、解析ルールの管理が容易な静的解析システムを提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため本発明は、サーバ、クライアント間で複数のソースコードの静的解析を行う静的解析システムにおいて、前記サーバで、複数の前記ソースコードに対して前記静的解析のための所定の事前処理を予め実施し、前記事前処理の解析結果を利用して前記サーバとクライアント間による前記ソースコードの静的解析を実施することを特徴とする。
【００１０】
（作用）
静的解析のための所定の事前処理を予め実施するため、クライアントが、随時事前処理の解析結果に基づいてソースコードの静的解析を実施することができる。
【００１１】
また、より詳細には、上記課題を解決するため本発明は、複数のソースコードに跨る静的解析において、解析時に必要な全てのソースコードの解析を行うのではなく、事前に静的解析可能なサーバのバージョン管理ツールなどで管理されているコミット済みのソースコードに対して、事前処理として解析を実施することにより、実際の解析時には、この事前処理の結果に基づいて解析を実施することができるため、解析を効率化することができ、高速に解析が行える。このため、サーバで処理を行っても、クライアントでは即時に解析結果を編集中のソースコードに反映することができ、クライアントにおいても解析処理の負荷が軽減でき編集作業に影響を軽減することができる。
【発明の効果】
【００１２】
第１に、高速に複数のソースコードに跨る静的解析ができる。
【００１３】
その理由は、すべてのソースコードに対してその場で処理を行うのではなく、サーバにおいて、事前に登録されたソースコードに対し事前処理を施し、実際のソースコードおよび事前処理の結果に基づいて解析処理を行うため、クライアントにおいて編集中のソースコードに対して、解析結果を即時に反映することが可能となるからである。
【００１４】
第２に、クライアントの負荷を軽減できる。
【００１５】
その理由は、クライアントで同様に複数のソースコードに跨った静的解析を実施する場合には、複数のソースコードを解析する必要があると共に、最新のソースコードをサーバから取得する必要がるため、クライアントに大きな負荷がかかってしまうところ、これに対して本発明は、サーバにおいて、事前に登録されたソースコードに対し事前処理を行うからである。
【００１６】
第３に、サーバの負荷を平準化できる。
【００１７】
その理由は、通常のサーバでの静的解析では、定期的にバッチ処理で解析を実行するため、負荷が偏る傾向にあるが、本発明において、ソースコードの登録時に事前処理を実施する場合に、ソースコードが解析対象として送付されてきたときにそのソースコードを対象にした静的解析を行うことにより、偏った負荷を軽減できるためである。
【発明を実施するための最良の形態】
【００１８】
（第１の実施の形態）
以下、本発明の第１の実施の形態を、図を用いて詳細に説明する。
【００１９】
（第１の実施の形態の構成）
図１は、本実施の形態の構成を示すブロック図である。
【００２０】
図１を参照すると、本実施の形態は、クライアント１００及びサーバ２００を備え、クライアント１００は、クライアント１００で動作するソースコード編集装置１１０を有し、サーバ２００は、サーバ２００で動作するソースコード解析装置２１０，ソースコード解析事前処理装置２２０，ソースコード管理装置２３０，静的解析ルール管理装置２４０を有する。
【００２１】
ソースコード編集装置１１０は、解析結果表示装置１２０，ソースコード送付装置１３０，ソースコード登録装置１４０，ソースコード取得装置１５０を有する。
【００２２】
これら各構成要素は、それぞれ次のような機能を有する。
【００２３】
（クライアント１００）
ソースコード編集装置１１０は、ソースコードを表示，編集，保存及び登録する機能を有する。
【００２４】
解析結果表示装置１２０は、ソースコード解析装置２１０の解析結果をソースコード編集装置１１０上に表示し、ソースコードの該当箇所に結果を結びつける機能を有する。解析結果とソースコードの該当箇所を結びつけるために、解析結果には，摘出したルールおよびその説明，ソースコードの該当箇所の情報が含まれる。
【００２５】
ソースコード送付装置１３０は、ソースコードの解析を行うために、ソースコード解析装置２１０へソースコードを送付するための機能を有する。
【００２６】
ソースコード登録装置１４０は、編集済みのソースコードをソースコード管理装置２３０へ登録するための機能を有する。
【００２７】
ソースコード取得装置１５０は、ソースコード管理装置２３０で管理されているソースコードを取得するための機能を有する．
【００２８】
（サーバ２００）
ソースコード解析装置２１０は、ソースコード送付装置１２０から送付されてきたソースコードを静的解析ルール管理装置２４０で管理されているルールに基づいて解析を行い、複数のソースコードに跨って解析を行う場合には、ソースコード解析事前処理装置２２０で処理されたデータに基づいて解析を実施し、解析結果を、クライアント１００の解析結果表示装置１２０に返却する機能を有する。
【００２９】
ソースコード解析事前処理装置２２０は、ソースコード管理装置２１０で管理されているソースコードを静的解析ルール管理装置２４０で管理されているルールに基づいて解析し、事前処理解析情報（事前処理解析結果）２２２として事前処理解析情報記憶手段２２１に保持する機能を有し、ソースコード解析装置２１０で解析されているソースコードにおいて、複数のソースコードに跨る解析を実施する場合に、対象となるソースコードの解析情報をソースコード解析装置２１０に提供する機能を有する。ソースコードの解析事前処理は、ソースコード管理装置２３０からの新しいソースの登録の通知を持って実施される。
【００３０】
ソースコード管理装置２３０は、各クライアントのソースコード登録装置１４０によって登録されたソースコードをソースコード記憶手段２３１に保存する機能と、新たにソースコードが登録されると、ソースコード解析事前処理装置２２０に対して、新しいソースコードが登録されたことを通知する機能とを有する。
【００３１】
静的解析ルール管理装置２４０は、ソースコード解析装置２１０で解析を行うための解析ルール２４１の管理，編集，保存を実施する機能と、ソースコード解析事前処理装置２２０で解析を行うための複数のソースコードに跨る事前処理ルール（事前処理に必要となる静的解析ルール）２４２の管理，編集，保存を実施する機能とを有する。また、静的解析ルール管理装置２４０は、解析ルール２４１及び静的解析ルール２４２を記憶するルール記憶手段２４３を有する。
【００３２】
ここで、クライアント１００及びサーバ２００のハードウェア構成の説明をする。
【００３３】
図２は、本実施の形態によるクライアント１００及びサーバ２００のハードウェア構成を示すブロック図である。
【００３４】
図２を参照すると、本発明によるクライアント１００及びサーバ２００は、一般的なコンピュータ装置と同様のハードウェア構成によって実現することができ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメインメモリであり、データの作業領域やデータの一時退避領域に用いられる主記憶部１００２、ネットワーク２０００を介してデータの送受信を行う通信制御部１００３、液晶ディスプレイ、プリンタやスピーカ等の提示部１００４、キーボードやマウス等の入力部１００５、周辺機器と接続してデータの送受信を行うインタフェース部１００６、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置である補助記憶部１００７、本情報処理装置の上記各構成要素を相互に接続するシステムバス１００８等を備えている。
【００３５】
本発明によるクライアント１００及びサーバ２００は、その動作を、クライアント１００及びサーバ２００内部にそのような機能を実現するプログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品からなる回路部品を実装してハードウェア的に実現することは勿論として、上記した各構成要素の各機能を提供するプログラムを、コンピュータ処理装置上のＣＰＵ１００１で実行することにより、ソフトウェア的に実現することができる。
【００３６】
すなわち、ＣＰＵ１００１は、補助記憶部１００７に格納されているプログラムを、主記憶部１００２にロードして実行し、クライアント１００及びサーバ２００の動作を制御することにより、上述した各機能をソフトウェア的に実現する。
【００３７】
（第１の実施の形態の動作）
次に、本実施の形態の動作について図３から図６を参照して詳細に説明する。
【００３８】
図３は、本実施の形態による各構成要素間の手順を示すシーケンス図である。
【００３９】
まず、図３を用いて、ソースコード管理装置２３０に登録されたソースコードに対する事前処理の手順について説明する（図３の手順Ａ）。
【００４０】
事前処理は、ソースコード編集装置１１０からソースコード登録装置１４０に対し、ソースコード管理装置２３０へのソースコードの登録を依頼し（手順Ａ１）、ソースコード登録装置１４０によって、ソースコード管理装置２３０にソースコードが登録される（手順Ａ２）。
【００４１】
ソースコード管理装置２３０は、新たなソースコードが登録されると、ソースコード解析事前処理装置２２０に対し、登録されたソースコードを通知する（手順Ａ３）。
【００４２】
ソースコード解析事前処理装置２２０は、事前処理に必要となる静的解析ルールを静的解析ルール管理装置２４０から取得し（手順Ａ４、Ａ５）、登録されたソースコードに対して事前処理を実施する（手順Ａ６）。
【００４３】
図４は、本実施の形態による事前処理を説明する図である。
【００４４】
図４を参照し、例えば、ソースコードＢ、Ｃ、Ｄ、Ｅを対象として事前処理を行った場合について説明する。
【００４５】
この中で、ソースコードＣの関数Ｃ１における前処理１と関数Ｃ２における後処理１、ソースコードＤの関数Ｄ１における前処理２と関数Ｄ３における後処理２は、それぞれ前処理と後処理がペアで行われなければ、静的解析でルール違反となる処理である。
【００４６】
ソースコードＢの関数Ｂ１を呼び出した場合、関数Ｂ１内でソースコードＣの関数Ｃ１、関数Ｃ２が呼び出され、その中でそれぞれ前処理１、後処理１が順に呼び出されるため、この関数Ｂ１の呼び出しでは、ルール違反となるものは検出されない。
【００４７】
次に、関数Ｂ２を呼び出した場合、関数Ｂ２では、関数Ｂ３が呼び出され、関数Ｂ３では、関数Ｄ１、Ｄ２が呼び出される。この関数Ｄ１で、前処理２が呼び出されるが、その対となる後処理２がこの関数Ｂ２では呼び出されていないため、ルールに違反する。ルールに違反する呼び出しがあると、図５及び図６に示すような事前処理解析情報２２２として事前処理解析情報記憶手段２２１に登録される。
【００４８】
本実施の形態では、図５は前処理（前処理１、前処理２など）が違反として検出された場合に登録される事前処理解析情報２２２であり、図６は後処理（後処理１、後処理２など）が違反として検出された場合に登録される事前処理解析情報２２２である。図５及び図６に示す事前処理解析情報２２２は、それぞれ、呼び出し元のクラス（ファイル）、関数、違反した該当ルール、検出された処理に対応する必要処理（または、実施処理）が記録される。
【００４９】
次に、ソースコードの編集を行うための手順について説明する（図３の手順Ｂ）。
【００５０】
ソースコードの編集を行うために、ソースコード編集装置１１０は、ソースコード管理装置２３０からソースコードを取得しソースコードの編集を行う。ソースコードを取得するために、ソースコード編集装置１１０は、ソースコード取得装置１５０に対しソースコードの取得依頼を行い（手順Ｂ１）、ソースコード取得装置１５０は、ソースコード管理装置２３０よりソースコードの取得を行い（手順Ｂ２、Ｂ３）、ソースコードをソースコード編集装置１１０に通知して表示等させる（手順Ｂ４）。このようにして通知されたソースコードをソースコード編集装置１１０において編集を行う（手順Ｂ５）。
【００５１】
最後に、ソースコードの解析を行う方法について説明する（図３の手順Ｃ）。
【００５２】
ソースコードを解析するために、ソースコード編集装置１１０は、ソースコード送付装置１３０に対し、ソースコード解析装置２１０へのソースコード送付を依頼する（手順Ｃ１）。ソースコード送付装置１３０は、依頼されたソースコードをソースコード解析装置２１０に送付する（手順Ｃ２）。ソースコード解析装置２１０は、送付されてきたソースコードの解析ルールを静的解析ルール管理装置２４０から取得し（手順Ｃ３、Ｃ４）、解析を行う（手順Ｃ７）。ソースコード解析装置２１０は、手順Ｃ７において複数のソースに跨って解析しなければならない場合、ソースコード解析事前処理装置２２０から、事前処理された解析結果を取得し（手順Ｃ５、Ｃ６）、その結果に基づいて解析を行う（手順Ｃ７）。
【００５３】
この解析では、たとえば図４に示すようなソースコードＡを解析対象とした場合、まず関数Ａ１では、ソースコードＢの関数Ｂ１、Ｂ２、ソースコードＤの関数Ｄ３への呼び出しが行われる。ここで、該当する事前処理結果を取得し、図５より関数Ｂ２では後処理２が必要であり、該当する処理が関数Ｄ３で呼び出されているため、結果として相殺され、ルール違反とはならず、ルール違反となるものは検出されない。
【００５４】
次に関数Ａ２では、関数Ｄ１、Ｅ１、Ｄ３が呼び出される。事前処理結果を見ると、Ｄ１では後処理２が必要であり、Ｄ３で後処理２が実施されているため、相殺されてルール違反とはならず、ルール違反となるものは検出されない。
【００５５】
さらに、関数Ａ３では、関数Ｄ１、Ｅ２、Ｅ３が呼び出されている。事前処理結果を見ると、Ｄ１では、後処理２が必要であるが、それ以外では事前処理結果に記録されておらず、この処理がルール違反として検出されることになる。
【００５６】
最後に、関数Ａ４では、他の関数の呼び出しが行われていないため、事前処理結果が必要とはならないが、前処理３だけが行われており、対となる後処理３が行われていないため、ルール違反として検出されることになる。
【００５７】
このようにして、解析対象のソースコードの解析が行われる。
【００５８】
また、ソースコード解析装置２１０で解析された結果は、解析結果表示装置１２０へ結果が返却され（手順Ｃ８）、解析結果表示装置１２０は、ソースコード編集画面の該当箇所に、静的解析ルールの違反等の解析結果を表示する（手順Ｃ９）。
【００５９】
（第１の実施の形態の効果）
本実施の形態よれば、以下の効果を達成する。
【００６０】
第１に、高速に複数のソースコードに跨る静的解析ができる。
【００６１】
その理由は、すべてのソースコードに対してその場で処理を行うのではなく、サーバにおいて、事前に登録されたソースコードに対し事前処理を施し、実際のソースコードおよび事前処理の結果に基づいて解析処理を行うため、クライアントにおいて編集中のソースコードに対して、解析結果を即時に反映することが可能となるからである。
【００６２】
第２に、クライアントの負荷を軽減できる。
【００６３】
その理由は、クライアントで同様に複数のソースコードに跨った静的解析を実施する場合には、複数のソースコードを解析する必要があると共に、最新のソースコードをサーバから取得する必要がるため、クライアントに大きな負荷がかかってしまうところ、これに対して本実施の形態は、サーバにおいて、事前に登録されたソースコードに対し事前処理を行うからである。
【００６４】
第３に、サーバの負荷を平準化できることにある。
【００６５】
その理由は、通常のサーバでの静的解析では、定期的にバッチ処理で解析を実行するため、負荷が偏る傾向にあるが、本実施の形態において、ソースコードの登録時に事前処理を実施する場合に、ソースコードが解析対象として送付されてきたときにそのソースコードを対象にした静的解析を行うことにより、偏った負荷を軽減できるためである。
【００６６】
（第２の実施の形態）
以下、本発明の第２の実施の形態を、図を用いて詳細に説明する。
【００６７】
（第２の実施の形態の構成）
図７は、本実施の形態の構成を示すブロック図である。
図７を参照すると、本実施の形態は、サーバ２００が、開発者進捗管理装置２５０を有する点で第１の実施の形態と相違する。従って、以下、第１の実施の形態と相違する点を中心に説明する。
【００６８】
（クライアント１００）
本実施の形態によるクライアント１００は、第１の実施の形態によるクライアント１００と同様であるので説明を省略する。
【００６９】
（サーバ２００）
本実施の形態によるソースコード解析装置２１０は、第１の実施の形態によるソースコード解析装置２１０が有する機能と、解析結果およびソースコードを開発者進捗管理装置２５０に送付する機能とを有する。
【００７０】
管理者進捗管理装置２５０は、ソースコード解析装置２１０から解析結果、ソースコードを受け取る機能と、開発者ごとのソースコードの記述量、バグの数、更新頻度、更新時間などを管理する機能とを有する。管理者進捗管理装置２５０は、ソースコード解析装置２１０から取得した解析結果及びソースコードに基づいて生成した、ソースコード編集の進捗状況を示す進捗情報２５２として、開発者ごとのソースコードの記述量、バグの数、更新頻度、更新時間を記憶する進捗情報記憶手段２５１を有する。
【００７１】
サーバ２００のその他の構成要素は、第１の実施の形態によるサーバ２００と同様であるので説明を省略する。
【００７２】
（第２の実施の形態の動作）
次に、本実施の形態の動作について図８を参照して詳細に説明する。
【００７３】
図８は、本実施の形態による各構成要素間の手順を示すシーケンス図である。
【００７４】
本実施の形態による手順Ａ及び手順Ｂは、第１の実施の形態による手順Ａ及び手順Ｂと同様であるため説明を省略する。
【００７５】
手順Ｃ９において、解析結果表示装置１２０がソースコード編集画面の該当箇所に静的解析ルールの違反等の解析結果を表示する際に、開発者進捗管理装置２５０は、ソースコード解析装置２１０から送付された解析結果およびソースコードを受け取り、開発者ごとのソースコードの記述量、バグの数、更新頻度を示す進捗情報として登録する（手順Ｃ１０）。なお、本実施の形態による手順Ｃ１０は、手順Ｃ８、Ｃ９の手順とは独立して実行されるため、手順７以降であれば実行順序は制限されない。
【００７６】
（第２の実施の形態の効果）
本実施の形態よれば、開発者進捗管理装置２５０が、解析結果およびソースコードに基づいて生成した、開発者ごとのソースコードの記述量、バグの数、更新頻度を示す進捗情報を登録して管理するため、開発者によって静的解析が実施されるたびに開発者の進捗情報を管理することができる。
【００７７】
以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【産業上の利用可能性】
【００７８】
ソフトウェア開発におけるソースコードやデータの検証、またそれらの結果の管理といった用途に本発明を適用できる。
【図面の簡単な説明】
【００７９】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】第１の実施の形態によるハンドスキャナの実施方法を示した説明図３である。
【図３】第１の実施の形態による各構成要素間の手順を示すシーケンス図である。
【図４】第１の実施の形態による事前処理を説明する図である。
【図５】第１の実施の形態による事前処理解析情報記憶手段２２１に登録される事前処理解析情報２２２の例を示す図である。
【図６】第１の実施の形態による事前処理解析情報記憶手段２２１に登録される事前処理解析情報２２２の例を示す図である。
【図７】本発明の第２の実施の形態の構成を示すブロック図である。
【図８】第２の実施の形態による各構成要素間の手順を示すシーケンス図である。
【符号の説明】
【００８０】
１００：クライアント
１１０：ソースコード編集装置
１２０：解析結果表示装置
１３０：ソースコード送付装置
１４０：ソースコード登録装置
１５０：ソースコード取得装置
２００：サーバ
２１０：ソースコード解析装置
２２０：ソースコード解析事前処理装置
２２１：事前処理解析情報記憶手段
２２２：事前処理解析情報（事前処理解析結果）
２３０：ソースコード管理装置
２３１：ソースコード記憶手段
２４０：静的解析ルール管理装置
２４１：解析ルール
２４２：事前処理ルール（事前処理に必要となる静的解析ルール）
２４３：ルール記憶手段
２５０：管理者進捗管理装置
２５１：進捗情報記憶手段
２５２：進捗情報
１００１：ＣＰＵ
１００２：主記憶部
１００３：通信制御部
１００４：提示部
１００５：入力部
１００６：インタフェース部
１００７：補助記憶部
１００８：システムバス
２０００：ネットワーク
【図１】
2008225519.tif 000003
【図２】
2008225519.tif 000004
【図３】
2008225519.tif 000005
【図４】
2008225519.tif 000006
【図５】
2008225519.tif 000007
【図６】
2008225519.tif 000008
【図７】
2008225519.tif 000009
【図８】
2008225519.tif 000010