JP5335885B2 - 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム - Google Patents
解析結果評価システム、解析結果評価方法及び解析結果評価プログラム Download PDFInfo
- Publication number
- JP5335885B2 JP5335885B2 JP2011282675A JP2011282675A JP5335885B2 JP 5335885 B2 JP5335885 B2 JP 5335885B2 JP 2011282675 A JP2011282675 A JP 2011282675A JP 2011282675 A JP2011282675 A JP 2011282675A JP 5335885 B2 JP5335885 B2 JP 5335885B2
- Authority
- JP
- Japan
- Prior art keywords
- analysis result
- warning
- evaluation
- recorded
- feedback
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
本発明は、ソースコードの静的解析において出力された警告を評価するための解析結果評価システム、解析結果評価方法及び解析結果評価プログラムに関する。
システム開発において作成されたソースコードにおいては、バグを除去するために、プログラムを実際に実行させて解析を行なう動的解析が行なわれている。更に、潜在的なバグ、コーディング規約違反や拡張性といった保守性を担保するために、プログラムを動作させずに、ソースやクラスファイルを構造的に解析して、問題がないかどうかを確認する静的解析も行なわれる。
例えば、ソースコードの静的解析作業を支援して、その解析手順を効率化するためのソースコード静的解析支援システムも検討されている(例えば、特許文献1を参照。)。この文献に記載されたシステムにおいては、ソースコードの静的解析を依頼する端末装置から、ソースコードの静的解析の実施に必要な解析対象情報を受信する。そして、端末装置から受信した解析対象情報を用いてソースコードの静的解析を行ない、その解析結果を端末装置へ送信する。
更に、ルールの重要度に応じて、静的解析を行なうシステムも検討されている(例えば、特許文献2を参照。)。この文献に記載されたシステムにおいては、複数のフェーズ段階でソースプログラムを編集しながら進められるプログラム開発において、各フェーズでの修正によって解消された指摘の件数を求め、より後のフェーズのプログラム修正によって改善されたルールの重要度を上げる。そして、静的解析により求めたコーディングルールを満たしていない箇所を、そのコーディングルールの重要度とともに表示する。
更に、静的解析済みのソースプログラムに対して追加又は修正を行なったプログラムを、再度静的解析を行なう場合もある。この場合、既に解析を行なっているソースプログラムに対する警告メッセージは出力装置に表示させず、追加又は修正したソースプログラムに対する警告メッセージを出力装置に表示させるシステムも検討されている(例えば、特許文献3を参照。)。この文献に記載されたシステムにおいては、前回ソースプログラムの解析を行なったソースプログラムバージョンとその際使用したコーディング規約バージョン及び前々回ソースプログラムの解析を行なったソースプログラムバージョンを保持する。更に、最新のコーディング規約の中で今回対象のコーディング規約を抽出し、コーディング規約を使用してソースプログラムの解析を行なう。そして、解析結果を使用して、検出した警告メッセージの制御を行なう。
この静的解析において、予め定められたルールと異なる場合には、すべて警告対象となる。しかしながら、静的解析に使用するコーディング基準に対するルールには、バグに直結するものや、保守性の向上のためにコーディングスタイルを統一するものなど、様々な種類がある。特に、ソースコードが利用されるシステムや、そのソースコードの開発を担当する部署によっては、コーディング手法(コーディング規約)が異なる場合もある。また、業務仕様上、問題がない場合や、システム設計の違いにより、コーディング規約が異なる場合もある。このような相違から生ずる警告においては、プログラム実行において実質的に影響がない。従って、すべての警告について対応を検討したり、一律に修正を行なっていたりしたのでは、迅速かつ効率的なシステム開発を行なうことが困難となる。
更に、開発担当者や開発部署において、これまでに経験したことがない種類の警告を受けた場合には、この警告に対する対応についての判断を迷うこともある。
更に、開発担当者や開発部署において、これまでに経験したことがない種類の警告を受けた場合には、この警告に対する対応についての判断を迷うこともある。
本発明は、上記問題点を解決するためになされたものであり、その目的は、ソースコードの静的解析において出力された警告について、開発部署において効率的に対応できる解析結果評価レポートを作成するための解析結果評価システム、解析結果評価方法及び解析結果評価プログラムを提供することにある。
上記問題点を解決するために、請求項1に記載の発明は、開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムであって、前記制御手段が、前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段と、前記対応方針に基づいて、前記警告の評価情報を作成する手段と、前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段と、前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段とを備えたことを要旨とする。
請求項2に記載の発明は、請求項1に記載の解析結果評価システムにおいて、前記解析結果に含まれる警告の警告種別について、前記フィードバック情報記憶手段から、他の開発システムにおける対応方針を取得し、前記取得した対応方針を含めた評価情報を作成し、前記評価情報を解析結果評価レポートに含めることを要旨とする。
請求項3に記載の発明は、請求項1又は2に記載の解析結果評価システムにおいて、前記解析結果に含まれる警告の警告種別について、前記開発システムにおける対応方針として、前記フィードバック情報記憶手段に修正しない旨の対応方針が記録されている場合には、前記解析結果評価レポートに前記警告を含めないことを要旨とする。
請求項4に記載の発明は、請求項1〜3のいずれか一つに記載の解析結果評価システムにおいて、警告の警告種別に対して、フィルタリング条件を記録したフィルタ情報記憶手段を更に備え、前記制御手段が、前記フィルタ情報記憶手段に記録された前記フィルタリング条件を満たす警告については、前記解析結果評価レポートに前記警告を含めないことを要旨とする。
請求項5に記載の発明は、請求項1〜4のいずれか一つに記載の解析結果評価システムにおいて、前記制御手段が、前記解析結果において、同じ警告種別の警告の個数を算出し、前記個数に基づいて前記警告種別に対する評価結果を変更することを要旨とする。
請求項6に記載の発明は、開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析する方法であって、前記制御手段が、前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する段階と、前記対応方針に基づいて、前記警告の評価情報を作成する段階と、前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する段階と、前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する段階とを実行することを要旨とする。
請求項7に記載の発明は、開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析するためのプログラムであって、前記制御手段を、前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段、前記対応方針に基づいて、前記警告の評価情報を作成する手段、前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段、前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段として機能させることを要旨とする。
(作用)
請求項1、6、7に記載の発明によれば、制御手段が、解析結果情報記憶手段に記録された解析結果に含まれる警告の警告種別を特定し、フィードバック情報記憶手段から、警告種別について、開発システムにおける対応方針を取得する。次に、対応方針に基づいて、警告の評価情報を作成する。そして、評価情報を含めた解析結果評価レポートを作成し、クライアント端末に提供する。これにより、フィードバックによって取得した対応方針を考慮して、解析結果に含まれる警告についての対応を決定することができる。
請求項1、6、7に記載の発明によれば、制御手段が、解析結果情報記憶手段に記録された解析結果に含まれる警告の警告種別を特定し、フィードバック情報記憶手段から、警告種別について、開発システムにおける対応方針を取得する。次に、対応方針に基づいて、警告の評価情報を作成する。そして、評価情報を含めた解析結果評価レポートを作成し、クライアント端末に提供する。これにより、フィードバックによって取得した対応方針を考慮して、解析結果に含まれる警告についての対応を決定することができる。
更に、制御手段が、クライアント端末から、解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、フィードバックに基づいて、フィードバック情報記憶手段に記録された対応方針を更新する。これにより、フィードバックに応じて対応方針が更新されるので、警告に対する過去の対応に基づいて、新たな警告に対する判断を行なうことができる。
請求項2に記載の発明によれば、解析結果に含まれる警告の警告種別について、フィードバック情報記憶手段から、他の開発システムにおける対応方針を取得し、取得した対応方針を含めた評価情報を作成し、評価情報を解析結果評価レポートに含める。これにより、他の開発システムにおける対応方針を参考にして、警告に対する対応を決定することができる。
請求項3に記載の発明によれば、解析結果に含まれる警告の警告種別について、開発システムにおける対応方針として、フィードバック情報記憶手段に修正しない旨の対応方針が記録されている場合には、解析結果評価レポートに警告を含めない。これにより、過去の対応方針により警告が絞り込まれるので、効率的に対応方針を決定することができる。
請求項4に記載の発明によれば、制御手段が、フィルタ情報記憶手段に記録されたフィルタリング条件を満たす警告については、解析結果評価レポートに警告を含めない。これにより、フィルタリング条件により警告が絞り込まれるので、効率的に対応方針を決定することができる。
請求項5に記載の発明によれば、制御手段が、解析結果において、同じ警告種別の警告の個数を算出し、個数に基づいて警告種別に対する評価結果を変更する。これにより、警告の発生状況に応じて、解析結果評価レポートに含める警告を絞り込むことができる。
本発明によれば、ソースコードの静的解析において出力された警告について、開発部署において効率的に対応できる解析結果評価レポートを作成するための解析結果評価システム、解析結果評価方法及び解析結果評価プログラムを提供することができる。
以下、本発明を具体化した一実施形態を、図1〜図9を用いて説明する。本実施形態では、開発システムにおいて用いられるソースコードについて静的解析を行ない、この解析結果において出力された警告を評価するための解析結果評価システムを想定する。本実施形態の解析結果評価システムでは、図1に示すように、クライアント端末10及び解析サーバ30に、ネットワークを介して接続された評価支援サーバ20を用いる。
クライアント端末10は、開発システムにおいて用いられるプログラム(ソースコード)のコーディングを行なう開発部署の担当者(開発担当者)が使用するコンピュータ端末である。このクライアント端末10は、ネットワークを介してデータを送信する機能や、受信したデータを表示する機能等を有する。このため、クライアント端末10は、端末制御部11、図示しないキーボード、マウス等の入力手段、ディスプレイ等の出力手段、通信手段、コーディングされたソースコードを格納するデータ記憶部等を備えている。
この端末制御部11は、図示しないCPU等の制御手段、RAM及びROM等のメモリを有し、解析結果評価処理を実行する。具体的には、後述する各処理(コード作成段階、解析支援段階等の各処理)を実行する。このためのコーディング支援プログラムを実行することにより、端末制御部11は、図1に示すように、コード作成手段111、解析支援手段112として機能する。
コード作成手段111は、開発システムにおいて用いるプログラムについて、コーディングの支援処理を実行する。
解析支援手段112は、静的解析を行なうための支援処理を実行する。具体的には、コーディングされたソースコードを解析サーバ30に送信する。更に、解析支援手段112は、評価支援サーバ20から、解析結果評価レポートを受信する。更に、解析支援手段112は、ソースコード、解析結果評価レポート、システム開発において修正されたソースコードを特定する情報(修正ソースコード情報)を、評価支援サーバ20に送信する。更に、解析支援手段112は、解析結果評価レポートに対するフィードバックを、評価支援サーバ20に送信する。
解析支援手段112は、静的解析を行なうための支援処理を実行する。具体的には、コーディングされたソースコードを解析サーバ30に送信する。更に、解析支援手段112は、評価支援サーバ20から、解析結果評価レポートを受信する。更に、解析支援手段112は、ソースコード、解析結果評価レポート、システム開発において修正されたソースコードを特定する情報(修正ソースコード情報)を、評価支援サーバ20に送信する。更に、解析支援手段112は、解析結果評価レポートに対するフィードバックを、評価支援サーバ20に送信する。
解析サーバ30は、クライアント端末10において作成されたソースコードについて、静的解析を行なうコンピュータシステムである。この解析サーバ30は、静的解析ツール31、ソースコード記憶部32を備えている。
静的解析ツール31は、ソースコードにおいて、バグを生じる可能性があるコードや、一般的にコーディング規約違反とされるコードを特定し、特定したコードについての警告を含めた解析結果レポートを出力する。このために、静的解析ツール31は、バグとなるコードパターンや、コーディング規約に反するコードパターン等、ルール違反となるパターンを記憶しており、これらのパターンに該当するコードを検出する。
ソースコード記憶部32には、クライアント端末10から取得したソースコードが記憶される。本実施形態では、ソースコードとして、例えば、Java(登録商標)によって作成されたプログラムを用いる。このソースコード記憶部32においては、ソース名が付与されたソースコードとともに、このソースコードを取得したクライアント端末10の連絡先(例えば、開発担当者の電子メールアドレス)が記録される。
評価支援サーバ20は、解析サーバ30において、静的解析により作成された解析結果レポートを評価するコンピュータシステムである。この評価支援サーバ20は、制御部21、ソースコード記憶部22、修正情報記憶部23、解析結果レポート記憶部24、フィルタリングロジック記憶部25、フィルタリング対象記憶部26、フィードバック記憶部27、解析結果評価記憶部28を備えている。
この制御部21は、図示しないCPU等の制御手段、RAM及びROM等のメモリを有し、解析結果評価処理を実行する。具体的には、後述する各処理(情報登録段階、解析結果評価段階、レポート作成段階、フィードバック登録段階等の各処理)を実行する。このための解析結果評価プログラムを実行することにより、評価支援サーバ20の制御部21は、図1に示すように、情報登録手段211、解析結果評価手段212、レポート作成手段213、フィードバック登録手段214として機能する。
情報登録手段211は、クライアント端末10から、ソースコードや、静的解析により作成された解析結果レポートを取得し、それぞれソースコード記憶部22、解析結果レポート記憶部24に記録する処理を実行する。更に、情報登録手段211は、クライアント端末10から、修正されたソースコードを特定する情報(修正ソースコード情報)を取得し、修正情報記憶部23に記録する処理を実行する。
解析結果評価手段212は、解析結果レポート記憶部24に記録された解析結果レポートファイル240に含まれる各警告の内容を評価する処理を実行する。
レポート作成手段213は、警告内容の評価に基づいて、解析結果評価レポートを作成する処理を実行する。このレポート作成手段213は、警告発生のレア度を評価するためのレア度基準値に関するデータを保持している。
レポート作成手段213は、警告内容の評価に基づいて、解析結果評価レポートを作成する処理を実行する。このレポート作成手段213は、警告発生のレア度を評価するためのレア度基準値に関するデータを保持している。
フィードバック登録手段214は、解析結果評価レポートに対するフィードバックを、クライアント端末10から受信し、フィードバック記憶部27に記録する処理を実行する。
ソースコード記憶部22には、クライアント端末10においてコーディングされ、静的解析が行なわれたソースコードが記録されている。このソースコードには、このソースコードが用いられる開発対象のシステムを特定する情報(システム名)や、開発部署を特定するための情報(部署ID)、静的解析が行なわれた年月日(解析日)に関するデータが関連付けられて記録される。
修正情報記憶部23には、図2(a)に示すように、修正されたソースコードを特定するための修正管理レコード230が記録されている。この修正管理レコード230は、クライアント端末10から修正ソースコード情報を取得した場合に記録される。修正管理レコード230は、システム名、ソース名、部署ID、解析日に関するデータを含んで構成される。
システム名データ領域には、解析対象のソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
ソース名データ領域には、修正されたソースコード(プログラム)を特定するための識別子(ここでは、ソース名)に関するデータが記録される。
部署IDデータ領域には、このソースコードの開発部署を特定するための識別子に関するデータが記録される。
解析日データ領域には、静的解析を行なった年月日に関するデータが記録される。
ソース名データ領域には、修正されたソースコード(プログラム)を特定するための識別子(ここでは、ソース名)に関するデータが記録される。
部署IDデータ領域には、このソースコードの開発部署を特定するための識別子に関するデータが記録される。
解析日データ領域には、静的解析を行なった年月日に関するデータが記録される。
解析結果レポート記憶部24は解析結果情報記憶手段として機能する。この解析結果レポート記憶部24には、図2(b)に示すように、ソースコードの静的解析により作成された解析結果についての解析結果レポートファイル240が記録される。この解析結果レポートファイル240は、クライアント端末10から解析結果レポートを受信した場合に記録される。解析結果レポートファイル240は、システム名、解析日、種別、ルール、ルールID、ソース名、行番号、警告メッセージに関するデータを含んで構成される。
システム名データ領域には、解析対象のソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、静的解析を行なった年月日に関するデータが記録される。
種別データ領域には、静的解析において出力された問題があるコーディング(ルール違反)の種類に関するデータが記録される。この種別には、「データベース接続」、「プログラミング」、「バグの可能性」等がある。
解析日データ領域には、静的解析を行なった年月日に関するデータが記録される。
種別データ領域には、静的解析において出力された問題があるコーディング(ルール違反)の種類に関するデータが記録される。この種別には、「データベース接続」、「プログラミング」、「バグの可能性」等がある。
ルールデータ領域には、この種別において、警告対象の根拠となるルールの内容に関するデータが記録される。
ルールIDデータ領域には、警告対象の根拠となるルールを特定するための識別子(警告種別)に関するデータが記録される。
ルールIDデータ領域には、警告対象の根拠となるルールを特定するための識別子(警告種別)に関するデータが記録される。
ソース名データ領域には、警告対象のコードを含むプログラムを特定するための識別子に関するデータが記録される。
行番号データ領域には、このソースにおいて、警告対象のコードが記載された位置を特定するための行番号に関するデータが記録される。
警告メッセージデータ領域には、警告されたルール違反の内容に関するデータが記録される。
行番号データ領域には、このソースにおいて、警告対象のコードが記載された位置を特定するための行番号に関するデータが記録される。
警告メッセージデータ領域には、警告されたルール違反の内容に関するデータが記録される。
フィルタリングロジック記憶部25はフィルタ情報記憶手段として機能する。このフィルタリングロジック記憶部25には、図2(c)に示すように、解析結果レポートファイル240に含まれる警告についてフィルタリング(表示の削除)の要否を判定するためのフィルタリングロジックデータ250が記録されている。このフィルタリングロジックデータ250は、フィルタリング対象の警告を特定するためのロジックが登録された場合に記録される。後述するように、解析結果評価手段212が、フィルタリングロジックデータ250により、警告のフィルタリングや、フィルタリングの対象外とするための処理を行なう。本実施形態では、フィルタリングロジックとして、警告対象個数、同一内容によるフィルタリングロジック、ループ内違反警告のフィルタリングロジック、フィルタリング救済ロジック等が記録されている。
警告対象個数、同一内容によるフィルタリングロジックデータ250は、実質的な影響が小さいが、警告対象個数が多い警告や、ルール違反であるがコーディング手法の一つと考えられる警告をフィルタリングするためのロジックである。この警告対象個数、同一内容によるフィルタリングロジックデータ250には、実質的な影響が小さい警告についてのルールIDが記録された評価対象リストが保持されている。この評価対象リストにおいては、ルールIDに対して、警告対象個数を評価するための第1基準値及び第2基準値に関するデータが記録されている。
ループ内違反警告のフィルタリングロジックデータ250は、ループ内におけるループ制御変数の変更を禁止するルールを違反していることについての警告をフィルタリングするためのロジックである。このループ内違反警告のフィルタリングロジックデータ250には、フィルタリング対象を特定するために、ループ範囲についての基準行数に関するデータが記録されている。
フィルタリング救済のフィルタリングロジックデータ250は、フィルタリングされた警告を、過去の対応方針に基づいてフィルタリング対象から除外するためのロジックである。
フィルタリング対象記憶部26には、図2(d)に示すように、解析結果レポートファイル240に含まれる警告においてフィルタリング対象を特定するためのフィルタリング対象管理レコード260が記録されている。このフィルタリング対象管理レコード260は、解析結果評価処理を実行した場合に記録される。フィルタリング対象管理レコード260は、システム名、解析日、ルールID、ソース名、行番号に関するデータを含んで構成される。
システム名データ領域には、ソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
ルールIDデータ領域には、警告対象のルールを特定するための識別子に関するデータが記録される。
ソース名データ領域には、静的解析において警告対象のルール違反が含まれるプログラムを特定するための識別子に関するデータが記録される。
ソース名データ領域には、静的解析において警告対象のルール違反が含まれるプログラムを特定するための識別子に関するデータが記録される。
行番号データ領域には、警告対象のコード位置を特定するための行番号に関するデータが記録される。本実施形態では、フィルタリング対象管理レコード260において、ルールIDに対してソース名や行番号が記録されていない場合には、このルールIDについてのすべての警告をフィルタリング対象とする。一方、フィルタリング対象管理レコード260において、ルールIDに対してソース名や行番号が記録されている場合には、ソース名や行番号によって指定された警告のみをフィルタリング対象とする。
フィードバック記憶部27はフィードバック情報記憶手段として機能する。このフィードバック記憶部27には、図2(e)に示すように、解析結果評価レポートに対するフィードバックを管理するためのフィードバック管理レコード270が記録されている。このフィードバック管理レコード270は、クライアント端末10から、フィードバックを取得した場合に記録される。フィードバック管理レコード270は、システム名、解析日、ソース名、行番号、ルールID、判定結果に関するデータを含んで構成される。
システム名データ領域には、フィードバックがあったソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
ソース名データ領域には、フィードバックがあったプログラムを特定するための識別子に関するデータが記録される。
行番号データ領域には、警告対象のコード位置を特定するための行番号に関するデータが記録される。
行番号データ領域には、警告対象のコード位置を特定するための行番号に関するデータが記録される。
ルールIDデータ領域には、フィードバックがあった警告対象のルールを特定するための識別子に関するデータが記録される。
判定結果データ領域には、この警告対象のルールに対して開発部署の判断(対応方針)を特定するための識別子(フィードバックコード)に関するデータが記録される。本実施形態では、修正を行なうと判定した場合(修正対応)について6種類のフィードバックコード、修正しないと判定した場合(修正不要)について4種類のフィードバックコードを用いる。以下に、各種類のフィードバックコードを示す。
<修正対応>
・バグであり、修正する(今回の修正部位):「1」
・バグであり、修正する(既存部分):「2」
・バグとまでは言えないが、修正する(今回の修正部位):「3」
・バグとまでは言えないが、修正する(既存部分):「4」
・今回は見送るが、将来の案件で修正する(今回の修正部位):「5」
・今回は見送るが、将来の案件で修正する(既存部分):「6」
<修正不要>
・望ましくはないが、修正しない(今回の修正部位):「7」
・望ましくはないが、修正しない(既存部分):「8」
・バグではないため、修正しない(今回の修正部位):「9」
・バグではないため、修正しない(既存部分):「10」
判定結果データ領域には、この警告対象のルールに対して開発部署の判断(対応方針)を特定するための識別子(フィードバックコード)に関するデータが記録される。本実施形態では、修正を行なうと判定した場合(修正対応)について6種類のフィードバックコード、修正しないと判定した場合(修正不要)について4種類のフィードバックコードを用いる。以下に、各種類のフィードバックコードを示す。
<修正対応>
・バグであり、修正する(今回の修正部位):「1」
・バグであり、修正する(既存部分):「2」
・バグとまでは言えないが、修正する(今回の修正部位):「3」
・バグとまでは言えないが、修正する(既存部分):「4」
・今回は見送るが、将来の案件で修正する(今回の修正部位):「5」
・今回は見送るが、将来の案件で修正する(既存部分):「6」
<修正不要>
・望ましくはないが、修正しない(今回の修正部位):「7」
・望ましくはないが、修正しない(既存部分):「8」
・バグではないため、修正しない(今回の修正部位):「9」
・バグではないため、修正しない(既存部分):「10」
解析結果評価記憶部28には、図3に示すように、解析結果レポートファイル240に含まれる警告を評価した解析結果評価データ280が記録されている。この解析結果評価データ280は、解析結果評価処理を実行した場合に記録される。解析結果評価データ280には、システム名、解析日、ソース名、今回修正、警告一覧リストに関するデータが記録される。この警告一覧リストには、行番号、警告メッセージ、ルールID、判定結果、前回修正漏れ、自システム直近判定結果、自システム過去判定結果、全システム過去判定結果、レア度に関するデータが記録される。
システム名データ領域には、解析結果評価処理の処理対象のソースコードが用いられる開発システムを特定するための識別子に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
解析日データ領域には、このソースコードの静的解析が行なわれた年月日に関するデータが記録される。
ソース名データ領域には、静的解析が行なわれたプログラムの識別子に関するデータが記録される。
今回修正データ領域には、今回、修正されたソースコードかどうかを判定するためのフラグに関するデータが記録される。
今回修正データ領域には、今回、修正されたソースコードかどうかを判定するためのフラグに関するデータが記録される。
行番号データ領域には、警告対象のコード位置を特定するための行番号に関するデータが記録される。
警告メッセージデータ領域には、警告の内容に関するデータが記録される。
ルールIDデータ領域には、警告対象の根拠となるルールを特定するための識別子に関するデータが記録される。
警告メッセージデータ領域には、警告の内容に関するデータが記録される。
ルールIDデータ領域には、警告対象の根拠となるルールを特定するための識別子に関するデータが記録される。
判定結果データ領域には、この警告対象のルールに対して開発部署の判断を特定するための識別子(フィードバックコード)に関するデータが記録される。この判定結果は、クライアント端末10からのフィードバックに基づいて記録される。
前回修正漏れデータ領域には、前回のフィードバックにおいて修正対応としていた警告ついて、修正されていないことを示すフラグが記録される。
自システム直近判定結果データ領域には、同じ開発システムにおける、直近の警告対応についてのフィードバックコード毎に、判定結果件数に関するデータが記録される。
自システム直近判定結果データ領域には、同じ開発システムにおける、直近の警告対応についてのフィードバックコード毎に、判定結果件数に関するデータが記録される。
自システム過去判定結果データ領域には、同じ開発システムにおける、過去の全期間の警告対応についてのフィードバックコード毎に、判定結果件数に関するデータが記録される。
全システム過去判定結果データ領域には、他の開発システムを含む全システムにおける、過去の全期間の警告対応についてのフィードバックコード毎に、判定結果の割合に関するデータが記録される。
レア度データ領域には、この警告の発生頻度を特定するためのフラグが記録される。本実施形態では、発生頻度が低い場合に、レアフラグが記録される。
レア度データ領域には、この警告の発生頻度を特定するためのフラグが記録される。本実施形態では、発生頻度が低い場合に、レアフラグが記録される。
上記のように構成された解析結果評価システムを用いて、ソースコードの静的解析結果を評価するための処理手順を、図4〜図9に従って説明する。ここでは、全体フローの概要(図4)、解析結果評価処理(図5)、警告対象個数、同一内容によるフィルタリング処理(図6)、ループ内違反警告のフィルタリング処理(図7(a))、フィルタリング救済処理(図7(b))、レポート作成処理(図8、図9)の順番に説明する。
(全体フローの概要)
まず、全体フローの概要を、図4に従って説明する。
ここでは、クライアント端末10において、コーディングを行なう(ステップS1−1)。具体的には、開発担当者は、クライアント端末10の端末制御部11のコード作成手段111を用いて、開発システムのためのソースコードを作成する。そして、コード作成手段111は、作成されたソースコードに対して、ソース名を付与して、クライアント端末10内のデータ記憶部に格納する。
まず、全体フローの概要を、図4に従って説明する。
ここでは、クライアント端末10において、コーディングを行なう(ステップS1−1)。具体的には、開発担当者は、クライアント端末10の端末制御部11のコード作成手段111を用いて、開発システムのためのソースコードを作成する。そして、コード作成手段111は、作成されたソースコードに対して、ソース名を付与して、クライアント端末10内のデータ記憶部に格納する。
コーディングを終了した場合、クライアント端末10において、ソースコードの送信処理を実行する(ステップS1−2)。具体的には、開発担当者は、クライアント端末10の端末制御部11の解析支援手段112を用いて、解析サーバ30にアクセスする。この場合、解析サーバ30は、クライアント端末10のディスプレイに、ソースコード登録画面を出力する。このソースコード登録画面には、データ記憶部に格納されたソースコードの指定欄、開発担当者の連絡先の入力欄及び実行ボタンが設けられている。
次に、解析サーバ30は、ソースコードの登録処理を実行する(ステップS1−3)。具体的には、クライアント端末10のディスプレイに表示されたソースコード登録画面において、データ記憶部に格納された静的解析対象のソースコードを指定し、開発担当者の連絡先を入力する。そして、実行ボタンが押下された場合、解析サーバ30は、ソースコード、開発担当者の連絡先を取得する。そして、解析サーバ30は、取得したソースコードを、開発担当者の連絡先に関連付けてソースコード記憶部32に記録する。
次に、解析サーバ30は、静的解析処理を実行する(ステップS1−4)。具体的には、解析サーバ30の静的解析ツール31は、ソースコード記憶部32に記録されたソースコードの静的解析処理を実行し、解析結果レポートを作成する。この解析結果レポートには、解析日に関するデータが含まれる。更に、静的解析処理においてルール違反と判定された警告対象について、種別、ルール、ルールID、ソース名、行番号、警告メッセージに関するデータを含める。
次に、解析サーバ30は、解析結果レポートの送信処理を実行する(ステップS1−5)。具体的には、静的解析ツール31は、静的解析を行なったソースコードに関連付けられた連絡先をソースコード記憶部32から取得する。そして、静的解析ツール31は、作成した解析結果レポート、解析日に関するデータを、開発担当者の連絡先のクライアント端末10に送信する。
次に、クライアント端末10において、解析結果レポートの受信処理を実行する(ステップS1−6)。具体的には、クライアント端末10の端末制御部11の解析支援手段112は、受信した解析結果レポートを、解析日に関連付けて、クライアント端末10内のデータ記憶部に格納する。
次に、クライアント端末10において、解析結果評価依頼の送信処理を実行する(ステップS1−7)。具体的には、クライアント端末10を用いて、評価支援サーバ20にアクセスする。この場合、評価支援サーバ20の制御部21の情報登録手段211は、クライアント端末10のディスプレイに、解析結果評価依頼登録画面を出力する。この解析結果評価依頼登録画面には、データ記憶部に格納されたソースコード、解析結果レポートの指定欄が設けられている。更に、解析結果評価依頼登録画面には、開発部署の部署ID、ソースコードが利用されるシステム名、ソース名、解析日、修正ソースコード名の入力欄及び実行ボタンが設けられている。
次に、評価支援サーバ20の制御部21は、解析結果評価依頼の登録処理を実行する(ステップS1−8)。具体的には、クライアント端末10のディスプレイに表示された解析結果評価依頼登録画面において、データ記憶部に格納されたソースコード、解析結果レポートを指定する。更に、クライアント端末10のディスプレイに表示された解析結果評価依頼登録画面において、部署ID、システム名、ソース名、解析日を各入力欄に設定する。また、修正されたソースコードがある場合には、修正ソースコード名入力欄に、修正されたソースコードのソース名を設定する。
そして、実行ボタンが押下された場合、制御部21の情報登録手段211は、ソースコード、解析結果レポート、解析結果評価依頼登録画面に入力された部署ID、システム名、ソース名、解析日を取得する。更に、修正ソースコード名入力欄にソース名が設定されている場合には、修正されたソースコードのソース名を取得する。
そして、情報登録手段211は、クライアント端末10から取得した解析結果レポートを解析結果レポート記憶部24に記録する。更に、情報登録手段211は、ソースコードを、システム名、部署ID、解析日に関連付けてソースコード記憶部22に登録する。
更に、修正されたソースコードのソース名を取得した場合、情報登録手段211は、取得したソース名を記録した修正管理レコード230を生成し、修正情報記憶部23に記録する。この修正管理レコード230には、部署ID、解析日(年月日)を含める。
次に、評価支援サーバ20の制御部21は、解析結果評価処理を実行する(ステップS1−9)。具体的には、制御部21の解析結果評価手段212は、フィルタリングロジック記憶部25に記録されたフィルタリングロジックを用いて、解析結果レポートファイル240に含まれる警告についての評価処理を実行する。詳細は、図5〜図7を用いて後述する。
更に、制御部21の解析結果評価手段212は、解析結果評価記憶部28に記録された解析結果評価データ280を用いて、警告についての参考情報を含めた解析結果評価レポートを作成する。詳細は、図8〜図9を用いて後述する。
次に、評価支援サーバ20の制御部21は、解析結果評価レポートの送信処理を実行する(ステップS1−10)。具体的には、制御部21の解析結果評価手段212は、作成した解析結果評価レポートを、開発部署のクライアント端末10に送信する。
次に、クライアント端末10において、解析結果評価レポートの受信処理を実行する(ステップS1−11)。具体的には、クライアント端末10の端末制御部11の解析支援手段112は、評価支援サーバ20から受信した解析結果評価レポートをディスプレイに出力する。
次に、クライアント端末10において、フィードバックの送信処理を実行する(ステップS1−12)。具体的には、開発担当者は、クライアント端末10の端末制御部11の解析支援手段112を用いて、解析結果評価レポートに含まれる警告の内容を確認する。そして、修正要否を判断して判定結果を入力する。入力を完了した場合、解析支援手段112は、判定結果が入力された解析結果評価レポートについてのフィードバックを評価支援サーバ20に返信する。このフィードバックには、解析結果評価レポートに記録されたシステム名、解析日、ソース名、ルールID、判定結果に関するデータを含める。
次に、評価支援サーバ20の制御部21は、フィードバックの登録処理を実行する(ステップS1−13)。具体的には、制御部21のフィードバック登録手段214は、解析結果評価記憶部28に、各警告に対する判定結果を記録する。更に、フィードバック登録手段214は、クライアント端末10から取得したフィードバックに基づいて、フィードバック管理レコード270を生成し、フィードバック記憶部27に記録する。
次に、クライアント端末10において、ソースコードの修正を行なう(ステップS1−14)。具体的には、開発担当者は、解析結果評価レポートにおける判定結果に基づいて、クライアント端末10の端末制御部11のコード作成手段111を用いてソースコードを修正する。
(解析結果評価処理)
次に、解析結果評価処理を、図5に従って説明する。この解析結果評価処理は、評価支援サーバ20が、クライアント端末10から解析結果レポートを取得した場合に実行される。
次に、解析結果評価処理を、図5に従って説明する。この解析結果評価処理は、評価支援サーバ20が、クライアント端末10から解析結果レポートを取得した場合に実行される。
この処理においては、フィルタリングロジック記憶部25に記録されているロジックを順次、特定して、以下の処理を繰り返す。なお、フィルタリング救済ロジックについては最後に実行する。
ここでは、評価支援サーバ20の制御部21は、フィルタリング処理を実行する(ステップS2−1)。具体的には、制御部21の解析結果評価手段212は、フィルタリングロジックに基づいて解析結果レポートファイル240に含まれる警告対象の評価を行なう。本実施形態は、後述するように、警告対象個数、同一内容によるフィルタリングロジック、ループ内違反警告のフィルタリングロジック、フィルタリング救済ロジックを用いる場合を説明する。
すべてのロジックの処理を終了した場合、評価支援サーバ20の制御部21は、システムの特定処理を実行する(ステップS2−2)。具体的には、制御部21のレポート作成手段213は、解析結果レポート記憶部24の解析結果レポートファイル240に記録されているシステム名を特定する。
次に、評価支援サーバ20の制御部21は、解析結果評価レポートに含める警告の特定処理を実行する(ステップS2−3)。具体的には、制御部21のレポート作成手段213は、解析結果レポートファイル240に記録されている警告の中で、フィルタリング対象記憶部26に記録されていない警告を特定する。ここで、フィルタリング対象管理レコード260においてソース名や行番号が指定されていない場合には、フィルタリング対象管理レコード260のルールIDについて、すべての警告を解析結果評価レポートの対象外とする。一方、フィルタリング対象管理レコード260においてソース名や行番号が指定されている場合には、ソース名や行番号によって指定された警告を解析結果評価レポートの対象外とする。そして、レポート作成手段213は、フィルタリング対象管理レコード260に記録されていない警告を、解析結果評価レポートに含める警告として特定する。
そして、評価支援サーバ20の制御部21は、特定した警告毎に以下の処理を実行する。
次に、評価支援サーバ20の制御部21は、レポート作成処理を実行する(ステップS2−4)。具体的には、制御部21のレポート作成手段213は、特定した警告について参照情報を含めた解析結果評価レポートを作成する。
以上の処理を、特定されたすべての警告について実行する。
次に、評価支援サーバ20の制御部21は、レポート作成処理を実行する(ステップS2−4)。具体的には、制御部21のレポート作成手段213は、特定した警告について参照情報を含めた解析結果評価レポートを作成する。
以上の処理を、特定されたすべての警告について実行する。
(警告対象個数、同一内容によるフィルタリング処理)
次に、図6を用いて、警告対象個数、同一内容によるフィルタリング処理を実行する。このフィルタリング処理においては、実害がない警告であって、対象数が多い警告のフィルタリングを行なう。
次に、図6を用いて、警告対象個数、同一内容によるフィルタリング処理を実行する。このフィルタリング処理においては、実害がない警告であって、対象数が多い警告のフィルタリングを行なう。
ここでは、解析結果レポートファイル240に含まれる警告毎に、以下の処理を実行する。
まず、評価支援サーバ20の制御部21は、実質的な影響が小さい警告かどうかについての判定処理を実行する(ステップS3−1)。具体的には、制御部21の解析結果評価手段212は、フィルタリングロジック記憶部25に記録されている警告対象個数、同一内容によるフィルタリングロジックの評価対象リストを取得する。そして、解析結果評価手段212は、処理対象の警告についてのルールIDと、評価対象リストに記録されているルールIDとを比較する。処理対象の警告のルールIDが評価対象リストに記録されている場合には、実質的な影響が小さい警告と判定する。
まず、評価支援サーバ20の制御部21は、実質的な影響が小さい警告かどうかについての判定処理を実行する(ステップS3−1)。具体的には、制御部21の解析結果評価手段212は、フィルタリングロジック記憶部25に記録されている警告対象個数、同一内容によるフィルタリングロジックの評価対象リストを取得する。そして、解析結果評価手段212は、処理対象の警告についてのルールIDと、評価対象リストに記録されているルールIDとを比較する。処理対象の警告のルールIDが評価対象リストに記録されている場合には、実質的な影響が小さい警告と判定する。
ここで、処理対象の警告のルールIDが評価対象リストに記録されておらず、実質的な影響がある警告と判定した場合(ステップS3−1において「NO」の場合)、評価支援サーバ20の制御部21は、この警告についての処理を終了する。
一方、処理対象の警告のルールIDが評価対象リストに記録されており、実質的な影響が小さい警告と判定した場合(ステップS3−1において「YES」の場合)、評価支援サーバ20の制御部21は、フィルタリングのための第1基準値の取得処理を実行する(ステップS3−2)。具体的には、制御部21の解析結果評価手段212は、評価対象リストから、このルールIDに関連付けられた第1基準値を取得する。
次に、評価支援サーバ20の制御部21は、警告対象個数が第1基準値以上かどうかについての判定処理を実行する(ステップS3−3)。具体的には、制御部21の解析結果評価手段212は、解析結果レポート記憶部24に記録された解析結果レポートファイル240において、このルールIDが付与された警告の行番号の個数をカウントすることにより、警告対象個数を算出する。そして、解析結果評価手段212は、算出した警告対象個数と第1基準値とを比較する。
警告対象個数が第1基準値以上の場合(ステップS3−3において「YES」の場合)、評価支援サーバ20の制御部21は、警告のフィルタリング処理を実行する(ステップS3−4)。具体的には、制御部21の解析結果評価手段212は、システム名、解析日、処理対象の警告のルールIDについてのフィルタリング対象管理レコード260を生成し、フィルタリング対象記憶部26に記録する。そして、解析結果評価手段212は、この警告についての処理を終了する。
一方、警告対象個数が第1基準値より少ない場合(ステップS3−3において「NO」の場合)、評価支援サーバ20の制御部21は、警告メッセージの取得処理を実行する(ステップS3−5)。具体的には、制御部21の解析結果評価手段212は、このルールIDが付与されたすべての警告メッセージを解析結果レポートファイル240から取得する。
次に、評価支援サーバ20の制御部21は、警告メッセージが共通する警告の警告対象個数の算出処理を実行する(ステップS3−6)。具体的には、制御部21の解析結果評価手段212は、取得した警告メッセージを相互に比較する。そして、解析結果評価手段212は、警告メッセージが付与された警告の行番号の個数をカウントすることにより、警告対象個数を算出する。
次に、警告メッセージが共通する警告毎に以下の処理を繰り返す。
ここでは、評価支援サーバ20の制御部21は、フィルタリングのための第2基準値の取得処理を実行する(ステップS3−7)。具体的には、制御部21の解析結果評価手段212は、評価対象リストから、このルールIDに関連付けられた第2基準値を取得する。
ここでは、評価支援サーバ20の制御部21は、フィルタリングのための第2基準値の取得処理を実行する(ステップS3−7)。具体的には、制御部21の解析結果評価手段212は、評価対象リストから、このルールIDに関連付けられた第2基準値を取得する。
次に、評価支援サーバ20の制御部21は、警告対象個数が第2基準値以上かどうかについての判定処理を実行する(ステップS3−8)。具体的には、制御部21の解析結果評価手段212は、警告メッセージが共通する警告の警告対象個数と第2基準値とを比較する。
警告対象個数が第2基準値より少ない場合(ステップS3−8において「NO」の場合)、評価支援サーバ20の制御部21は、この警告についての処理を終了する。
一方、警告対象個数が第2基準値以上の場合(ステップS3−8において「YES」の場合)、評価支援サーバ20の制御部21は、警告のフィルタリング処理を実行する(ステップS3−9)。具体的には、制御部21の解析結果評価手段212は、システム名、解析日、処理対象の警告のルールIDのフィルタリング対象管理レコード260を生成し、フィルタリング対象記憶部26に記録する。そして、解析結果評価手段212は、この警告についての処理を終了する。
以上の処理を、解析結果レポートファイル240に含まれるすべての警告について繰り返す。
一方、警告対象個数が第2基準値以上の場合(ステップS3−8において「YES」の場合)、評価支援サーバ20の制御部21は、警告のフィルタリング処理を実行する(ステップS3−9)。具体的には、制御部21の解析結果評価手段212は、システム名、解析日、処理対象の警告のルールIDのフィルタリング対象管理レコード260を生成し、フィルタリング対象記憶部26に記録する。そして、解析結果評価手段212は、この警告についての処理を終了する。
以上の処理を、解析結果レポートファイル240に含まれるすべての警告について繰り返す。
(ループ内違反警告のフィルタリング処理)
次に、図7(a)を用いて、ループ内違反警告のフィルタリング処理を説明する。このフィルタリング処理については、解析結果レポートファイル240に含まれるループ内違反警告を特定し、この警告毎に繰り返す。
次に、図7(a)を用いて、ループ内違反警告のフィルタリング処理を説明する。このフィルタリング処理については、解析結果レポートファイル240に含まれるループ内違反警告を特定し、この警告毎に繰り返す。
まず、評価支援サーバ20の制御部21は、警告対象のコードの取得処理を実行する(ステップS4−1)。具体的には、制御部21の解析結果評価手段212は、解析結果レポートファイル240において、ループ内違反警告が記録されている行番号を取得する。そして、解析結果評価手段212は、ソースコード記憶部22に記録されたソースコードにおいて、取得した行番号のコードに基づいてループ範囲を特定する。
次に、評価支援サーバ20の制御部21は、基準行数以下かどうかについての判定処理を実行する(ステップS4−2)。具体的には、制御部21の解析結果評価手段212は、ループ範囲に含まれるコード行数を算出し、基準行数と比較する。
ループ範囲に含まれるコード行数が基準行数より多い場合(ステップS4−2において「NO」の場合)、評価支援サーバ20の制御部21は、この警告についての処理を終了する。
一方、ループ範囲に含まれるコード行数が基準行数以下の場合(ステップS4−2において「YES」の場合)、評価支援サーバ20の制御部21は、処理対象の警告のフィルタリング処理を実行する(ステップS4−3)。具体的には、制御部21の解析結果評価手段212は、システム名、解析日、処理対象の警告のルールID、ソース名、行番号についてのフィルタリング対象管理レコード260を生成し、フィルタリング対象記憶部26に記録する。そして、解析結果評価手段212は、この警告についての処理を終了する。
(フィルタリング救済処理)
次に、図7(b)を用いて、フィルタリング救済処理を説明する。このフィルタリング救済処理は、すべてのフィルタリング処理を終了した後に実行される。
次に、図7(b)を用いて、フィルタリング救済処理を説明する。このフィルタリング救済処理は、すべてのフィルタリング処理を終了した後に実行される。
この処理は、フィルタリング対象記憶部26に記録されているフィルタリング対象の警告毎に繰り返す。
まず、評価支援サーバ20の制御部21は、警告に対する対応履歴の取得処理を実行する(ステップS5−1)。具体的には、制御部21の解析結果評価手段212は、フィルタリング対象管理レコード260に記録されているシステム名を特定する。そして、解析結果評価手段212は、特定したシステム名及びルールIDが記録されたフィードバック管理レコード270をフィードバック記憶部27から抽出する。
まず、評価支援サーバ20の制御部21は、警告に対する対応履歴の取得処理を実行する(ステップS5−1)。具体的には、制御部21の解析結果評価手段212は、フィルタリング対象管理レコード260に記録されているシステム名を特定する。そして、解析結果評価手段212は、特定したシステム名及びルールIDが記録されたフィードバック管理レコード270をフィードバック記憶部27から抽出する。
次に、評価支援サーバ20の制御部21は、修正対象かどうかについての判定処理を実行する(ステップS5−2)。具体的には、制御部21の解析結果評価手段212は、抽出したフィードバック管理レコード270の判定結果データ領域に修正対象情報(フィードバックコード(1)〜(6))が記録されているかどうかを確認する。
修正対象情報が記録されておらず、修正対象でないと判定した場合(ステップS5−2において「NO」の場合)、評価支援サーバ20の制御部21は、このルールIDについての処理を終了する。
一方、修正対象情報が記録されており、修正対象と判定した場合(ステップS5−2において「YES」の場合)、評価支援サーバ20の制御部21は、フィルタリング対象から取り除く処理を実行する(ステップS5−3)。具体的には、制御部21の解析結果評価手段212は、フィルタリング対象記憶部26から、このルールIDが記録されたフィルタリング対象管理レコード260を削除する。
以上の処理を、フィルタリング対象記憶部26に記録されているすべてのルールIDについて実行する。
以上の処理を、フィルタリング対象記憶部26に記録されているすべてのルールIDについて実行する。
(レポート作成処理)
次に、図8、図9を用いて,レポート作成処理を説明する。
まず、図8に示すように、評価支援サーバ20の制御部21は、解析結果の設定処理を実行する(ステップS6−1)。具体的には、制御部21のレポート作成手段213は、システム名、解析日、ソース名、今回修正に関連付けて、行番号〜レア度の各データ領域を設けた警告一覧リスト欄を、解析結果評価記憶部28に登録する。そして、レポート作成手段213は、行番号〜ルールIDの各データ領域に、解析結果レポートファイル240に記録されている各データを記録する。
次に、図8、図9を用いて,レポート作成処理を説明する。
まず、図8に示すように、評価支援サーバ20の制御部21は、解析結果の設定処理を実行する(ステップS6−1)。具体的には、制御部21のレポート作成手段213は、システム名、解析日、ソース名、今回修正に関連付けて、行番号〜レア度の各データ領域を設けた警告一覧リスト欄を、解析結果評価記憶部28に登録する。そして、レポート作成手段213は、行番号〜ルールIDの各データ領域に、解析結果レポートファイル240に記録されている各データを記録する。
次に、評価支援サーバ20の制御部21は、同じプログラムで初出の警告かどうかについての判定処理を実行する(ステップS6−2)。具体的には、制御部21のレポート作成手段213は、フィードバック記憶部27において、処理対象の警告のルールID及び同じシステム名、ソース名が記録されたフィードバック管理レコード270を検索する。フィードバック記憶部27から、このルールID及び同じシステム名、ソース名が記録されたフィードバック管理レコード270を抽出できない場合には、同じプログラムにおいて初出と判定する。
ルールID及び同じシステム名、ソース名が記録されたフィードバック管理レコード270を抽出することにより、同じプログラムで初出の警告ではないと判定した場合(ステップS6−2において「NO」の場合)、評価支援サーバ20の制御部21は、処理対象の警告について同じプログラムでの対応の検索処理を実行する(ステップS6−3)。具体的には、制御部21のレポート作成手段213は、処理対象の警告のルールID及びシステム名、同じソース名が記録されたフィードバック管理レコード270に記録されているすべての判定結果を取得する。
次に、評価支援サーバ20の制御部21は、フィードバックにおいて修正対応かどうかについての判定処理を実行する(ステップS6−4)。具体的には、制御部21のレポート作成手段213は、この解析日のフィードバック管理レコード270に記録された判定結果において、修正対応情報(フィードバックコード「1」〜「6」)が記録されているかどうかを判定する。判定結果に修正対応情報が記録されていない場合には、フィードバックにおいて修正対応でないと判定する。
フィードバックにおいて修正対応でないと判定した場合(ステップS6−4において「NO」の場合)、評価支援サーバ20の制御部21は、警告の削除処理を実行する(ステップS6−5)。具体的には、制御部21のレポート作成手段213は、処理対象の警告についてのフィルタリング対象管理レコード260を生成し、フィルタリング対象記憶部26に登録する。そして、レポート作成手段213は、この警告についての警告一覧リスト欄を解析結果評価データ280から削除する。
一方、フィードバックにおいて修正対応と判定した場合(ステップS6−4において「YES」の場合)、評価支援サーバ20の制御部21は、前回のフィードバックにおいて「修正する」かどうかについての判定処理を実行する(ステップS6−6)。具体的には、制御部21のレポート作成手段213は、抽出したフィードバック管理レコード270の判定結果データ領域にフィードバックコード(「1」〜「4」)が記録されているかどうかを確認する。フィードバックコード(「1」〜「4」)が記録されている場合には、前回のフィードバックにおいて「修正する」と判定する。
前回のフィードバックにおいて「修正する」と判定した場合(ステップS6−6において「YES」の場合)、評価支援サーバ20の制御部21は、前回修正もれフラグの付加処理を実行する(ステップS6−7)。具体的には、制御部21のレポート作成手段213は、解析結果評価記憶部28の解析結果評価データ280において、前回修正もれフラグを記録する。
一方、判定結果データ領域にフィードバックコード(「5」,「6」)が記録されており、前回のフィードバックにおいて「修正する」でないと判定した場合(ステップS6−6において「NO」の場合)、評価支援サーバ20の制御部21は、前回修正もれフラグの付加処理(ステップS6−7)をスキップする。
なお、同じプログラムで初出の警告と判定した場合(ステップS6−2において「YES」の場合)、評価支援サーバ20の制御部21は、ステップS6−3〜S6−7の処理をスキップする。
次に、図9に示すように、評価支援サーバ20の制御部21は、自システムで初出の警告かどうかについての判定処理を実行する(ステップS7−1)。具体的には、制御部21のレポート作成手段213は、フィードバック記憶部27において、処理対象の警告のルールID及び同じシステム名が記録されたフィードバック管理レコード270を検索する。フィードバック記憶部27から、このルールID及び同じシステム名が記録されたフィードバック管理レコード270を抽出できない場合には、自システムにおいて初出と判定する。
このルールID及び同じシステム名が記録されたフィードバック管理レコード270を抽出することにより、自システムで初出の警告ではないと判定した場合(ステップS7−1において「NO」の場合)、評価支援サーバ20の制御部21は、処理対象の警告について自システムでの直近の対応の検索処理を実行する(ステップS7−2)。具体的には、制御部21のレポート作成手段213は、直近の解析日が記録されるとともに、処理対象の警告のルールID及び同じシステム名が記録されたフィードバック管理レコード270に記録されているすべての判定結果を取得する。
次に、評価支援サーバ20の制御部21は、対応状況の算出処理を実行する(ステップS7−3)。具体的には、制御部21のレポート作成手段213は、抽出した判定結果を用いて、フィードバックコード毎に判定結果数をカウントする。
次に、評価支援サーバ20の制御部21は、参考情報の付加処理を実行する(ステップS7−4)。具体的には、制御部21のレポート作成手段213は、解析結果評価記憶部28の解析結果評価データ280において、自システム直近判定結果としてフィードバックコード毎の件数を記録する。
次に、評価支援サーバ20の制御部21は、処理対象の警告について自システムでの対応の検索処理を実行する(ステップS7−5)。具体的には、制御部21のレポート作成手段213は、このルールID及び同じシステム名が記録されたフィードバック管理レコード270を特定する。そして、レポート作成手段213は、特定したフィードバック管理レコード270に記録されているすべての判定結果を取得する。
次に、評価支援サーバ20の制御部21は、対応状況の算出処理を実行する(ステップS7−6)。具体的には、制御部21のレポート作成手段213は、抽出した判定結果を用いて、フィードバックコード毎に判定結果数をカウントする。
次に、評価支援サーバ20の制御部21は、参考情報の付加処理を実行する(ステップS7−7)。具体的には、制御部21のレポート作成手段213は、解析結果評価記憶部28の解析結果評価データ280において、自システム過去判定結果としてフィードバックコード毎の件数を記録する。
一方、自システムで初出の警告と判定した場合(ステップS7−1において「YES」の場合)、評価支援サーバ20の制御部21は、ステップS7−2〜S7−7の処理をスキップする。
次に、評価支援サーバ20の制御部21は、全システムで初出の警告かどうかについての判定処理を実行する(ステップS7−8)。具体的には、制御部21のレポート作成手段213は、フィードバック記憶部27において、処理対象の警告のルールIDが記録された過去のフィードバック管理レコード270を検索する。フィードバック記憶部27に、このルールIDが記録されたフィードバック管理レコード270を抽出できない場合には、全システムにおいて初出と判定する。
このルールIDが記録されたフィードバック管理レコード270を抽出することにより、全システムで初出の警告ではないと判定した場合(ステップS7−8において「NO」の場合)、評価支援サーバ20の制御部21は、処理対象の警告について全システムでの対応の検索処理を実行する(ステップS7−9)。具体的には、制御部21のレポート作成手段213は、このルールIDが記録されたフィードバック管理レコード270に記録されているすべての判定結果を取得する。
次に、評価支援サーバ20の制御部21は、対応状況の算出処理を実行する(ステップS7−10)。具体的には、制御部21のレポート作成手段213は、抽出した判定結果を用いて、フィードバックコード毎に判定結果数をカウントする。次に、レポート作成手段213は、各フィードバックコードの判定結果数を合計した総数を算出する。そして、レポート作成手段213は、フィードバックコード毎に、判定結果数を総数で除算した割合を算出する。
次に、評価支援サーバ20の制御部21は、参考情報の付加処理を実行する(ステップS7−11)。具体的には、制御部21のレポート作成手段213は、解析結果評価記憶部28の解析結果評価データ280において、全システム過去判定結果としてフィードバックコード毎の割合を記録する。
一方、全システムで初出の警告と判定した場合(ステップS7−8において「YES」の場合)、評価支援サーバ20の制御部21は、ステップS7−9〜S7−11の処理をスキップする。
次に、評価支援サーバ20の制御部21は、修正されたソースコードかどうかについての判定処理を実行する(ステップS7−12)。具体的には、制御部21のレポート作成手段213は、修正情報記憶部23において、同じシステム名、ソース名及び解析日が記録された修正管理レコード230を検索する。そして、同じシステム名、ソース名及び解析日が記録された修正管理レコード230を抽出した場合には、評価対象のソースコードは、修正されたソースコードと判定する。
同じシステム名、ソース名及び解析日が記録された修正管理レコード230を抽出したことにより、修正されたソースコードと判定した場合(ステップS7−12において「YES」の場合)、評価支援サーバ20の制御部21は、今回修正フラグの記録処理を実行する(ステップS7−13)。具体的には、制御部21のレポート作成手段213は、解析結果評価記憶部28に記録された解析結果評価データ280において、今回修正フラグを記録する。
一方、同じシステム名、ソース名及び解析日が記録された修正管理レコード230を抽出できず、修正されたソースコードではないと判定した場合(ステップS7−12において「NO」の場合)、評価支援サーバ20の制御部21は、ステップS7−13の処理をスキップする。
次に、評価支援サーバ20の制御部21は、レア度の評価処理を実行する(ステップS7−14)。具体的には、制御部21のレポート作成手段213は、解析結果レポート記憶部24に記録されている警告について、ルールID毎に警告数を算出する。そして、レポート作成手段213は、各ルールIDの警告数を合計した総数を算出する。そして、レポート作成手段213は、処理対象のルールIDの警告数を総数で除算した割合を算出する。
次に、評価支援サーバ20の制御部21は、レア情報の付加処理を実行する(ステップS7−15)。具体的には、制御部21のレポート作成手段213は、算出した割合がレア度基準値以下の場合には、解析結果評価記憶部28に記録された解析結果評価データ280において、レア度フラグを記録する。
本実施形態によれば、以下のような効果を得ることができる。
(1)本実施形態においては、評価支援サーバ20の制御部21は、フィルタリングロジックの実行処理を実行する(ステップS2−1)。これにより、静的解析において出力された警告についてはフィルタリングロジックにより絞り込まれるので、修正が望ましいソースコードの判別を的確に行なうことができ、所定の警告について効率的にソースコードの修正作業を行なうことができる。
(1)本実施形態においては、評価支援サーバ20の制御部21は、フィルタリングロジックの実行処理を実行する(ステップS2−1)。これにより、静的解析において出力された警告についてはフィルタリングロジックにより絞り込まれるので、修正が望ましいソースコードの判別を的確に行なうことができ、所定の警告について効率的にソースコードの修正作業を行なうことができる。
(2)本実施形態の警告対象個数、同一内容によるフィルタリング処理においては、評価支援サーバ20の制御部21は、実質的な影響が小さい警告かどうかについての判定処理を実行する(ステップS3−1)。実質的な影響が小さい警告と判定した場合(ステップS3−1において「YES」の場合)、評価支援サーバ20の制御部21は、フィルタリングのための第1基準値を取得し(ステップS3−2)、警告対象個数が第1基準値以上かどうかについての判定処理を実行する(ステップS3−3)。警告対象個数が第1基準値以上の場合(ステップS3−3において「YES」の場合)、評価支援サーバ20の制御部21は、警告のフィルタリング処理を実行する(ステップS3−4)。これにより、影響が小さく、数が多い警告についてはフィルタリングされるので、修正作業の効率化を図ることができる。
(3)本実施形態の警告対象個数、同一内容によるフィルタリング処理においては、評価支援サーバ20の制御部21は、警告メッセージが共通する警告の警告対象個数の算出処理を実行する(ステップS3−6)。次に、警告メッセージが共通する警告毎に、評価支援サーバ20の制御部21は、フィルタリングのための第2基準値の取得処理を実行する(ステップS3−7)。警告対象個数が第2基準値以上の場合(ステップS3−8において「NO」の場合)、評価支援サーバ20の制御部21は、同一警告内容のフィルタリング処理を実行する(ステップS3−9)。これにより、影響が小さく、同じパターンで発生している警告については、開発部署におけるコーディング手法の一つと判断してフィルタリングされるので、修正作業の効率化を図ることができる。
(4)本実施形態のループ内違反警告のフィルタリング処理においては、評価支援サーバ20の制御部21は、警告対象のコードの取得処理を実行する(ステップS4−1)。基準行数以下の場合(ステップS4−2において「YES」の場合)、評価支援サーバ20の制御部21は、処理対象の警告のフィルタリング処理を実行する(ステップS4−3)。これにより、行数が少ないループについては可読性への影響が少ないので、警告をフィルタリングして修正作業の効率化を図ることができる。
(5)本実施形態のフィルタリング救済処理においては、評価支援サーバ20の制御部21は、警告に対する対応履歴の取得処理を実行する(ステップS5−1)。修正対象情報が記録されており、修正対象と判定した場合(ステップS5−2において「YES」の場合)、評価支援サーバ20の制御部21は、フィルタリング対象から取り除く処理を実行する(ステップS5−3)。これにより、フィルタリングロジックにより対象外とされた警告であっても、判定結果に応じて除外されるので、システム開発部署の判断に応じた解析結果評価レポートを提供することができる。
(6)本実施形態のレポート作成処理においては、評価支援サーバ20の制御部21は、同じプログラムで初出の警告かどうかについての判定処理を実行する(ステップS6−2)。同じプログラムで初出の警告ではないと判定した場合(ステップS6−2において「NO」の場合)、評価支援サーバ20の制御部21は、同じプログラムでの対応の検索処理を実行する(ステップS6−3)。そして、評価支援サーバ20の制御部21は、フィードバックにおいて修正対応かどうかについての判定処理を実行する(ステップS6−4)。フィードバックにおいて修正対応でないと判定した場合(ステップS6−4において「NO」の場合)、評価支援サーバ20の制御部21は、警告の削除処理を実行する(ステップS6−5)。これにより、既に修正不要と判断されている場合には、解析結果評価レポートから警告を除外されるので、修正作業の効率化を図ることができる。
更に、前回のフィードバックにおいて「修正する」と判定した場合(ステップS6−6において「YES」の場合)、評価支援サーバ20の制御部21は、前回修正もれフラグの付加処理を実行する(ステップS6−7)。これにより、先の警告に対する修正漏れを注意喚起することができる。
(7)本実施形態のレポート作成処理においては、評価支援サーバ20の制御部21は、自システムで初出の警告かどうかについての判定処理を実行する(ステップS7−1)。自システムで初出の警告ではないと判定した場合(ステップS7−1において「NO」の場合)、評価支援サーバ20の制御部21は、処理対象の警告について自システムでの直近の対応の検索処理(ステップS7−2)、対応状況の算出処理(ステップS7−3)、参考情報の付加処理(ステップS7−4)を実行する。これにより、直近の対応状況に基づいて、同様の方針で修正の要否を判断することができる。
更に、評価支援サーバ20の制御部21は、処理対象の警告について自システムでの対応の検索処理(ステップS7−5)、対応状況の算出処理(ステップS7−6)、参考情報の付加処理(ステップS7−7)を実行する。これにより、自システムにおける対応状況に基づいて、同様の方針で修正の要否を判断することができる。
(8)本実施形態のレポート作成処理においては、評価支援サーバ20の制御部21は、全システムで初出の警告かどうかについての判定処理を実行する(ステップS7−8)。全システムで初出の警告ではないと判定した場合(ステップS7−8において「NO」の場合)、評価支援サーバ20の制御部21は、処理対象の警告について全システムでの対応の検索処理(ステップS7−9)、対応状況の算出処理(ステップS7−10)、参考情報の付加処理(ステップS7−11)を実行する。これにより、対応方針の全体的な傾向に基づいて、ソースコードの修正の要否を判断することができる。特に、自システムにおける初出の警告について、他システムにおける対応状況を参考にして判断することができる。
(9)本実施形態のレポート作成処理においては、修正されたソースコードと判定した場合(ステップS7−12において「YES」の場合)、評価支援サーバ20の制御部21は、今回修正フラグの記録処理を実行する(ステップS7−13)。これにより、ソースコードの修正状況を参考にしながら、警告についての修正要否を判断することができる。
(10)本実施形態のレポート作成処理においては、評価支援サーバ20の制御部21は、レア度の評価処理(ステップS7−14)、レア情報の付加処理(ステップS7−15)を実行する。これにより、処理対象の警告の発生状況を参考にしながら、ルール違反の発生原因を検討したり、修正作業を行なったりすることができる。他のシステムでは検知されていない警告であることから、重点的に修正の要否の検討を促すことができる。
(11)本実施形態では、クライアント端末10、解析サーバ30に、ネットワークを介して接続された評価支援サーバ20を用いる。クライアント端末10においてコーディングを行なうとともに、解析サーバ30においてソースコードの静的解析を行なう。これにより、解析サーバ30とは別に評価支援サーバ20を設けるので、既存の静的解析システムを利用しながら、警告のフィルタリングを行なうことができる。例えば、ネットワークを介してのクラウドサービスとして提供することができる。
なお、上記各実施形態は以下のように変更してもよい。
・ 上記実施形態では、クライアント端末10においてコーディングを行なうとともに、解析サーバ30においてソースコードの静的解析を行なう。そして、評価支援サーバ20において、静的解析処理により作成された解析結果を評価する。ここで、静的解析の解析結果を評価するシステムのハードウェア構成は、これに限定されるものではない。例えば、クライアント端末10において、静的解析の解析結果を評価するようにしてもよい。この場合には、クライアント端末10に、ソースコード記憶部22〜解析結果評価記憶部28を設けるとともに、端末制御部11を情報登録手段211〜フィードバック登録手段214として機能させる。これにより、クライアント端末10において、警告のフィルタリングを行なうことができる。
・ 上記実施形態では、クライアント端末10においてコーディングを行なうとともに、解析サーバ30においてソースコードの静的解析を行なう。そして、評価支援サーバ20において、静的解析処理により作成された解析結果を評価する。ここで、静的解析の解析結果を評価するシステムのハードウェア構成は、これに限定されるものではない。例えば、クライアント端末10において、静的解析の解析結果を評価するようにしてもよい。この場合には、クライアント端末10に、ソースコード記憶部22〜解析結果評価記憶部28を設けるとともに、端末制御部11を情報登録手段211〜フィードバック登録手段214として機能させる。これにより、クライアント端末10において、警告のフィルタリングを行なうことができる。
また、解析サーバ30において、静的解析の解析結果を評価するようにしてもよい。この場合には、解析サーバ30に、フィルタリングロジック記憶部25、フィルタリング対象記憶部26、フィードバック記憶部27、解析結果評価記憶部28を設ける。そして、解析サーバ30において、解析結果評価処理(ステップS1−9)、解析結果評価レポートの送信処理(ステップS1−10)、フィードバックの登録処理(ステップS1−13)を実行する。これにより、解析サーバ30において、静的解析及び警告のフィルタリングを行なうことができる。
また、クライアント端末10において、解析サーバ30におけるソースコードの静的解析を行なうようにしてもよい。この場合には、クライアント端末10に静的解析ツール31を設ける。更に、クライアント端末10において、解析サーバ30におけるソースコードの静的解析や、評価支援サーバ20における解析結果の評価を行なうようにしてもよい。この場合には、クライアント端末10に、ソースコード記憶部22〜解析結果評価記憶部28、静的解析ツール31を設けるとともに、端末制御部11を情報登録手段211〜フィードバック登録手段214として機能させる。
・ 上記実施形態では、開発システムにおいて用いられるソースコードについて静的解析を行ない、この解析結果において出力された警告を評価する。このソースコードの開発部署を特定するための識別子として部署IDを用いる。ここで、一企業において用いられるソースコードの解析結果への適用に限定されるものではなく、複数の企業における開発部署において作成されたソースコードを評価することも可能である。この場合には、この部署IDに、企業を特定する識別子を含めておく。これにより、複数の企業において作成されたソースコードについての解析結果を集約して評価することができる。
・ 上記実施形態では、評価支援サーバ20の制御部21は、対応状況の算出処理を実行する(ステップS7−3、S7−6、S7−10)。ここで、過去に出力された警告であって、フィードバックコード(「5」,「6」)の「将来の案件で修正」については、対応状況の算出方法を変更するようにしてもよい。例えば、システム名、ソース名、ルールIDが共通する警告については、判定結果数を1回のみカウントする。将来の修正予定対象についての警告については、修正されるまで何度も出現するので、このような警告についての重複したカウントを抑制することができる。
・ 上記実施形態では、フィルタリングロジック記憶部25に記録されたロジックを用いて、警告のフィルタリングを行なう。本実施形態では、フィルタリングロジックとして、警告対象個数、同一内容によるフィルタリングロジック、ループ内違反警告のフィルタリングロジック、フィルタリング救済ロジック等が記録されている。フィルタリングロジックはこれらに限定されるものではなく、一部のフィルタリングロジックのみを用いたり、他のフィルタリングロジックを付加したりしてもよい。例えば、ループ内違反警告のフィルタリングロジックのように、ソースコードを必要とするフィルタリングロジックを利用しないことも可能である。この場合には、ソースコードを入手することなく、解析結果評価処理(ステップS1−9)を実行することができる。
・ 上記実施形態では、フィルタリングロジック記憶部25に記録されたロジックを用いて、警告のフィルタリングを行なう。ここで、フィルタリングを行なう条件を、システム名、システム規模、組織、開発担当者等に応じて決定することも可能である。
例えば、システム名に応じて、評価対象リストに記録された第1基準値及び第2基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールID及びシステム名に関連付けてフィルタリング条件(第1基準値及び第2基準値)に関するデータを記録しておく。そして、解析結果レポートの評価を行なう場合、解析結果評価手段212は、ソースコードが用いられる開発システムのシステム名を特定する。次に、解析結果評価手段212は、システム名に応じた第1基準値及び第2基準値を評価対象リストから取得する。
また、システム規模に応じて、評価対象リストに記録された第1基準値及び第2基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールID及びシステム規模に関連付けてフィルタリング条件(第1基準値及び第2基準値)に関するデータを記録しておく。更に、評価支援サーバ20に、システム名に関連付けてシステム規模を記録したシステム情報記憶部を設ける。そして、解析結果レポートの評価を行なう場合、解析結果評価手段212は、ソースコードが用いられる開発システムのシステム名を特定する。次に、解析結果評価手段212は、システム情報記憶部において、システム名に基づいてシステム規模を特定し、このシステム規模に応じた第1基準値及び第2基準値を評価対象リストから取得する。
また、組織に応じて、評価対象リストに記録された第1基準値及び第2基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールID及び部署IDに関連付けて第1基準値及び第2基準値に関するデータを記録しておく。
また、開発担当者に応じて、評価対象リストに記録された第1基準値及び第2基準値を変更するようにしてもよい。この場合には、評価対象リストにおいて、ルールID及び開発担当者IDに関連付けて第1基準値及び第2基準値に関するデータを記録しておく。更に、「@author」タグ等を利用して、ソースコードに記録された開発担当者を特定する。そして、解析結果評価手段212は、フィードバック記憶部27において、特定した開発担当者に関連付けて警告の発生状況や判定結果を記録しておく。
・ 上記実施形態では、評価支援サーバ20の制御部21は、解析結果評価レポートに含める警告の特定処理を実行する(ステップS2−3)。そして、評価支援サーバ20の制御部21は、レポート作成処理を実行する(ステップS2−4)。これに代えて、解析結果レポートファイル240に記録されているすべての警告を解析結果評価レポートに含めるようにしてもよい。この場合には、解析結果評価レポートにおいて、フィルタリング対象の警告を識別できるように表示する。
・ 上記実施形態では、評価支援サーバ20の制御部21は、レポートの作成処理を実行する(ステップS2−4)。この解析結果評価レポートには、前回修正漏れ〜レア度に関する情報を含める。この解析結果評価レポートに含める情報は、上記情報に限定されるものではなく、一部の情報に限定したり、他の情報を含めたりしてもよい。また、開発部署や開発担当者に応じて、内容を変更するようにしてもよい。例えば、「@author」タグ等を利用して特定された開発担当者については、フィードバックコード毎に件数を記録するようにしてもよい。
レア度の評価についても、開発担当者における警告件数を算出し、この件数に対応させたレア度を算出して、解析結果評価レポートに含めるようにしてもよい。
レア度の評価についても、開発担当者における警告件数を算出し、この件数に対応させたレア度を算出して、解析結果評価レポートに含めるようにしてもよい。
・ 上記実施形態では、評価支援サーバ20の制御部21は、修正されたソースコードかどうかについての判定処理を実行する(ステップS7−12)。ここでは、修正情報記憶部23において、同じシステム名、ソース名及び解析日が記録された修正管理レコード230を検索する。これに代えて、ソース名やソースコードのバージョン情報に基づいて、修正されたソースコードかどうかを判定するようにしてもよい。この場合、ソースコード記憶部22に同じソース名のソースコードが記録されている場合には、修正されたソースコードと判定する。
更に、評価支援サーバ20の制御部21が、ソースコード記憶部22に記録されている同じソース名のソースコードと、新たに取得したソースコードとを比較することにより、修正されたソースコードかどうかについての判定するようにしてもよい。この場合、両者に差異を検出した場合に、修正されたソースコードと判定する。
更に、評価支援サーバ20の制御部21が、バージョン情報を用いて、元のソースコードを特定し、評価対象のソースコードと比較することにより、修正箇所を特定するようにしてもよい。
・ 上記実施形態では、解析結果評価レポートに、参考情報として、自システム直近判定結果、自システム過去判定結果、全システム過去判定結果を含める。解析結果評価レポートに含める参考情報はこれらに限定されるものではなく、これらの一部や他の情報を含めるようにしてもよい。例えば、参考情報として同一ソース直近判定結果を含めるようにしてもよい。この場合には、フィードバック記憶部27から、同じ開発システムの同一プログラム(ソースコード)における、直近の警告対応についてのフィードバックコードを取得し、解析結果評価レポートに含める。
10…クライアント端末、11…端末制御部、111…コード作成手段、112…解析支援手段、20…評価支援サーバ、21…制御部、211…情報登録手段、212…解析結果評価手段、213…レポート作成手段、214…フィードバック登録手段、22…ソースコード記憶部、23…修正情報記憶部、24…解析結果レポート記憶部、25…フィルタリングロジック記憶部、26…フィルタリング対象記憶部、27…フィードバック記憶部、28…解析結果評価記憶部、30…解析サーバ、31…静的解析ツール、32…ソースコード記憶部。
Claims (7)
- 開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、
前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、
開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムであって、
前記制御手段が、
前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段と、
前記対応方針に基づいて、前記警告の評価情報を作成する手段と、
前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段と、
前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段と
を備えたことを特徴とする解析結果評価システム。 - 前記解析結果に含まれる警告の警告種別について、前記フィードバック情報記憶手段から、他の開発システムにおける対応方針を取得し、前記取得した対応方針を含めた評価情報を作成し、
前記評価情報を解析結果評価レポートに含めることを特徴とする請求項1に記載の解析結果評価システム。 - 前記解析結果に含まれる警告の警告種別について、前記開発システムにおける対応方針として、前記フィードバック情報記憶手段に修正しない旨の対応方針が記録されている場合には、前記解析結果評価レポートに前記警告を含めないことを特徴とする請求項1又は2に記載の解析結果評価システム。
- 警告の警告種別に対して、フィルタリング条件を記録したフィルタ情報記憶手段を更に備え、
前記制御手段が、前記フィルタ情報記憶手段に記録された前記フィルタリング条件を満たす警告については、前記解析結果評価レポートに前記警告を含めないことを特徴とする請求項1〜3のいずれか一つに記載の解析結果評価システム。 - 前記制御手段が、前記解析結果において、同じ警告種別の警告の個数を算出し、
前記個数に基づいて前記警告種別に対する評価結果を変更することを特徴とする請求項1〜4のいずれか一つに記載の解析結果評価システム。 - 開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、
前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、
開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析する方法であって、
前記制御手段が、
前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する段階と、
前記対応方針に基づいて、前記警告の評価情報を作成する段階と、
前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する段階と、
前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する段階と
を実行することを特徴とする解析結果評価方法。 - 開発システムのソースコードの静的解析により作成された解析結果を記録する解析結果情報記憶手段と、
前記解析結果に含まれる各警告の警告種別についての対応方針を記録したフィードバック情報記憶手段と、
開発部署のクライアント端末に接続される制御手段とを備えた解析結果評価システムを用いて、モジュールを解析するためのプログラムであって、
前記制御手段を、
前記解析結果情報記憶手段に記録された前記解析結果に含まれる警告の警告種別を特定し、前記フィードバック情報記憶手段から、前記警告種別について、前記開発システムにおける対応方針を取得する手段、
前記対応方針に基づいて、前記警告の評価情報を作成する手段、
前記評価情報を含めた解析結果評価レポートを作成し、前記クライアント端末に提供する手段、
前記クライアント端末から、前記解析結果評価レポートに含まれる警告に対する対応方針を含めたフィードバックを取得し、前記フィードバックに基づいて、前記フィードバック情報記憶手段に記録された対応方針を更新する手段
として機能させることを特徴とする解析結果評価プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011282675A JP5335885B2 (ja) | 2011-12-26 | 2011-12-26 | 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011282675A JP5335885B2 (ja) | 2011-12-26 | 2011-12-26 | 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013134521A JP2013134521A (ja) | 2013-07-08 |
JP5335885B2 true JP5335885B2 (ja) | 2013-11-06 |
Family
ID=48911195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011282675A Expired - Fee Related JP5335885B2 (ja) | 2011-12-26 | 2011-12-26 | 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5335885B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IN2013MU03461A (ja) * | 2013-10-31 | 2015-07-17 | Tata Consultancy Services Ltd | |
JP2015153235A (ja) * | 2014-02-17 | 2015-08-24 | 株式会社日立ソリューションズ | 情報処理装置及び情報処理プログラム |
JP6476994B2 (ja) * | 2015-02-24 | 2019-03-06 | 日本電気株式会社 | 指摘選別装置、指摘選別方法及びプログラム |
JP6609216B2 (ja) * | 2016-05-10 | 2019-11-20 | 株式会社日立ソリューションズ | ソースコードの静的解析結果の分析装置及び分析方法 |
JP6840966B2 (ja) | 2016-09-15 | 2021-03-10 | 富士通株式会社 | 参考情報出力プログラム、参考情報出力方法、及び参考情報出力装置 |
US10540257B2 (en) | 2017-03-16 | 2020-01-21 | Fujitsu Limited | Information processing apparatus and computer-implemented method for evaluating source code |
KR102571350B1 (ko) * | 2023-03-24 | 2023-08-29 | (주)유알피 | 딥러닝 모델 기반 태깅 기술을 활용한 맞춤형 분석보고서 제공방법 및 그 장치 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004240477A (ja) * | 2003-02-03 | 2004-08-26 | Mitsubishi Electric Corp | ソースコード静的解析支援システムおよび静的解析装置 |
JP2010117897A (ja) * | 2008-11-13 | 2010-05-27 | Hitachi Software Eng Co Ltd | プログラム静的解析システム |
JP2011113296A (ja) * | 2009-11-26 | 2011-06-09 | Canon Inc | ソース管理プログラムにおけるコーディング規約チェックシステム |
-
2011
- 2011-12-26 JP JP2011282675A patent/JP5335885B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2013134521A (ja) | 2013-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5335885B2 (ja) | 解析結果評価システム、解析結果評価方法及び解析結果評価プログラム | |
KR102033971B1 (ko) | 데이터 품질 분석 | |
US9836389B2 (en) | Test data generation utilizing analytics | |
CN109284251A (zh) | 日志管理方法、装置、计算机设备以及存储介质 | |
US9886369B2 (en) | Dynamic data fabrication for database applications | |
US9846635B2 (en) | Making production data available for testing in a non-production environment | |
US9760470B2 (en) | Device, method, and program analysis of new source code to be added to execution program to check for bug | |
CN114556317A (zh) | 通过版本散列链接图形的文档跟踪 | |
CN111324510A (zh) | 日志处理方法、装置及电子设备 | |
CN110764745B (zh) | 变量的传输和收集方法、装置及计算机可读存储介质 | |
CN114518899A (zh) | 一种反向的软件包追踪管理方法、系统及存储介质 | |
CN114327588A (zh) | 一种代码提交日志的处理方法及装置 | |
KR100986998B1 (ko) | 서버의 개인정보 진단 방법 및 장치 | |
JP2016143106A (ja) | 業務バリエーションに基づく業務影響箇所抽出方法および業務影響箇所抽出装置 | |
JP2018097547A (ja) | ロードコンペア装置、ロードコンペアプログラムおよびロードコンペア方法 | |
JP2013145425A (ja) | アプリケーションサーバ装置 | |
CN111046050A (zh) | 数据Schema的处理方法、装置、设备及存储介质 | |
WO2022107406A1 (ja) | 情報処理システム、情報処理方法及び計算機 | |
JP5395146B2 (ja) | 開発支援システム、開発支援方法及び開発支援プログラム | |
CN113468158B (zh) | 数据修复方法、系统、电子设备及介质 | |
CN110019109B (zh) | 用于处理数据仓库数据的方法及装置 | |
WO2020261363A1 (ja) | トレーサビリティ管理装置 | |
US20190026289A1 (en) | Storage control program, apparatus, and method | |
JP2022128247A (ja) | プログラム生成支援装置、プログラム生成支援方法、及びプログラム生成支援プログラム | |
CN118349228A (zh) | 一种业务逻辑的编排方法、装置、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130709 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130731 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5335885 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |