(57)【特許請求の範囲】
【請求項１】
開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、
前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、
開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムであって、
前記制御手段が、
前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段と、
前記対応方針に基づいて、前記警告の評価情報を作成する手段と、
前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段と、
前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段と
を備えたことを特徴とする解析結果評価システム。
【請求項２】
前記解析結果に含まれる警告の警告種別について、前記フィードバック情報記憶手段から、他の開発システムにおける対応方針を取得し、前記取得した対応方針を含めた評価情報を作成し、
前記評価情報を解析結果評価レポートに含めることを特徴とする請求項１に記載の解析結果評価システム。
【請求項３】
前記解析結果に含まれる警告の警告種別について、前記開発システムにおける対応方針として、前記フィードバック情報記憶手段に修正しない旨の対応方針が記録されている場合には、前記解析結果評価レポートに前記警告を含めないことを特徴とする請求項１又は２に記載の解析結果評価システム。
【請求項４】
警告の警告種別に対して、フィルタリング条件を記録したフィルタ情報記憶手段を更に備え、
前記制御手段が、前記フィルタ情報記憶手段に記録された前記フィルタリング条件を満たす警告については、前記解析結果評価レポートに前記警告を含めないことを特徴とする請求項１〜３のいずれか一つに記載の解析結果評価システム。
【請求項５】
前記制御手段が、前記解析結果において、同じ警告種別の警告の個数を算出し、
前記個数に基づいて前記警告種別に対する評価結果を変更することを特徴とする請求項１〜４のいずれか一つに記載の解析結果評価システム。
【請求項６】
開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、
前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、
開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析する方法であって、
前記制御手段が、
前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する段階と、
前記対応方針に基づいて、前記警告の評価情報を作成する段階と、
前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する段階と、
前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する段階と
を実行することを特徴とする解析結果評価方法。
【請求項７】
開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、
前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、
開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析するためのプログラムであって、
前記制御手段を、
前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段、
前記対応方針に基づいて、前記警告の評価情報を作成する手段、
前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段、
前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段
として機能させることを特徴とする解析結果評価プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードの静的解析において出力された警告を評価するための解析結果評価システム、解析結果評価方法及び解析結果評価プログラムに関する。
【背景技術】
【０００２】
システム開発において作成されたソースコードにおいては、バグを除去するために、プログラムを実際に実行させて解析を行なう動的解析が行なわれている。更に、潜在的なバグ、コーディング規約違反や拡張性といった保守性を担保するために、プログラムを動作させずに、ソースやクラスファイルを構造的に解析して、問題がないかどうかを確認する静的解析も行なわれる。
【０００３】
例えば、ソースコードの静的解析作業を支援して、その解析手順を効率化するためのソースコード静的解析支援システムも検討されている（例えば、特許文献１を参照。）。この文献に記載されたシステムにおいては、ソースコードの静的解析を依頼する端末装置から、ソースコードの静的解析の実施に必要な解析対象情報を受信する。そして、端末装置から受信した解析対象情報を用いてソースコードの静的解析を行ない、その解析結果を端末装置へ送信する。
【０００４】
更に、ルールの重要度に応じて、静的解析を行なうシステムも検討されている（例えば、特許文献２を参照。）。この文献に記載されたシステムにおいては、複数のフェーズ段階でソースプログラムを編集しながら進められるプログラム開発において、各フェーズでの修正によって解消された指摘の件数を求め、より後のフェーズのプログラム修正によって改善されたルールの重要度を上げる。そして、静的解析により求めたコーディングルールを満たしていない箇所を、そのコーディングルールの重要度とともに表示する。
【０００５】
更に、静的解析済みのソースプログラムに対して追加又は修正を行なったプログラムを、再度静的解析を行なう場合もある。この場合、既に解析を行なっているソースプログラムに対する警告メッセージは出力装置に表示させず、追加又は修正したソースプログラムに対する警告メッセージを出力装置に表示させるシステムも検討されている（例えば、特許文献３を参照。）。この文献に記載されたシステムにおいては、前回ソースプログラムの解析を行なったソースプログラムバージョンとその際使用したコーディング規約バージョン及び前々回ソースプログラムの解析を行なったソースプログラムバージョンを保持する。更に、最新のコーディング規約の中で今回対象のコーディング規約を抽出し、コーディング規約を使用してソースプログラムの解析を行なう。そして、解析結果を使用して、検出した警告メッセージの制御を行なう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２４０４７７号公報（第１頁、図１）
【特許文献２】特開２０１０−１１７８９７号公報（第１頁、図１）
【特許文献３】特開２０１１−１１３２９６号公報（第１頁、図１）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
この静的解析において、予め定められたルールと異なる場合には、すべて警告対象となる。しかしながら、静的解析に使用するコーディング基準に対するルールには、バグに直結するものや、保守性の向上のためにコーディングスタイルを統一するものなど、様々な種類がある。特に、ソースコードが利用されるシステムや、そのソースコードの開発を担当する部署によっては、コーディング手法（コーディング規約）が異なる場合もある。また、業務仕様上、問題がない場合や、システム設計の違いにより、コーディング規約が異なる場合もある。このような相違から生ずる警告においては、プログラム実行において実質的に影響がない。従って、すべての警告について対応を検討したり、一律に修正を行なっていたりしたのでは、迅速かつ効率的なシステム開発を行なうことが困難となる。
更に、開発担当者や開発部署において、これまでに経験したことがない種類の警告を受けた場合には、この警告に対する対応についての判断を迷うこともある。
【０００８】
本発明は、上記問題点を解決するためになされたものであり、その目的は、ソースコードの静的解析において出力された警告について、開発部署において効率的に対応できる解析結果評価レポートを作成するための解析結果評価システム、解析結果評価方法及び解析結果評価プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記問題点を解決するために、請求項１に記載の発明は、開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムであって、前記制御手段が、前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段と、前記対応方針に基づいて、前記警告の評価情報を作成する手段と、前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段と、前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段とを備えたことを要旨とする。
【００１０】
請求項２に記載の発明は、請求項１に記載の解析結果評価システムにおいて、前記解析結果に含まれる警告の警告種別について、前記フィードバック情報記憶手段から、他の開発システムにおける対応方針を取得し、前記取得した対応方針を含めた評価情報を作成し、前記評価情報を解析結果評価レポートに含めることを要旨とする。
【００１１】
請求項３に記載の発明は、請求項１又は２に記載の解析結果評価システムにおいて、前記解析結果に含まれる警告の警告種別について、前記開発システムにおける対応方針として、前記フィードバック情報記憶手段に修正しない旨の対応方針が記録されている場合には、前記解析結果評価レポートに前記警告を含めないことを要旨とする。
【００１２】
請求項４に記載の発明は、請求項１〜３のいずれか一つに記載の解析結果評価システムにおいて、警告の警告種別に対して、フィルタリング条件を記録したフィルタ情報記憶手段を更に備え、前記制御手段が、前記フィルタ情報記憶手段に記録された前記フィルタリング条件を満たす警告については、前記解析結果評価レポートに前記警告を含めないことを要旨とする。
【００１３】
請求項５に記載の発明は、請求項１〜４のいずれか一つに記載の解析結果評価システムにおいて、前記制御手段が、前記解析結果において、同じ警告種別の警告の個数を算出し、前記個数に基づいて前記警告種別に対する評価結果を変更することを要旨とする。
【００１４】
請求項６に記載の発明は、開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析する方法であって、前記制御手段が、前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する段階と、前記対応方針に基づいて、前記警告の評価情報を作成する段階と、前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する段階と、前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する段階とを実行することを要旨とする。
【００１５】
請求項７に記載の発明は、開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析するためのプログラムであって、前記制御手段を、前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段、前記対応方針に基づいて、前記警告の評価情報を作成する手段、前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段、前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段として機能させることを要旨とする。
【００１６】
（作用）
請求項１、６、７に記載の発明によれば、制御手段が、解析結果情報記憶手段に記録された解析結果に含まれる警告の警告種別を特定し、フィードバック情報記憶手段から、警告種別について、開発システムにおける対応方針を取得する。次に、対応方針に基づいて、警告の評価情報を作成する。そして、評価情報を含めた解析結果評価レポートを作成し、クライアント端末に提供する。これにより、フィードバックによって取得した対応方針を考慮して、解析結果に含まれる警告についての対応を決定することができる。
【００１７】
更に、制御手段が、クライアント端末から、解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、フィードバックに基づいて、フィードバック情報記憶手段に記録された対応方針を更新する。これにより、フィードバックに応じて対応方針が更新されるので、警告に対する過去の対応に基づいて、新たな警告に対する判断を行なうことができる。
【００１８】
請求項２に記載の発明によれば、解析結果に含まれる警告の警告種別について、フィードバック情報記憶手段から、他の開発システムにおける対応方針を取得し、取得した対応方針を含めた評価情報を作成し、評価情報を解析結果評価レポートに含める。これにより、他の開発システムにおける対応方針を参考にして、警告に対する対応を決定することができる。
【００１９】
請求項３に記載の発明によれば、解析結果に含まれる警告の警告種別について、開発システムにおける対応方針として、フィードバック情報記憶手段に修正しない旨の対応方針が記録されている場合には、解析結果評価レポートに警告を含めない。これにより、過去の対応方針により警告が絞り込まれるので、効率的に対応方針を決定することができる。
【００２０】
請求項４に記載の発明によれば、制御手段が、フィルタ情報記憶手段に記録されたフィルタリング条件を満たす警告については、解析結果評価レポートに警告を含めない。これにより、フィルタリング条件により警告が絞り込まれるので、効率的に対応方針を決定することができる。
【００２１】
請求項５に記載の発明によれば、制御手段が、解析結果において、同じ警告種別の警告の個数を算出し、個数に基づいて警告種別に対する評価結果を変更する。これにより、警告の発生状況に応じて、解析結果評価レポートに含める警告を絞り込むことができる。
【発明の効果】
【００２２】
本発明によれば、ソースコードの静的解析において出力された警告について、開発部署において効率的に対応できる解析結果評価レポートを作成するための解析結果評価システム、解析結果評価方法及び解析結果評価プログラムを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態のシステム概略図。
【図２】本発明の実施形態の各データ記憶部に記録されたデータの説明図であって、（ａ）は修正情報記憶部、（ｂ）は解析結果レポート記憶部、（ｃ）はフィルタリングロジック記憶部、（ｄ）はフィルタリング対象記憶部、（ｅ）はフィードバック記憶部に記録されたデータの説明図。
【図３】本発明の実施形態の解析結果評価記憶部に記録された解析結果評価レポートに含まれるデータの説明図。
【図４】本発明の実施形態における処理手順の説明図。
【図５】本発明の実施形態における処理手順の説明図。
【図６】本発明の実施形態における処理手順の説明図。
【図７】本発明の実施形態における処理手順の説明図であって、（ａ）はループ内違反警告のフィルタリング処理、（ｂ）はフィルタリング救済処理の説明図。
【図８】本発明の実施形態における処理手順の説明図。
【図９】本発明の実施形態における処理手順の説明図。
【発明を実施するための形態】
【００２４】
以下、本発明を具体化した一実施形態を、図１〜図９を用いて説明する。本実施形態では、開発システムにおいて用いられるソースコードについて静的解析を行ない、この解析結果において出力された警告を評価するための解析結果評価システムを想定する。本実施形態の解析結果評価システムでは、図１に示すように、クライアント端末１０及び解析サーバ３０に、ネットワークを介して接続された評価支援サーバ２０を用いる。
【００２５】
クライアント端末１０は、開発システムにおいて用いられるプログラム（ソースコード）のコーディングを行なう開発部署の担当者（開発担当者）が使用するコンピュータ端末である。このクライアント端末１０は、ネットワークを介してデータを送信する機能や、受信したデータを表示する機能等を有する。このため、クライアント端末１０は、端末制御部１１、図示しないキーボード、マウス等の入力手段、ディスプレイ等の出力手段、通信手段、コーディングされたソースコードを格納するデータ記憶部等を備えている。
【００２６】
この端末制御部１１は、図示しないＣＰＵ等の制御手段、ＲＡＭ及びＲＯＭ等のメモリを有し、解析結果評価処理を実行する。具体的には、後述する各処理（コード作成段階、解析支援段階等の各処理）を実行する。このためのコーディング支援プログラムを実行することにより、端末制御部１１は、図１に示すように、コード作成手段１１１、解析支援手段１１２として機能する。
【００２７】
コード作成手段１１１は、開発システムにおいて用いるプログラムについて、コーディングの支援処理を実行する。
解析支援手段１１２は、静的解析を行なうための支援処理を実行する。具体的には、コーディングされたソースコードを解析サーバ３０に送信する。更に、解析支援手段１１２は、評価支援サーバ２０から、解析結果評価レポートを受信する。更に、解析支援手段１１２は、ソースコード、解析結果評価レポート、システム開発において修正されたソースコードを特定する情報（修正ソースコード情報）を、評価支援サーバ２０に送信する。更に、解析支援手段１１２は、解析結果評価レポートに対するフィードバックを、評価支援サーバ２０に送信する。
【００２８】
解析サーバ３０は、クライアント端末１０において作成されたソースコードについて、静的解析を行なうコンピュータシステムである。この解析サーバ３０は、静的解析ツール３１、ソースコード記憶部３２を備えている。
【００２９】
静的解析ツール３１は、ソースコードにおいて、バグを生じる可能性があるコードや、一般的にコーディング規約違反とされるコードを特定し、特定したコードについての警告を含めた解析結果レポートを出力する。このために、静的解析ツール３１は、バグとなるコードパターンや、コーディング規約に反するコードパターン等、ルール違反となるパターンを記憶しており、これらのパターンに該当するコードを検出する。
【００３０】
ソースコード記憶部３２には、クライアント端末１０から取得したソースコードが記憶される。本実施形態では、ソースコードとして、例えば、Ｊａｖａ（登録商標）によって作成されたプログラムを用いる。このソースコード記憶部３２においては、ソース名が付与されたソースコードとともに、このソースコードを取得したクライアント端末１０の連絡先（例えば、開発担当者の電子メールアドレス）が記録される。
【００３１】
評価支援サーバ２０は、解析サーバ３０において、静的解析により作成された解析結果レポートを評価するコンピュータシステムである。この評価支援サーバ２０は、制御部２１、ソースコード記憶部２２、修正情報記憶部２３、解析結果レポート記憶部２４、フィルタリングロジック記憶部２５、フィルタリング対象記憶部２６、フィードバック記憶部２７、解析結果評価記憶部２８を備えている。
【００３２】
この制御部２１は、図示しないＣＰＵ等の制御手段、ＲＡＭ及びＲＯＭ等のメモリを有し、解析結果評価処理を実行する。具体的には、後述する各処理（情報登録段階、解析結果評価段階、レポート作成段階、フィードバック登録段階等の各処理）を実行する。このための解析結果評価プログラムを実行することにより、評価支援サーバ２０の制御部２１は、図１に示すように、情報登録手段２１１、解析結果評価手段２１２、レポート作成手段２１３、フィードバック登録手段２１４として機能する。
【００３３】
情報登録手段２１１は、クライアント端末１０から、ソースコードや、静的解析により作成された解析結果レポートを取得し、それぞれソースコード記憶部２２、解析結果レポート記憶部２４に記録する処理を実行する。更に、情報登録手段２１１は、クライアント端末１０から、修正されたソースコードを特定する情報（修正ソースコード情報）を取得し、修正情報記憶部２３に記録する処理を実行する。
【００３４】
解析結果評価手段２１２は、解析結果レポート記憶部２４に記録された解析結果レポートファイル２４０に含まれる各警告の内容を評価する処理を実行する。
レポート作成手段２１３は、警告内容の評価に基づいて、解析結果評価レポートを作成する処理を実行する。このレポート作成手段２１３は、警告発生のレア度を評価するためのレア度基準値に関するデータを保持している。
【００３５】
フィードバック登録手段２１４は、解析結果評価レポートに対するフィードバックを、クライアント端末１０から受信し、フィードバック記憶部２７に記録する処理を実行する。
【００３６】
ソースコード記憶部２２には、クライアント端末１０においてコーディングされ、静的解析が行なわれたソースコードが記録されている。このソースコードには、このソースコードが用いられる開発対象のシステムを特定する情報（システム名）や、開発部署を特定するための情報（部署ＩＤ）、静的解析が行なわれた年月日（解析日）に関するデータが関連付けられて記録される。
【００３７】
修正情報記憶部２３には、図２（ａ）に示すように、修正されたソースコードを特定するための修正管理レコード２３０が記録されている。この修正管理レコード２３０は、クライアント端末１０から修正ソースコード情報を取得した場合に記録される。修正管理レコード２３０は、システム名、ソース名、部署ＩＤ、解析日に関するデータを含んで構成される。
【００３８】
システム名データ領域には、解析対象のソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
ソース名データ領域には、修正されたソースコード（プログラム）を特定するための識別子（ここでは、ソース名）に関するデータが記録される。
部署ＩＤデータ領域には、このソースコードの開発部署を特定するための識別子に関するデータが記録される。
解析日データ領域には、静的解析を行なった年月日に関するデータが記録される。
【００３９】
解析結果レポート記憶部２４は解析結果情報記憶手段として機能する。この解析結果レポート記憶部２４には、図２（ｂ）に示すように、ソースコードの静的解析により作成された解析結果についての解析結果レポートファイル２４０が記録される。この解析結果レポートファイル２４０は、クライアント端末１０から解析結果レポートを受信した場合に記録される。解析結果レポートファイル２４０は、システム名、解析日、種別、ルール、ルールＩＤ、ソース名、行番号、警告メッセージに関するデータを含んで構成される。
【００４０】
システム名データ領域には、解析対象のソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、静的解析を行なった年月日に関するデータが記録される。
種別データ領域には、静的解析において出力された問題があるコーディング（ルール違反）の種類に関するデータが記録される。この種別には、「データベース接続」、「プログラミング」、「バグの可能性」等がある。
【００４１】
ルールデータ領域には、この種別において、警告対象の根拠となるルールの内容に関するデータが記録される。
ルールＩＤデータ領域には、警告対象の根拠となるルールを特定するための識別子（警告種別）に関するデータが記録される。
【００４２】
ソース名データ領域には、警告対象のコードを含むプログラムを特定するための識別子に関するデータが記録される。
行番号データ領域には、このソースにおいて、警告対象のコードが記載された位置を特定するための行番号に関するデータが記録される。
警告メッセージデータ領域には、警告されたルール違反の内容に関するデータが記録される。
【００４３】
フィルタリングロジック記憶部２５はフィルタ情報記憶手段として機能する。このフィルタリングロジック記憶部２５には、図２（ｃ）に示すように、解析結果レポートファイル２４０に含まれる警告についてフィルタリング（表示の削除）の要否を判定するためのフィルタリングロジックデータ２５０が記録されている。このフィルタリングロジックデータ２５０は、フィルタリング対象の警告を特定するためのロジックが登録された場合に記録される。後述するように、解析結果評価手段２１２が、フィルタリングロジックデータ２５０により、警告のフィルタリングや、フィルタリングの対象外とするための処理を行なう。本実施形態では、フィルタリングロジックとして、警告対象個数、同一内容によるフィルタリングロジック、ループ内違反警告のフィルタリングロジック、フィルタリング救済ロジック等が記録されている。
【００４４】
警告対象個数、同一内容によるフィルタリングロジックデータ２５０は、実質的な影響が小さいが、警告対象個数が多い警告や、ルール違反であるがコーディング手法の一つと考えられる警告をフィルタリングするためのロジックである。この警告対象個数、同一内容によるフィルタリングロジックデータ２５０には、実質的な影響が小さい警告についてのルールＩＤが記録された評価対象リストが保持されている。この評価対象リストにおいては、ルールＩＤに対して、警告対象個数を評価するための第１基準値及び第２基準値に関するデータが記録されている。
【００４５】
ループ内違反警告のフィルタリングロジックデータ２５０は、ループ内におけるループ制御変数の変更を禁止するルールを違反していることについての警告をフィルタリングするためのロジックである。このループ内違反警告のフィルタリングロジックデータ２５０には、フィルタリング対象を特定するために、ループ範囲についての基準行数に関するデータが記録されている。
【００４６】
フィルタリング救済のフィルタリングロジックデータ２５０は、フィルタリングされた警告を、過去の対応方針に基づいてフィルタリング対象から除外するためのロジックである。
【００４７】
フィルタリング対象記憶部２６には、図２（ｄ）に示すように、解析結果レポートファイル２４０に含まれる警告においてフィルタリング対象を特定するためのフィルタリング対象管理レコード２６０が記録されている。このフィルタリング対象管理レコード２６０は、解析結果評価処理を実行した場合に記録される。フィルタリング対象管理レコード２６０は、システム名、解析日、ルールＩＤ、ソース名、行番号に関するデータを含んで構成される。
【００４８】
システム名データ領域には、ソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
【００４９】
ルールＩＤデータ領域には、警告対象のルールを特定するための識別子に関するデータが記録される。
ソース名データ領域には、静的解析において警告対象のルール違反が含まれるプログラムを特定するための識別子に関するデータが記録される。
【００５０】
行番号データ領域には、警告対象のコード位置を特定するための行番号に関するデータが記録される。本実施形態では、フィルタリング対象管理レコード２６０において、ルールＩＤに対してソース名や行番号が記録されていない場合には、このルールＩＤについてのすべての警告をフィルタリング対象とする。一方、フィルタリング対象管理レコード２６０において、ルールＩＤに対してソース名や行番号が記録されている場合には、ソース名や行番号によって指定された警告のみをフィルタリング対象とする。
【００５１】
フィードバック記憶部２７はフィードバック情報記憶手段として機能する。このフィードバック記憶部２７には、図２（ｅ）に示すように、解析結果評価レポートに対するフィードバックを管理するためのフィードバック管理レコード２７０が記録されている。このフィードバック管理レコード２７０は、クライアント端末１０から、フィードバックを取得した場合に記録される。フィードバック管理レコード２７０は、システム名、解析日、ソース名、行番号、ルールＩＤ、判定結果に関するデータを含んで構成される。
【００５２】
システム名データ領域には、フィードバックがあったソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
【００５３】
ソース名データ領域には、フィードバックがあったプログラムを特定するための識別子に関するデータが記録される。
行番号データ領域には、警告対象のコード位置を特定するための行番号に関するデータが記録される。
【００５４】
ルールＩＤデータ領域には、フィードバックがあった警告対象のルールを特定するための識別子に関するデータが記録される。
判定結果データ領域には、この警告対象のルールに対して開発部署の判断（対応方針）を特定するための識別子（フィードバックコード）に関するデータが記録される。本実施形態では、修正を行なうと判定した場合（修正対応）について６種類のフィードバックコード、修正しないと判定した場合（修正不要）について４種類のフィードバックコードを用いる。以下に、各種類のフィードバックコードを示す。
＜修正対応＞
・バグであり、修正する（今回の修正部位）：「１」
・バグであり、修正する（既存部分）：「２」
・バグとまでは言えないが、修正する（今回の修正部位）：「３」
・バグとまでは言えないが、修正する（既存部分）：「４」
・今回は見送るが、将来の案件で修正する（今回の修正部位）：「５」
・今回は見送るが、将来の案件で修正する（既存部分）：「６」
＜修正不要＞
・望ましくはないが、修正しない（今回の修正部位）：「７」
・望ましくはないが、修正しない（既存部分）：「８」
・バグではないため、修正しない（今回の修正部位）：「９」
・バグではないため、修正しない（既存部分）：「１０」
【００５５】
解析結果評価記憶部２８には、図３に示すように、解析結果レポートファイル２４０に含まれる警告を評価した解析結果評価データ２８０が記録されている。この解析結果評価データ２８０は、解析結果評価処理を実行した場合に記録される。解析結果評価データ２８０には、システム名、解析日、ソース名、今回修正、警告一覧リストに関するデータが記録される。この警告一覧リストには、行番号、警告メッセージ、ルールＩＤ、判定結果、前回修正漏れ、自システム直近判定結果、自システム過去判定結果、全システム過去判定結果、レア度に関するデータが記録される。
【００５６】
システム名データ領域には、解析結果評価処理の処理対象のソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
【００５７】
ソース名データ領域には、静的解析が行なわれたプログラムの識別子に関するデータが記録される。
今回修正データ領域には、今回、修正されたソースコードかどうかを判定するためのフラグに関するデータが記録される。
【００５８】
行番号データ領域には、警告対象のコード位置を特定するための行番号に関するデータが記録される。
警告メッセージデータ領域には、警告の内容に関するデータが記録される。
ルールＩＤデータ領域には、警告対象の根拠となるルールを特定するための識別子に関するデータが記録される。
【００５９】
判定結果データ領域には、この警告対象のルールに対して開発部署の判断を特定するための識別子（フィードバックコード）に関するデータが記録される。この判定結果は、クライアント端末１０からのフィードバックに基づいて記録される。
【００６０】
前回修正漏れデータ領域には、前回のフィードバックにおいて修正対応としていた警告ついて、修正されていないことを示すフラグが記録される。
自システム直近判定結果データ領域には、同じ開発システムにおける、直近の警告対応についてのフィードバックコード毎に、判定結果件数に関するデータが記録される。
【００６１】
自システム過去判定結果データ領域には、同じ開発システムにおける、過去の全期間の警告対応についてのフィードバックコード毎に、判定結果件数に関するデータが記録される。
【００６２】
全システム過去判定結果データ領域には、他の開発システムを含む全システムにおける、過去の全期間の警告対応についてのフィードバックコード毎に、判定結果の割合に関するデータが記録される。
レア度データ領域には、この警告の発生頻度を特定するためのフラグが記録される。本実施形態では、発生頻度が低い場合に、レアフラグが記録される。
【００６３】
上記のように構成された解析結果評価システムを用いて、ソースコードの静的解析結果を評価するための処理手順を、図４〜図９に従って説明する。ここでは、全体フローの概要（図４）、解析結果評価処理（図５）、警告対象個数、同一内容によるフィルタリング処理（図６）、ループ内違反警告のフィルタリング処理（図７（ａ））、フィルタリング救済処理（図７（ｂ））、レポート作成処理（図８、図９）の順番に説明する。
【００６４】
（全体フローの概要）
まず、全体フローの概要を、図４に従って説明する。
ここでは、クライアント端末１０において、コーディングを行なう（ステップＳ１−１）。具体的には、開発担当者は、クライアント端末１０の端末制御部１１のコード作成手段１１１を用いて、開発システムのためのソースコードを作成する。そして、コード作成手段１１１は、作成されたソースコードに対して、ソース名を付与して、クライアント端末１０内のデータ記憶部に格納する。
【００６５】
コーディングを終了した場合、クライアント端末１０において、ソースコードの送信処理を実行する（ステップＳ１−２）。具体的には、開発担当者は、クライアント端末１０の端末制御部１１の解析支援手段１１２を用いて、解析サーバ３０にアクセスする。この場合、解析サーバ３０は、クライアント端末１０のディスプレイに、ソースコード登録画面を出力する。このソースコード登録画面には、データ記憶部に格納されたソースコードの指定欄、開発担当者の連絡先の入力欄及び実行ボタンが設けられている。
【００６６】
次に、解析サーバ３０は、ソースコードの登録処理を実行する（ステップＳ１−３）。具体的には、クライアント端末１０のディスプレイに表示されたソースコード登録画面において、データ記憶部に格納された静的解析対象のソースコードを指定し、開発担当者の連絡先を入力する。そして、実行ボタンが押下された場合、解析サーバ３０は、ソースコード、開発担当者の連絡先を取得する。そして、解析サーバ３０は、取得したソースコードを、開発担当者の連絡先に関連付けてソースコード記憶部３２に記録する。
【００６７】
次に、解析サーバ３０は、静的解析処理を実行する（ステップＳ１−４）。具体的には、解析サーバ３０の静的解析ツール３１は、ソースコード記憶部３２に記録されたソースコードの静的解析処理を実行し、解析結果レポートを作成する。この解析結果レポートには、解析日に関するデータが含まれる。更に、静的解析処理においてルール違反と判定された警告対象について、種別、ルール、ルールＩＤ、ソース名、行番号、警告メッセージに関するデータを含める。
【００６８】
次に、解析サーバ３０は、解析結果レポートの送信処理を実行する（ステップＳ１−５）。具体的には、静的解析ツール３１は、静的解析を行なったソースコードに関連付けられた連絡先をソースコード記憶部３２から取得する。そして、静的解析ツール３１は、作成した解析結果レポート、解析日に関するデータを、開発担当者の連絡先のクライアント端末１０に送信する。
【００６９】
次に、クライアント端末１０において、解析結果レポートの受信処理を実行する（ステップＳ１−６）。具体的には、クライアント端末１０の端末制御部１１の解析支援手段１１２は、受信した解析結果レポートを、解析日に関連付けて、クライアント端末１０内のデータ記憶部に格納する。
【００７０】
次に、クライアント端末１０において、解析結果評価依頼の送信処理を実行する（ステップＳ１−７）。具体的には、クライアント端末１０を用いて、評価支援サーバ２０にアクセスする。この場合、評価支援サーバ２０の制御部２１の情報登録手段２１１は、クライアント端末１０のディスプレイに、解析結果評価依頼登録画面を出力する。この解析結果評価依頼登録画面には、データ記憶部に格納されたソースコード、解析結果レポートの指定欄が設けられている。更に、解析結果評価依頼登録画面には、開発部署の部署ＩＤ、ソースコードが利用されるシステム名、ソース名、解析日、修正ソースコード名の入力欄及び実行ボタンが設けられている。
【００７１】
次に、評価支援サーバ２０の制御部２１は、解析結果評価依頼の登録処理を実行する（ステップＳ１−８）。具体的には、クライアント端末１０のディスプレイに表示された解析結果評価依頼登録画面において、データ記憶部に格納されたソースコード、解析結果レポートを指定する。更に、クライアント端末１０のディスプレイに表示された解析結果評価依頼登録画面において、部署ＩＤ、システム名、ソース名、解析日を各入力欄に設定する。また、修正されたソースコードがある場合には、修正ソースコード名入力欄に、修正されたソースコードのソース名を設定する。
【００７２】
そして、実行ボタンが押下された場合、制御部２１の情報登録手段２１１は、ソースコード、解析結果レポート、解析結果評価依頼登録画面に入力された部署ＩＤ、システム名、ソース名、解析日を取得する。更に、修正ソースコード名入力欄にソース名が設定されている場合には、修正されたソースコードのソース名を取得する。
【００７３】
そして、情報登録手段２１１は、クライアント端末１０から取得した解析結果レポートを解析結果レポート記憶部２４に記録する。更に、情報登録手段２１１は、ソースコードを、システム名、部署ＩＤ、解析日に関連付けてソースコード記憶部２２に登録する。
【００７４】
更に、修正されたソースコードのソース名を取得した場合、情報登録手段２１１は、取得したソース名を記録した修正管理レコード２３０を生成し、修正情報記憶部２３に記録する。この修正管理レコード２３０には、部署ＩＤ、解析日（年月日）を含める。
【００７５】
次に、評価支援サーバ２０の制御部２１は、解析結果評価処理を実行する（ステップＳ１−９）。具体的には、制御部２１の解析結果評価手段２１２は、フィルタリングロジック記憶部２５に記録されたフィルタリングロジックを用いて、解析結果レポートファイル２４０に含まれる警告についての評価処理を実行する。詳細は、図５〜図７を用いて後述する。
【００７６】
更に、制御部２１の解析結果評価手段２１２は、解析結果評価記憶部２８に記録された解析結果評価データ２８０を用いて、警告についての参考情報を含めた解析結果評価レポートを作成する。詳細は、図８〜図９を用いて後述する。
【００７７】
次に、評価支援サーバ２０の制御部２１は、解析結果評価レポートの送信処理を実行する（ステップＳ１−１０）。具体的には、制御部２１の解析結果評価手段２１２は、作成した解析結果評価レポートを、開発部署のクライアント端末１０に送信する。
【００７８】
次に、クライアント端末１０において、解析結果評価レポートの受信処理を実行する（ステップＳ１−１１）。具体的には、クライアント端末１０の端末制御部１１の解析支援手段１１２は、評価支援サーバ２０から受信した解析結果評価レポートをディスプレイに出力する。
【００７９】
次に、クライアント端末１０において、フィードバックの送信処理を実行する（ステップＳ１−１２）。具体的には、開発担当者は、クライアント端末１０の端末制御部１１の解析支援手段１１２を用いて、解析結果評価レポートに含まれる警告の内容を確認する。そして、修正要否を判断して判定結果を入力する。入力を完了した場合、解析支援手段１１２は、判定結果が入力された解析結果評価レポートについてのフィードバックを評価支援サーバ２０に返信する。このフィードバックには、解析結果評価レポートに記録されたシステム名、解析日、ソース名、ルールＩＤ、判定結果に関するデータを含める。
【００８０】
次に、評価支援サーバ２０の制御部２１は、フィードバックの登録処理を実行する（ステップＳ１−１３）。具体的には、制御部２１のフィードバック登録手段２１４は、解析結果評価記憶部２８に、各警告に対する判定結果を記録する。更に、フィードバック登録手段２１４は、クライアント端末１０から取得したフィードバックに基づいて、フィードバック管理レコード２７０を生成し、フィードバック記憶部２７に記録する。
【００８１】
次に、クライアント端末１０において、ソースコードの修正を行なう（ステップＳ１−１４）。具体的には、開発担当者は、解析結果評価レポートにおける判定結果に基づいて、クライアント端末１０の端末制御部１１のコード作成手段１１１を用いてソースコードを修正する。
【００８２】
（解析結果評価処理）
次に、解析結果評価処理を、図５に従って説明する。この解析結果評価処理は、評価支援サーバ２０が、クライアント端末１０から解析結果レポートを取得した場合に実行される。
【００８３】
この処理においては、フィルタリングロジック記憶部２５に記録されているロジックを順次、特定して、以下の処理を繰り返す。なお、フィルタリング救済ロジックについては最後に実行する。
【００８４】
ここでは、評価支援サーバ２０の制御部２１は、フィルタリング処理を実行する（ステップＳ２−１）。具体的には、制御部２１の解析結果評価手段２１２は、フィルタリングロジックに基づいて解析結果レポートファイル２４０に含まれる警告対象の評価を行なう。本実施形態は、後述するように、警告対象個数、同一内容によるフィルタリングロジック、ループ内違反警告のフィルタリングロジック、フィルタリング救済ロジックを用いる場合を説明する。
【００８５】
すべてのロジックの処理を終了した場合、評価支援サーバ２０の制御部２１は、システムの特定処理を実行する（ステップＳ２−２）。具体的には、制御部２１のレポート作成手段２１３は、解析結果レポート記憶部２４の解析結果レポートファイル２４０に記録されているシステム名を特定する。
【００８６】
次に、評価支援サーバ２０の制御部２１は、解析結果評価レポートに含める警告の特定処理を実行する（ステップＳ２−３）。具体的には、制御部２１のレポート作成手段２１３は、解析結果レポートファイル２４０に記録されている警告の中で、フィルタリング対象記憶部２６に記録されていない警告を特定する。ここで、フィルタリング対象管理レコード２６０においてソース名や行番号が指定されていない場合には、フィルタリング対象管理レコード２６０のルールＩＤについて、すべての警告を解析結果評価レポートの対象外とする。一方、フィルタリング対象管理レコード２６０においてソース名や行番号が指定されている場合には、ソース名や行番号によって指定された警告を解析結果評価レポートの対象外とする。そして、レポート作成手段２１３は、フィルタリング対象管理レコード２６０に記録されていない警告を、解析結果評価レポートに含める警告として特定する。
【００８７】
そして、評価支援サーバ２０の制御部２１は、特定した警告毎に以下の処理を実行する。
次に、評価支援サーバ２０の制御部２１は、レポート作成処理を実行する（ステップＳ２−４）。具体的には、制御部２１のレポート作成手段２１３は、特定した警告について参照情報を含めた解析結果評価レポートを作成する。
以上の処理を、特定されたすべての警告について実行する。
【００８８】
（警告対象個数、同一内容によるフィルタリング処理）
次に、図６を用いて、警告対象個数、同一内容によるフィルタリング処理を実行する。このフィルタリング処理においては、実害がない警告であって、対象数が多い警告のフィルタリングを行なう。
【００８９】
ここでは、解析結果レポートファイル２４０に含まれる警告毎に、以下の処理を実行する。
まず、評価支援サーバ２０の制御部２１は、実質的な影響が小さい警告かどうかについての判定処理を実行する（ステップＳ３−１）。具体的には、制御部２１の解析結果評価手段２１２は、フィルタリングロジック記憶部２５に記録されている警告対象個数、同一内容によるフィルタリングロジックの評価対象リストを取得する。そして、解析結果評価手段２１２は、処理対象の警告についてのルールＩＤと、評価対象リストに記録されているルールＩＤとを比較する。処理対象の警告のルールＩＤが評価対象リストに記録されている場合には、実質的な影響が小さい警告と判定する。
【００９０】
ここで、処理対象の警告のルールＩＤが評価対象リストに記録されておらず、実質的な影響がある警告と判定した場合（ステップＳ３−１において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、この警告についての処理を終了する。
【００９１】
一方、処理対象の警告のルールＩＤが評価対象リストに記録されており、実質的な影響が小さい警告と判定した場合（ステップＳ３−１において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、フィルタリングのための第１基準値の取得処理を実行する（ステップＳ３−２）。具体的には、制御部２１の解析結果評価手段２１２は、評価対象リストから、このルールＩＤに関連付けられた第１基準値を取得する。
【００９２】
次に、評価支援サーバ２０の制御部２１は、警告対象個数が第１基準値以上かどうかについての判定処理を実行する（ステップＳ３−３）。具体的には、制御部２１の解析結果評価手段２１２は、解析結果レポート記憶部２４に記録された解析結果レポートファイル２４０において、このルールＩＤが付与された警告の行番号の個数をカウントすることにより、警告対象個数を算出する。そして、解析結果評価手段２１２は、算出した警告対象個数と第１基準値とを比較する。
【００９３】
警告対象個数が第１基準値以上の場合（ステップＳ３−３において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、警告のフィルタリング処理を実行する（ステップＳ３−４）。具体的には、制御部２１の解析結果評価手段２１２は、システム名、解析日、処理対象の警告のルールＩＤについてのフィルタリング対象管理レコード２６０を生成し、フィルタリング対象記憶部２６に記録する。そして、解析結果評価手段２１２は、この警告についての処理を終了する。
【００９４】
一方、警告対象個数が第１基準値より少ない場合（ステップＳ３−３において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、警告メッセージの取得処理を実行する（ステップＳ３−５）。具体的には、制御部２１の解析結果評価手段２１２は、このルールＩＤが付与されたすべての警告メッセージを解析結果レポートファイル２４０から取得する。
【００９５】
次に、評価支援サーバ２０の制御部２１は、警告メッセージが共通する警告の警告対象個数の算出処理を実行する（ステップＳ３−６）。具体的には、制御部２１の解析結果評価手段２１２は、取得した警告メッセージを相互に比較する。そして、解析結果評価手段２１２は、警告メッセージが付与された警告の行番号の個数をカウントすることにより、警告対象個数を算出する。
【００９６】
次に、警告メッセージが共通する警告毎に以下の処理を繰り返す。
ここでは、評価支援サーバ２０の制御部２１は、フィルタリングのための第２基準値の取得処理を実行する（ステップＳ３−７）。具体的には、制御部２１の解析結果評価手段２１２は、評価対象リストから、このルールＩＤに関連付けられた第２基準値を取得する。
【００９７】
次に、評価支援サーバ２０の制御部２１は、警告対象個数が第２基準値以上かどうかについての判定処理を実行する（ステップＳ３−８）。具体的には、制御部２１の解析結果評価手段２１２は、警告メッセージが共通する警告の警告対象個数と第２基準値とを比較する。
【００９８】
警告対象個数が第２基準値より少ない場合（ステップＳ３−８において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、この警告についての処理を終了する。
一方、警告対象個数が第２基準値以上の場合（ステップＳ３−８において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、警告のフィルタリング処理を実行する（ステップＳ３−９）。具体的には、制御部２１の解析結果評価手段２１２は、システム名、解析日、処理対象の警告のルールＩＤのフィルタリング対象管理レコード２６０を生成し、フィルタリング対象記憶部２６に記録する。そして、解析結果評価手段２１２は、この警告についての処理を終了する。
以上の処理を、解析結果レポートファイル２４０に含まれるすべての警告について繰り返す。
【００９９】
（ループ内違反警告のフィルタリング処理）
次に、図７（ａ）を用いて、ループ内違反警告のフィルタリング処理を説明する。このフィルタリング処理については、解析結果レポートファイル２４０に含まれるループ内違反警告を特定し、この警告毎に繰り返す。
【０１００】
まず、評価支援サーバ２０の制御部２１は、警告対象のコードの取得処理を実行する（ステップＳ４−１）。具体的には、制御部２１の解析結果評価手段２１２は、解析結果レポートファイル２４０において、ループ内違反警告が記録されている行番号を取得する。そして、解析結果評価手段２１２は、ソースコード記憶部２２に記録されたソースコードにおいて、取得した行番号のコードに基づいてループ範囲を特定する。
【０１０１】
次に、評価支援サーバ２０の制御部２１は、基準行数以下かどうかについての判定処理を実行する（ステップＳ４−２）。具体的には、制御部２１の解析結果評価手段２１２は、ループ範囲に含まれるコード行数を算出し、基準行数と比較する。
【０１０２】
ループ範囲に含まれるコード行数が基準行数より多い場合（ステップＳ４−２において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、この警告についての処理を終了する。
【０１０３】
一方、ループ範囲に含まれるコード行数が基準行数以下の場合（ステップＳ４−２において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、処理対象の警告のフィルタリング処理を実行する（ステップＳ４−３）。具体的には、制御部２１の解析結果評価手段２１２は、システム名、解析日、処理対象の警告のルールＩＤ、ソース名、行番号についてのフィルタリング対象管理レコード２６０を生成し、フィルタリング対象記憶部２６に記録する。そして、解析結果評価手段２１２は、この警告についての処理を終了する。
【０１０４】
（フィルタリング救済処理）
次に、図７（ｂ）を用いて、フィルタリング救済処理を説明する。このフィルタリング救済処理は、すべてのフィルタリング処理を終了した後に実行される。
【０１０５】
この処理は、フィルタリング対象記憶部２６に記録されているフィルタリング対象の警告毎に繰り返す。
まず、評価支援サーバ２０の制御部２１は、警告に対する対応履歴の取得処理を実行する（ステップＳ５−１）。具体的には、制御部２１の解析結果評価手段２１２は、フィルタリング対象管理レコード２６０に記録されているシステム名を特定する。そして、解析結果評価手段２１２は、特定したシステム名及びルールＩＤが記録されたフィードバック管理レコード２７０をフィードバック記憶部２７から抽出する。
【０１０６】
次に、評価支援サーバ２０の制御部２１は、修正対象かどうかについての判定処理を実行する（ステップＳ５−２）。具体的には、制御部２１の解析結果評価手段２１２は、抽出したフィードバック管理レコード２７０の判定結果データ領域に修正対象情報（フィードバックコード（１）〜（６））が記録されているかどうかを確認する。
【０１０７】
修正対象情報が記録されておらず、修正対象でないと判定した場合（ステップＳ５−２において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、このルールＩＤについての処理を終了する。
【０１０８】
一方、修正対象情報が記録されており、修正対象と判定した場合（ステップＳ５−２において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、フィルタリング対象から取り除く処理を実行する（ステップＳ５−３）。具体的には、制御部２１の解析結果評価手段２１２は、フィルタリング対象記憶部２６から、このルールＩＤが記録されたフィルタリング対象管理レコード２６０を削除する。
以上の処理を、フィルタリング対象記憶部２６に記録されているすべてのルールＩＤについて実行する。
【０１０９】
（レポート作成処理）
次に、図８、図９を用いて，レポート作成処理を説明する。
まず、図８に示すように、評価支援サーバ２０の制御部２１は、解析結果の設定処理を実行する（ステップＳ６−１）。具体的には、制御部２１のレポート作成手段２１３は、システム名、解析日、ソース名、今回修正に関連付けて、行番号〜レア度の各データ領域を設けた警告一覧リスト欄を、解析結果評価記憶部２８に登録する。そして、レポート作成手段２１３は、行番号〜ルールＩＤの各データ領域に、解析結果レポートファイル２４０に記録されている各データを記録する。
【０１１０】
次に、評価支援サーバ２０の制御部２１は、同じプログラムで初出の警告かどうかについての判定処理を実行する（ステップＳ６−２）。具体的には、制御部２１のレポート作成手段２１３は、フィードバック記憶部２７において、処理対象の警告のルールＩＤ及び同じシステム名、ソース名が記録されたフィードバック管理レコード２７０を検索する。フィードバック記憶部２７から、このルールＩＤ及び同じシステム名、ソース名が記録されたフィードバック管理レコード２７０を抽出できない場合には、同じプログラムにおいて初出と判定する。
【０１１１】
ルールＩＤ及び同じシステム名、ソース名が記録されたフィードバック管理レコード２７０を抽出することにより、同じプログラムで初出の警告ではないと判定した場合（ステップＳ６−２において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、処理対象の警告について同じプログラムでの対応の検索処理を実行する（ステップＳ６−３）。具体的には、制御部２１のレポート作成手段２１３は、処理対象の警告のルールＩＤ及びシステム名、同じソース名が記録されたフィードバック管理レコード２７０に記録されているすべての判定結果を取得する。
【０１１２】
次に、評価支援サーバ２０の制御部２１は、フィードバックにおいて修正対応かどうかについての判定処理を実行する（ステップＳ６−４）。具体的には、制御部２１のレポート作成手段２１３は、この解析日のフィードバック管理レコード２７０に記録された判定結果において、修正対応情報（フィードバックコード「１」〜「６」）が記録されているかどうかを判定する。判定結果に修正対応情報が記録されていない場合には、フィードバックにおいて修正対応でないと判定する。
【０１１３】
フィードバックにおいて修正対応でないと判定した場合（ステップＳ６−４において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、警告の削除処理を実行する（ステップＳ６−５）。具体的には、制御部２１のレポート作成手段２１３は、処理対象の警告についてのフィルタリング対象管理レコード２６０を生成し、フィルタリング対象記憶部２６に登録する。そして、レポート作成手段２１３は、この警告についての警告一覧リスト欄を解析結果評価データ２８０から削除する。
【０１１４】
一方、フィードバックにおいて修正対応と判定した場合（ステップＳ６−４において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、前回のフィードバックにおいて「修正する」かどうかについての判定処理を実行する（ステップＳ６−６）。具体的には、制御部２１のレポート作成手段２１３は、抽出したフィードバック管理レコード２７０の判定結果データ領域にフィードバックコード（「１」〜「４」）が記録されているかどうかを確認する。フィードバックコード（「１」〜「４」）が記録されている場合には、前回のフィードバックにおいて「修正する」と判定する。
【０１１５】
前回のフィードバックにおいて「修正する」と判定した場合（ステップＳ６−６において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、前回修正もれフラグの付加処理を実行する（ステップＳ６−７）。具体的には、制御部２１のレポート作成手段２１３は、解析結果評価記憶部２８の解析結果評価データ２８０において、前回修正もれフラグを記録する。
【０１１６】
一方、判定結果データ領域にフィードバックコード（「５」，「６」）が記録されており、前回のフィードバックにおいて「修正する」でないと判定した場合（ステップＳ６−６において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、前回修正もれフラグの付加処理（ステップＳ６−７）をスキップする。
【０１１７】
なお、同じプログラムで初出の警告と判定した場合（ステップＳ６−２において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、ステップＳ６−３〜Ｓ６−７の処理をスキップする。
【０１１８】
次に、図９に示すように、評価支援サーバ２０の制御部２１は、自システムで初出の警告かどうかについての判定処理を実行する（ステップＳ７−１）。具体的には、制御部２１のレポート作成手段２１３は、フィードバック記憶部２７において、処理対象の警告のルールＩＤ及び同じシステム名が記録されたフィードバック管理レコード２７０を検索する。フィードバック記憶部２７から、このルールＩＤ及び同じシステム名が記録されたフィードバック管理レコード２７０を抽出できない場合には、自システムにおいて初出と判定する。
【０１１９】
このルールＩＤ及び同じシステム名が記録されたフィードバック管理レコード２７０を抽出することにより、自システムで初出の警告ではないと判定した場合（ステップＳ７−１において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、処理対象の警告について自システムでの直近の対応の検索処理を実行する（ステップＳ７−２）。具体的には、制御部２１のレポート作成手段２１３は、直近の解析日が記録されるとともに、処理対象の警告のルールＩＤ及び同じシステム名が記録されたフィードバック管理レコード２７０に記録されているすべての判定結果を取得する。
【０１２０】
次に、評価支援サーバ２０の制御部２１は、対応状況の算出処理を実行する（ステップＳ７−３）。具体的には、制御部２１のレポート作成手段２１３は、抽出した判定結果を用いて、フィードバックコード毎に判定結果数をカウントする。
【０１２１】
次に、評価支援サーバ２０の制御部２１は、参考情報の付加処理を実行する（ステップＳ７−４）。具体的には、制御部２１のレポート作成手段２１３は、解析結果評価記憶部２８の解析結果評価データ２８０において、自システム直近判定結果としてフィードバックコード毎の件数を記録する。
【０１２２】
次に、評価支援サーバ２０の制御部２１は、処理対象の警告について自システムでの対応の検索処理を実行する（ステップＳ７−５）。具体的には、制御部２１のレポート作成手段２１３は、このルールＩＤ及び同じシステム名が記録されたフィードバック管理レコード２７０を特定する。そして、レポート作成手段２１３は、特定したフィードバック管理レコード２７０に記録されているすべての判定結果を取得する。
【０１２３】
次に、評価支援サーバ２０の制御部２１は、対応状況の算出処理を実行する（ステップＳ７−６）。具体的には、制御部２１のレポート作成手段２１３は、抽出した判定結果を用いて、フィードバックコード毎に判定結果数をカウントする。
【０１２４】
次に、評価支援サーバ２０の制御部２１は、参考情報の付加処理を実行する（ステップＳ７−７）。具体的には、制御部２１のレポート作成手段２１３は、解析結果評価記憶部２８の解析結果評価データ２８０において、自システム過去判定結果としてフィードバックコード毎の件数を記録する。
【０１２５】
一方、自システムで初出の警告と判定した場合（ステップＳ７−１において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、ステップＳ７−２〜Ｓ７−７の処理をスキップする。
【０１２６】
次に、評価支援サーバ２０の制御部２１は、全システムで初出の警告かどうかについての判定処理を実行する（ステップＳ７−８）。具体的には、制御部２１のレポート作成手段２１３は、フィードバック記憶部２７において、処理対象の警告のルールＩＤが記録された過去のフィードバック管理レコード２７０を検索する。フィードバック記憶部２７に、このルールＩＤが記録されたフィードバック管理レコード２７０を抽出できない場合には、全システムにおいて初出と判定する。
【０１２７】
このルールＩＤが記録されたフィードバック管理レコード２７０を抽出することにより、全システムで初出の警告ではないと判定した場合（ステップＳ７−８において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、処理対象の警告について全システムでの対応の検索処理を実行する（ステップＳ７−９）。具体的には、制御部２１のレポート作成手段２１３は、このルールＩＤが記録されたフィードバック管理レコード２７０に記録されているすべての判定結果を取得する。
【０１２８】
次に、評価支援サーバ２０の制御部２１は、対応状況の算出処理を実行する（ステップＳ７−１０）。具体的には、制御部２１のレポート作成手段２１３は、抽出した判定結果を用いて、フィードバックコード毎に判定結果数をカウントする。次に、レポート作成手段２１３は、各フィードバックコードの判定結果数を合計した総数を算出する。そして、レポート作成手段２１３は、フィードバックコード毎に、判定結果数を総数で除算した割合を算出する。
【０１２９】
次に、評価支援サーバ２０の制御部２１は、参考情報の付加処理を実行する（ステップＳ７−１１）。具体的には、制御部２１のレポート作成手段２１３は、解析結果評価記憶部２８の解析結果評価データ２８０において、全システム過去判定結果としてフィードバックコード毎の割合を記録する。
【０１３０】
一方、全システムで初出の警告と判定した場合（ステップＳ７−８において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、ステップＳ７−９〜Ｓ７−１１の処理をスキップする。
【０１３１】
次に、評価支援サーバ２０の制御部２１は、修正されたソースコードかどうかについての判定処理を実行する（ステップＳ７−１２）。具体的には、制御部２１のレポート作成手段２１３は、修正情報記憶部２３において、同じシステム名、ソース名及び解析日が記録された修正管理レコード２３０を検索する。そして、同じシステム名、ソース名及び解析日が記録された修正管理レコード２３０を抽出した場合には、評価対象のソースコードは、修正されたソースコードと判定する。
【０１３２】
同じシステム名、ソース名及び解析日が記録された修正管理レコード２３０を抽出したことにより、修正されたソースコードと判定した場合（ステップＳ７−１２において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、今回修正フラグの記録処理を実行する（ステップＳ７−１３）。具体的には、制御部２１のレポート作成手段２１３は、解析結果評価記憶部２８に記録された解析結果評価データ２８０において、今回修正フラグを記録する。
【０１３３】
一方、同じシステム名、ソース名及び解析日が記録された修正管理レコード２３０を抽出できず、修正されたソースコードではないと判定した場合（ステップＳ７−１２において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、ステップＳ７−１３の処理をスキップする。
【０１３４】
次に、評価支援サーバ２０の制御部２１は、レア度の評価処理を実行する（ステップＳ７−１４）。具体的には、制御部２１のレポート作成手段２１３は、解析結果レポート記憶部２４に記録されている警告について、ルールＩＤ毎に警告数を算出する。そして、レポート作成手段２１３は、各ルールＩＤの警告数を合計した総数を算出する。そして、レポート作成手段２１３は、処理対象のルールＩＤの警告数を総数で除算した割合を算出する。
【０１３５】
次に、評価支援サーバ２０の制御部２１は、レア情報の付加処理を実行する（ステップＳ７−１５）。具体的には、制御部２１のレポート作成手段２１３は、算出した割合がレア度基準値以下の場合には、解析結果評価記憶部２８に記録された解析結果評価データ２８０において、レア度フラグを記録する。
【０１３６】
本実施形態によれば、以下のような効果を得ることができる。
（１）本実施形態においては、評価支援サーバ２０の制御部２１は、フィルタリングロジックの実行処理を実行する（ステップＳ２−１）。これにより、静的解析において出力された警告についてはフィルタリングロジックにより絞り込まれるので、修正が望ましいソースコードの判別を的確に行なうことができ、所定の警告について効率的にソースコードの修正作業を行なうことができる。
【０１３７】
（２）本実施形態の警告対象個数、同一内容によるフィルタリング処理においては、評価支援サーバ２０の制御部２１は、実質的な影響が小さい警告かどうかについての判定処理を実行する（ステップＳ３−１）。実質的な影響が小さい警告と判定した場合（ステップＳ３−１において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、フィルタリングのための第１基準値を取得し（ステップＳ３−２）、警告対象個数が第１基準値以上かどうかについての判定処理を実行する（ステップＳ３−３）。警告対象個数が第１基準値以上の場合（ステップＳ３−３において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、警告のフィルタリング処理を実行する（ステップＳ３−４）。これにより、影響が小さく、数が多い警告についてはフィルタリングされるので、修正作業の効率化を図ることができる。
【０１３８】
（３）本実施形態の警告対象個数、同一内容によるフィルタリング処理においては、評価支援サーバ２０の制御部２１は、警告メッセージが共通する警告の警告対象個数の算出処理を実行する（ステップＳ３−６）。次に、警告メッセージが共通する警告毎に、評価支援サーバ２０の制御部２１は、フィルタリングのための第２基準値の取得処理を実行する（ステップＳ３−７）。警告対象個数が第２基準値以上の場合（ステップＳ３−８において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、同一警告内容のフィルタリング処理を実行する（ステップＳ３−９）。これにより、影響が小さく、同じパターンで発生している警告については、開発部署におけるコーディング手法の一つと判断してフィルタリングされるので、修正作業の効率化を図ることができる。
【０１３９】
（４）本実施形態のループ内違反警告のフィルタリング処理においては、評価支援サーバ２０の制御部２１は、警告対象のコードの取得処理を実行する（ステップＳ４−１）。基準行数以下の場合（ステップＳ４−２において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、処理対象の警告のフィルタリング処理を実行する（ステップＳ４−３）。これにより、行数が少ないループについては可読性への影響が少ないので、警告をフィルタリングして修正作業の効率化を図ることができる。
【０１４０】
（５）本実施形態のフィルタリング救済処理においては、評価支援サーバ２０の制御部２１は、警告に対する対応履歴の取得処理を実行する（ステップＳ５−１）。修正対象情報が記録されており、修正対象と判定した場合（ステップＳ５−２において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、フィルタリング対象から取り除く処理を実行する（ステップＳ５−３）。これにより、フィルタリングロジックにより対象外とされた警告であっても、判定結果に応じて除外されるので、システム開発部署の判断に応じた解析結果評価レポートを提供することができる。
【０１４１】
（６）本実施形態のレポート作成処理においては、評価支援サーバ２０の制御部２１は、同じプログラムで初出の警告かどうかについての判定処理を実行する（ステップＳ６−２）。同じプログラムで初出の警告ではないと判定した場合（ステップＳ６−２において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、同じプログラムでの対応の検索処理を実行する（ステップＳ６−３）。そして、評価支援サーバ２０の制御部２１は、フィードバックにおいて修正対応かどうかについての判定処理を実行する（ステップＳ６−４）。フィードバックにおいて修正対応でないと判定した場合（ステップＳ６−４において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、警告の削除処理を実行する（ステップＳ６−５）。これにより、既に修正不要と判断されている場合には、解析結果評価レポートから警告を除外されるので、修正作業の効率化を図ることができる。
【０１４２】
更に、前回のフィードバックにおいて「修正する」と判定した場合（ステップＳ６−６において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、前回修正もれフラグの付加処理を実行する（ステップＳ６−７）。これにより、先の警告に対する修正漏れを注意喚起することができる。
【０１４３】
（７）本実施形態のレポート作成処理においては、評価支援サーバ２０の制御部２１は、自システムで初出の警告かどうかについての判定処理を実行する（ステップＳ７−１）。自システムで初出の警告ではないと判定した場合（ステップＳ７−１において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、処理対象の警告について自システムでの直近の対応の検索処理（ステップＳ７−２）、対応状況の算出処理（ステップＳ７−３）、参考情報の付加処理（ステップＳ７−４）を実行する。これにより、直近の対応状況に基づいて、同様の方針で修正の要否を判断することができる。
【０１４４】
更に、評価支援サーバ２０の制御部２１は、処理対象の警告について自システムでの対応の検索処理（ステップＳ７−５）、対応状況の算出処理（ステップＳ７−６）、参考情報の付加処理（ステップＳ７−７）を実行する。これにより、自システムにおける対応状況に基づいて、同様の方針で修正の要否を判断することができる。
【０１４５】
（８）本実施形態のレポート作成処理においては、評価支援サーバ２０の制御部２１は、全システムで初出の警告かどうかについての判定処理を実行する（ステップＳ７−８）。全システムで初出の警告ではないと判定した場合（ステップＳ７−８において「ＮＯ」の場合）、評価支援サーバ２０の制御部２１は、処理対象の警告について全システムでの対応の検索処理（ステップＳ７−９）、対応状況の算出処理（ステップＳ７−１０）、参考情報の付加処理（ステップＳ７−１１）を実行する。これにより、対応方針の全体的な傾向に基づいて、ソースコードの修正の要否を判断することができる。特に、自システムにおける初出の警告について、他システムにおける対応状況を参考にして判断することができる。
【０１４６】
（９）本実施形態のレポート作成処理においては、修正されたソースコードと判定した場合（ステップＳ７−１２において「ＹＥＳ」の場合）、評価支援サーバ２０の制御部２１は、今回修正フラグの記録処理を実行する（ステップＳ７−１３）。これにより、ソースコードの修正状況を参考にしながら、警告についての修正要否を判断することができる。
【０１４７】
（１０）本実施形態のレポート作成処理においては、評価支援サーバ２０の制御部２１は、レア度の評価処理（ステップＳ７−１４）、レア情報の付加処理（ステップＳ７−１５）を実行する。これにより、処理対象の警告の発生状況を参考にしながら、ルール違反の発生原因を検討したり、修正作業を行なったりすることができる。他のシステムでは検知されていない警告であることから、重点的に修正の要否の検討を促すことができる。
【０１４８】
（１１）本実施形態では、クライアント端末１０、解析サーバ３０に、ネットワークを介して接続された評価支援サーバ２０を用いる。クライアント端末１０においてコーディングを行なうとともに、解析サーバ３０においてソースコードの静的解析を行なう。これにより、解析サーバ３０とは別に評価支援サーバ２０を設けるので、既存の静的解析システムを利用しながら、警告のフィルタリングを行なうことができる。例えば、ネットワークを介してのクラウドサービスとして提供することができる。
【０１４９】
なお、上記各実施形態は以下のように変更してもよい。
・  上記実施形態では、クライアント端末１０においてコーディングを行なうとともに、解析サーバ３０においてソースコードの静的解析を行なう。そして、評価支援サーバ２０において、静的解析処理により作成された解析結果を評価する。ここで、静的解析の解析結果を評価するシステムのハードウェア構成は、これに限定されるものではない。例えば、クライアント端末１０において、静的解析の解析結果を評価するようにしてもよい。この場合には、クライアント端末１０に、ソースコード記憶部２２〜解析結果評価記憶部２８を設けるとともに、端末制御部１１を情報登録手段２１１〜フィードバック登録手段２１４として機能させる。これにより、クライアント端末１０において、警告のフィルタリングを行なうことができる。
【０１５０】
また、解析サーバ３０において、静的解析の解析結果を評価するようにしてもよい。この場合には、解析サーバ３０に、フィルタリングロジック記憶部２５、フィルタリング対象記憶部２６、フィードバック記憶部２７、解析結果評価記憶部２８を設ける。そして、解析サーバ３０において、解析結果評価処理（ステップＳ１−９）、解析結果評価レポートの送信処理（ステップＳ１−１０）、フィードバックの登録処理（ステップＳ１−１３）を実行する。これにより、解析サーバ３０において、静的解析及び警告のフィルタリングを行なうことができる。
【０１５１】
また、クライアント端末１０において、解析サーバ３０におけるソースコードの静的解析を行なうようにしてもよい。この場合には、クライアント端末１０に静的解析ツール３１を設ける。更に、クライアント端末１０において、解析サーバ３０におけるソースコードの静的解析や、評価支援サーバ２０における解析結果の評価を行なうようにしてもよい。この場合には、クライアント端末１０に、ソースコード記憶部２２〜解析結果評価記憶部２８、静的解析ツール３１を設けるとともに、端末制御部１１を情報登録手段２１１〜フィードバック登録手段２１４として機能させる。
【０１５２】
・  上記実施形態では、開発システムにおいて用いられるソースコードについて静的解析を行ない、この解析結果において出力された警告を評価する。このソースコードの開発部署を特定するための識別子として部署ＩＤを用いる。ここで、一企業において用いられるソースコードの解析結果への適用に限定されるものではなく、複数の企業における開発部署において作成されたソースコードを評価することも可能である。この場合には、この部署ＩＤに、企業を特定する識別子を含めておく。これにより、複数の企業において作成されたソースコードについての解析結果を集約して評価することができる。
【０１５３】
・  上記実施形態では、評価支援サーバ２０の制御部２１は、対応状況の算出処理を実行する（ステップＳ７−３、Ｓ７−６、Ｓ７−１０）。ここで、過去に出力された警告であって、フィードバックコード（「５」，「６」）の「将来の案件で修正」については、対応状況の算出方法を変更するようにしてもよい。例えば、システム名、ソース名、ルールＩＤが共通する警告については、判定結果数を１回のみカウントする。将来の修正予定対象についての警告については、修正されるまで何度も出現するので、このような警告についての重複したカウントを抑制することができる。
【０１５４】
・  上記実施形態では、フィルタリングロジック記憶部２５に記録されたロジックを用いて、警告のフィルタリングを行なう。本実施形態では、フィルタリングロジックとして、警告対象個数、同一内容によるフィルタリングロジック、ループ内違反警告のフィルタリングロジック、フィルタリング救済ロジック等が記録されている。フィルタリングロジックはこれらに限定されるものではなく、一部のフィルタリングロジックのみを用いたり、他のフィルタリングロジックを付加したりしてもよい。例えば、ループ内違反警告のフィルタリングロジックのように、ソースコードを必要とするフィルタリングロジックを利用しないことも可能である。この場合には、ソースコードを入手することなく、解析結果評価処理（ステップＳ１−９）を実行することができる。
【０１５５】
・  上記実施形態では、フィルタリングロジック記憶部２５に記録されたロジックを用いて、警告のフィルタリングを行なう。ここで、フィルタリングを行なう条件を、システム名、システム規模、組織、開発担当者等に応じて決定することも可能である。
【０１５６】
例えば、システム名に応じて、評価対象リストに記録された第１基準値及び第２基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールＩＤ及びシステム名に関連付けてフィルタリング条件（第１基準値及び第２基準値）に関するデータを記録しておく。そして、解析結果レポートの評価を行なう場合、解析結果評価手段２１２は、ソースコードが用いられる開発システムのシステム名を特定する。次に、解析結果評価手段２１２は、システム名に応じた第１基準値及び第２基準値を評価対象リストから取得する。
【０１５７】
また、システム規模に応じて、評価対象リストに記録された第１基準値及び第２基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールＩＤ及びシステム規模に関連付けてフィルタリング条件（第１基準値及び第２基準値）に関するデータを記録しておく。更に、評価支援サーバ２０に、システム名に関連付けてシステム規模を記録したシステム情報記憶部を設ける。そして、解析結果レポートの評価を行なう場合、解析結果評価手段２１２は、ソースコードが用いられる開発システムのシステム名を特定する。次に、解析結果評価手段２１２は、システム情報記憶部において、システム名に基づいてシステム規模を特定し、このシステム規模に応じた第１基準値及び第２基準値を評価対象リストから取得する。
【０１５８】
また、組織に応じて、評価対象リストに記録された第１基準値及び第２基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールＩＤ及び部署ＩＤに関連付けて第１基準値及び第２基準値に関するデータを記録しておく。
【０１５９】
また、開発担当者に応じて、評価対象リストに記録された第１基準値及び第２基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールＩＤ及び開発担当者ＩＤに関連付けて第１基準値及び第２基準値に関するデータを記録しておく。更に、「＠ａｕｔｈｏｒ」タグ等を利用して、ソースコードに記録された開発担当者を特定する。そして、解析結果評価手段２１２は、フィードバック記憶部２７において、特定した開発担当者に関連付けて警告の発生状況や判定結果を記録しておく。
【０１６０】
・  上記実施形態では、評価支援サーバ２０の制御部２１は、解析結果評価レポートに含める警告の特定処理を実行する（ステップＳ２−３）。そして、評価支援サーバ２０の制御部２１は、レポート作成処理を実行する（ステップＳ２−４）。これに代えて、解析結果レポートファイル２４０に記録されているすべての警告を解析結果評価レポートに含めるようにしてもよい。この場合には、解析結果評価レポートにおいて、フィルタリング対象の警告を識別できるように表示する。
【０１６１】
・  上記実施形態では、評価支援サーバ２０の制御部２１は、レポートの作成処理を実行する（ステップＳ２−４）。この解析結果評価レポートには、前回修正漏れ〜レア度に関する情報を含める。この解析結果評価レポートに含める情報は、上記情報に限定されるものではなく、一部の情報に限定したり、他の情報を含めたりしてもよい。また、開発部署や開発担当者に応じて、内容を変更するようにしてもよい。例えば、「＠ａｕｔｈｏｒ」タグ等を利用して特定された開発担当者については、フィードバックコード毎に件数を記録するようにしてもよい。
レア度の評価についても、開発担当者における警告件数を算出し、この件数に対応させたレア度を算出して、解析結果評価レポートに含めるようにしてもよい。
【０１６２】
・  上記実施形態では、評価支援サーバ２０の制御部２１は、修正されたソースコードかどうかについての判定処理を実行する（ステップＳ７−１２）。ここでは、修正情報記憶部２３において、同じシステム名、ソース名及び解析日が記録された修正管理レコード２３０を検索する。これに代えて、ソース名やソースコードのバージョン情報に基づいて、修正されたソースコードかどうかを判定するようにしてもよい。この場合、ソースコード記憶部２２に同じソース名のソースコードが記録されている場合には、修正されたソースコードと判定する。
【０１６３】
更に、評価支援サーバ２０の制御部２１が、ソースコード記憶部２２に記録されている同じソース名のソースコードと、新たに取得したソースコードとを比較することにより、修正されたソースコードかどうかについての判定するようにしてもよい。この場合、両者に差異を検出した場合に、修正されたソースコードと判定する。
【０１６４】
更に、評価支援サーバ２０の制御部２１が、バージョン情報を用いて、元のソースコードを特定し、評価対象のソースコードと比較することにより、修正箇所を特定するようにしてもよい。
【０１６５】
・  上記実施形態では、解析結果評価レポートに、参考情報として、自システム直近判定結果、自システム過去判定結果、全システム過去判定結果を含める。解析結果評価レポートに含める参考情報はこれらに限定されるものではなく、これらの一部や他の情報を含めるようにしてもよい。例えば、参考情報として同一ソース直近判定結果を含めるようにしてもよい。この場合には、フィードバック記憶部２７から、同じ開発システムの同一プログラム（ソースコード）における、直近の警告対応についてのフィードバックコードを取得し、解析結果評価レポートに含める。
【符号の説明】
【０１６６】
１０…クライアント端末、１１…端末制御部、１１１…コード作成手段、１１２…解析支援手段、２０…評価支援サーバ、２１…制御部、２１１…情報登録手段、２１２…解析結果評価手段、２１３…レポート作成手段、２１４…フィードバック登録手段、２２…ソースコード記憶部、２３…修正情報記憶部、２４…解析結果レポート記憶部、２５…フィルタリングロジック記憶部、２６…フィルタリング対象記憶部、２７…フィードバック記憶部、２８…解析結果評価記憶部、３０…解析サーバ、３１…静的解析ツール、３２…ソースコード記憶部。
【図１】
0005335885.tif 000002
【図２】
0005335885.tif 000003
【図３】
0005335885.tif 000004
【図４】
0005335885.tif 000005
【図５】
0005335885.tif 000006
【図６】
0005335885.tif 000007
【図７】
0005335885.tif 000008
【図８】
0005335885.tif 000009
【図９】
0005335885.tif 000010