JP2013045307A - 静的解析システム、静的解析結果表示方法及びプログラム - Google Patents

静的解析システム、静的解析結果表示方法及びプログラム Download PDF

Info

Publication number
JP2013045307A
JP2013045307A JP2011183099A JP2011183099A JP2013045307A JP 2013045307 A JP2013045307 A JP 2013045307A JP 2011183099 A JP2011183099 A JP 2011183099A JP 2011183099 A JP2011183099 A JP 2011183099A JP 2013045307 A JP2013045307 A JP 2013045307A
Authority
JP
Japan
Prior art keywords
static analysis
source code
verification result
file
verification
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.)
Pending
Application number
JP2011183099A
Other languages
English (en)
Inventor
Junichi Fukumoto
純一 福本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011183099A priority Critical patent/JP2013045307A/ja
Publication of JP2013045307A publication Critical patent/JP2013045307A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】静的解析結果を、効率良く確認できる静的解析システムを提供する。
【解決手段】本発明の静的解析システムは、静的解析装置と、クライアント装置とを備え、前記静的解析装置は、変更有無によらずに、全てのソースコードファイルを静的解析する検証実行部と、前記ソースコードファイル及び前記検証実行部による検証結果を、リビジョン毎に保存するリポジトリと、前記検証結果において、各指摘項目を前記クライアント装置の画面に表示するかどうかを示す確認フラグを更新する確認フラグ更新部とを備え、前記クライアント装置は、前記静的解析装置から、前記検証結果を取得する検証結果アクセス部と、前記検証結果の指摘項目の一覧、及び、次の静的解析時では表示不要な前記指摘項目をユーザに選択させる画面を表示し、前記選択させた前記表示不要な指摘項目を含む前記検証結果を、前記確認フラグ更新部に送信する検証結果確認部とを備える。
【選択図】図1

Description

本発明は、ソースコードの静的解析システムに関し、特に、静的解析結果を、効率良く確認できる静的解析システムに関する。
ソフトウェア開発において、ソースコードの品質を高めるために、ソースコードの静的解析が行われている。一般に、ソースコードファイルは、バグの修正や、ソフトウェアの機能変更、機能追加等の理由で、変更が繰り返される。ソースコードの静的解析工程では、ソースコードの一部しか変更していない場合であっても、ソフトウェアの品質を高めるため、全てのソースコードファイルに対して静的解析が行なわれることが多い。このとき、前回の静的解析の実行後に、内容が変更されていないソースコードファイルにおいては、前回と同様の静的解析結果が表示される。また、ソースコードの規模が大きい場合等には、静的解析結果の指摘事項が大量に表示され、確認作業が煩雑となる。ソースコードの静的解析工程において、静的解析システムのユーザが、前回の静的解析結果で確認済みの指摘項目を、同じ指摘項目であると判別できないことにより、再度、確認しなければならないことは非効率である。
本発明の分野における文献公知発明としては、特開2009−146207号公報(特許文献1)及び特開2006−092475号公報(特許文献2)がある。
特開2009−146207号公報(特許文献1)では、ソースコード解析部22が、変更前のソースコード(古いソースコード)と、変更後のソースコードの差分を算出して自動解析を実施する範囲を特定し、特定した部分のみ自動解析を行う発明が開示されている。この発明では、この方法により、変更のないソースコード箇所に対する同一指摘項目を再表示しないようにしている。しかし、変更されたソースコードと、変更されていないソースコードとの相互依存関係によっては、変更されていないソースコードに対しても指摘項目が新たに追加されることがある。静的解析を実行する対象を、差分のあったソースコード箇所に限定してしまうと、このような指摘事項が表示されない。
また、特開2006−092475号公報(特許文献2)では、ソースコードに含まれるエラー箇所について、開発者等によって、修正不要の判断がされた場合には、再度のインスペクション処理による当該エラー箇所を検出しないソースコードインスペクションシステムの発明が開示されている。この発明では、次の静的解析結果参照時に、表示不要と判断した指摘項目は、適用除外申請装置101に適用除外申請を行なうことができる。適用除外申請された指摘項目は、当該ソースコードの変更がなかった場合には、除外対象結果情報703に出力されるが、当該ソースコードに変更があり、指摘項目の行番号が変わっていた場合には、不正除外結果情報704に出力される。開発者等は、不正除外結果情報704に出力されたエラー内容を、再確認する必要がある。
特開2009−146207号公報 特開2006−092475号公報
本発明の目的は、解析結果を効率良く確認できる静的解析システムを提供することにある。
本発明の静的解析システムは、静的解析装置と、前記静的解析装置のユーザインタフェースとなるクライアント装置とを備える。前記静的解析装置は、変更有無によらずに、全てのソースコードファイルを静的解析する検証実行部と、前記ソースコードファイル及び前記検証実行部による検証結果を、リビジョン毎に保存するリポジトリと、前記検証結果において、各指摘項目を前記クライアント装置の画面に表示するかどうかを示す確認フラグを更新する確認フラグ更新部とを備え、前記クライアント装置は、前記静的解析装置から、前記検証結果を取得する検証結果アクセス部と、前記検証結果の指摘項目の一覧、及び、次の静的解析時では表示不要な前記指摘項目をユーザに選択させる画面を表示し、前記選択させた前記表示不要な指摘項目を含む前記検証結果を、前記確認フラグ更新部に送信する検証結果確認部とを備える。
本発明の静的解析結果表示方法は、静的解析装置と、前記静的解析装置のユーザインタフェースとなるクライアント装置とを備える静的解析システムにより実施される。前記静的解析装置の検証実行部が、変更有無によらずに、全てのソースコードファイルを静的解析するステップと、前記静的解析装置のリポジトリが、前記ソースコードファイル及び前記検証実行部による検証結果を、リビジョン毎に保存するステップと、前記静的解析装置の確認フラグ更新部が、前記検証結果において、各指摘項目を前記クライアント装置の画面に表示するかどうかを示す確認フラグを更新するステップとを備え、前記クライアント装置の検証結果アクセス部が、前記静的解析装置から、前記検証結果を取得するステップと、前記クライアント装置の検証結果確認部が、前記検証結果の指摘項目の一覧、及び、次の静的解析時では表示不要な前記指摘項目をユーザに選択させる画面を表示するステップと、前記クライアント装置の検証結果確認部が、前記選択させた前記表示不要な指摘項目を含む前記検証結果を、前記確認フラグ更新部に送信するステップとを含む。
本発明によれば、解析結果を効率良く確認できる静的解析システムを提供することができる。
図1は、本発明の実施形態における静的解析システム10のブロック図である。 図2は、本発明の実施形態における静的解析システム10において、リポジトリ51にソースコードファイル31を格納する方法を説明するためのフローチャートである。 図3は、本発明の実施形態における静的解析システム10の静的解析方法のフローチャートである。 図4は、本発明の実施形態における静的解析システム10のファイル差分情報である。 図5は、本発明の実施形態における静的解析システム10の行差分情報である。 図6は、本発明の実施形態における静的解析システム10の行差分情報の例である。 図7は、本発明の実施形態における静的解析システム10の検証結果33である。 図8は、本発明の実施形態における静的解析システム10の静的解析結果確認方法のフローチャートである。 図9は、本発明の実施形態における静的解析システム10の検証結果確認画面の例である。 図10は、本発明の実施形態における検証結果更新部25によって更新されたリポジトリ51の検証結果33の例である。 図11は、図10の検証結果33に基づいて作成された検証結果確認画面である。 図12は、本発明の実施形態における確認フラグ更新部28によって更新されたリポジトリ51の検証結果33の例である。 図13は、本発明の実施形態における差分取得部23によって作成されたファイル差分情報及び行差分情報の例である。 図14は、本発明の実施形態における検証実行部24により作成されたリポジトリ51保存前の検証結果である。 図15は、本発明の実施形態における検証結果更新部25により更新された検証結果33の例である。 図16は、図15の検証結果33に基づいて、本発明の実施形態における検証結果確認部13が表示する検証結果確認画面の例である。
添付図面を参照して、本発明の実施形態による静的解析システム10を以下に説明する。
[構成の説明]
はじめに、本実施形態における静的解析システム10の構成の説明を行う。図1は、本発明の実施形態における静的解析システム10のブロック図である。静的解析システム10は、クライアント装置1及び静的解析装置2を備えたクライアントサーバシステムである。
クライアント装置1は、静的解析結果確認者が、静的解析装置2を利用するためのユーザインタフェースとなる装置である。クライアント装置1は、リポジトリアクセス部11、検証結果アクセス部12及び検証結果確認部13を備える。クライアント装置1は、複数あってもよい。また、クライアント装置1と静的解析装置2は、同一の装置により実現されていてもよい。
静的解析装置2は、実行トリガ部21、ソースコードファイル取得部22、差分取得部23、検証実行部24、検証結果更新部25、ソースコードファイル格納部26、検証結果取得部27、確認フラグ更新部28及びリポジトリ51を備える。
リポジトリアクセス部11は、ソースコードファイルをリポジトリ51に格納するためのソースコード格納要求をソースコードファイル格納部26に送信する。
検証結果アクセス部12は、検証結果取得要求を検証結果取得部27に送信する。
検証結果確認部13は、次の静的解析実行時からは、表示不要と判断した指摘項目を、表示させないようにするため、該当の指摘項目の確認フラグを「確認済み」に更新した検証結果確認用データ41を、確認フラグ更新部28に送信する。
実行トリガ部21は、定期的(例えば、毎日定時)、又は、非定期的(例えば、該当モジュール内のいずれかのソースコードファイルの更新時)に、静的解析の処理の開始を、ソースコードファイル取得部22に指示する。
ソースコードファイル取得部22は、今回静的解析の対象となるリビジョンのソースコードファイル31と、前回計測時リビジョン32のソースコードファイル31を、リポジトリ51から取得する。
差分取得部23は、ソースコード取得部22によって取得した前回計測時リビジョン32のソースコードファイル31と、静的解析の対象となるリビジョンのソースコードファイル31との比較を行ない、ファイル差分情報及び行差分情報を作成する。ファイル差分情報及び行差分情報の詳細については、後述する。差分取得部23によるソースコードファイル31の比較機能は、例えば、UNIX(登録商標)のdiffプログラムと同様の機能を有する。静的解析の対象となるリビジョンは、最新のリビジョンとの他に、静的解析システム10のユーザが、特定のリビジョンを指定してもよい。
検証実行部24は、ソースコード取得部22によって取得した全てのソースコードファイル31に対して、静的解析を実行して検証結果33を作成する。全てのソースコードファイルとは、あるソフトウェアを実現するために、必要となる複数の機能ブロック(複数のモジュール)のうち、1機能ブロック(1モジュール)を実現するためのソースコードファイル群であってもよい。検証実行部24による静的解析機能は、例えば、Java言語(登録商標)で記載されたソースコードであれば、オープンソースソフトウェアであるPMDやCheckstyle、C++言語で記載されたソースコードであれば、同じくオープンソフトウェアであるCppCheckと同様のチェック機能を有する。
検証結果更新部25は、今回の静的解析実行時に、検証実行部24により得られた未反映の検証結果に基づいて、前回静的解析時にリポジトリ51に保存した検証結果33を更新する。検証結果更新部25の処理の詳細については、後述する。
ソースコード格納部26は、クライアント装置1のリポジトリアクセス部11からソースコード格納要求と、ソースコードファイルを受信すると、ソースコードファイル31として、リポジトリ51に格納する。
検証結果取得部27は、クライアント装置1の検証結果アクセス部12から、検証結果取得要求を受信すると、リポジトリ51の検証結果33を参照する。検証結果取得部27は、検証結果33において、確認フラグが「未確認」の指摘項目を抽出し、検証結果確認用データ41を作成する。検証結果取得部27は、クライアント装置1に検証結果確認用データ41を送信する。
確認フラグ更新部28は、クライアント装置1の検証結果確認部13から、検証結果確認用データ41を受信すると、リポジトリ51に格納されている検証結果33の各指摘項目の確認フラグの値を更新する。
リポジトリ51は、ソースコードファイル31、前回計測時リビジョン32、検証結果33を、リビジョン毎に管理して記憶している。リポジトリ51は、外部装置に記憶されていてもよいし、静的解析装置2内の記憶装置に記憶されていてもよい。リポジトリ51によるリビジョン管理は、例えば、オープンソースソフトウェアのSubversion等のソフトウェアと同様の管理機能を有する。ソースコードファイル31は、静的解析の対象となるソースコードが記載されているファイルである。前回計測時リビジョン32は、前回静的解析を行なったソースコードファイル31のリビジョンである。前回計測時リビジョン32は、初期状態では何も格納されていないが、静的解析が実行される度に、静的解析時に指定されていたリビジョンで上書きされる。検証結果33は、静的解析による指摘項目のリストである。
[動作方法の説明]
次に、本実施形態における静的解析システム10において、静的解析結果表示方法の説明を行う。まず、本実施形態における静的解析システム10において、リポジトリ51にソースコードファイル31を格納する方法について説明する。図2は、本発明の実施形態における静的解析システム10において、リポジトリ51にソースコードファイル31を格納する方法を説明するためのフローチャートである。
(ステップS101)
クライアント装置1のリポジトリアクセス部11は、ソースコード格納要求と更新したソースコードファイルを、静的解析装置2のソースコードファイル格納部26に送信する。
(ステップS102)
静的解析装置2のソースコード格納部26は、リポジトリ51のソースコードファイル31を、ソースコード格納要求と同時に送信したソースコードファイルで更新する。
次に、本実施形態における静的解析システム10において、静的解析方法について説明する。図3は、本発明の実施形態における静的解析システム10の静的解析方法のフローチャートである。
(ステップS201)
実行トリガ部21は、ソースコードファイル31の静的解析の実行を開始する。実行トリガ21は、静的解析実行対象のソースコードファイル31の指定リビジョンと、前回計測時リビジョン32を比較する。実行トリガ部21は、両リビジョンの値が異なっている場合には、指定リビジョンのソースコードファイル31と、前回計測時のソースコードファイル31の間に差分があると判定する。実行トリガ部21は、両リビジョンの値が等しい場合には、指定リビジョンのソースコードファイル31と前回計測時ソースコード31の間に差分がないと判定する。実行トリガ部21は、差分がなければ、静的解析を実行せず、差分がある場合には、ステップS202に進む。ただし、前回計測時リビジョン32がリポジトリ51に格納されていなかった場合は、初回の静的解析処理の実行と判断し、ステップS202に進む。
(ステップS202)
ソースコードファイル取得部22は、リポジトリ51から静的解析実行対象のリビジョンのソースコードファイル31、及び前回計測時リビジョン32のソースコードファイル31を取得する。
(ステップS203)
差分取得部23は、リポジトリ51から静的解析実行対象のリビジョンのソースコードファイル31と、前回計測時リビジョン32のソースコードファイル31を比較して、ファイル差分情報、及び行差分情報を作成する。
図4は、本発明の実施形態における静的解析システム10のファイル差分情報である。ファイル差分情報は、ソースコードファイル31のファイル毎に、ファイル名、及び、「追加」、「変更」、「削除」のいずれかの状態を示すステータスを記録する。「追加」は、前回の静的解析実行時には、存在しなかったソースコードファイルであることを示す。「変更」は、前回の静的解析実行時から、変更されたソースコードファイルであることを示す。「削除」は、前回の静的解析実行時には、存在していたが、現在実行中の静的解析では、存在していないソースコードファイルであることを示す。初回の静的解析である場合には、静的解析実行対象の全てのソースコードファイル31に対して、ステータスを「追加」としたファイル差分情報を作成する。
図5は、本発明の実施形態における静的解析システム10の行差分情報である。行差分情報は、ファイル名、ソースコード変更後の変更後行番号、及び、ソースコード変更前の変更前行番号を有するレコードを記録する。行差分情報により、ソースコードファイル31のファイル毎に、ソースコード変更前の行番号とソースコード変更後の行番号の対応を把握できる。差分取得部23は、ファイル差分情報において、ファイル名に対応する前記ステータスが、「変更」であるソースコードファイル31に対してのみ、差分情報を作成してもよい。
図6は、本発明の実施形態における静的解析システム10の行差分情報の例である。図6では、ソースコードファイル31内で、前回静的解析実行時から変更のあったファイルの例としてSample.javaが記載されている。変更後Sample.javaは、変更前のSample.javaの9行目に対応するソースコードが削除されている。この変更に対応する行差分情報のレコードは、(ファイル名,変更後行番号,変更前行番号)=(Sample.java,0,9)となる。また、変更後Sample.javaは、変更前のSample.javaは、8行目と10行目のソースコードが追加されている。この変更に対応する行差分情報のレコードは、(ファイル名,変更後行番号,変更前行番号)=(Sample.java,8,0)と、(ファイル名,変更後行番号,変更前行番号)=(Sample.java,10,0)となる。(ファイル名,変更後行番号,変更前行番号)=(Sample.java,9,8)のように、変更後行番号の値と、変更前行番号の値が異なる行差分情報のレコードは、同一のソースコードであるが、変更により行番号がずれていることが示されている。
(ステップS204)
検証実行部24は、指定リビジョンの全ソースコードファイル31に対して、静的解析を行ない、検証結果33を作成する。
図7は、本発明の実施形態における静的解析システム10の検証結果33である。検証結果33に含まれる各指摘項目は、検証ID、ファイル名、開始行、終了行、指摘ルール、指摘内容及び確認フラグを含む。検証IDは、指摘項目毎に一意に割り振られる識別子である。ファイル名は、指摘項目が発生しているソースコードファイル31のファイル名である。開始行は、ソースコードファイル31の指摘対象となっている箇所の開始行の行番号である。終了行は、ソースコードファイル31の指摘対象となっている箇所の終了行の行番号である。指摘ルールは、静的解析対象となるソースコード31に適用するルールのルール名である。指摘内容は、指摘ルールに基づくソースコードの該当箇所に対するメッセージ内容である。確認フラグは、「未確認」、「確認済み」のどちらかの値が設定されるが、検証結果33をリポジトリ51に初めて登録する時には「未確認」が設定される。
(ステップS205)
検証結果更新部25は、リポジトリ51に格納された検証結果33の確認フラグが、「未確認」の全ての指摘項目を削除する。検証結果更新部25は、以降のステップの処理で、検証結果33の「未確認」指摘項目を作成し直す。
(ステップS206)
検証結果更新部25は、ファイル差分情報及び行差分情報を参照して、変更されたファイルについての削除行に係る指摘項目を削除する。また、検証結果更新部25は、ファイル差分情報を参照して、削除されたファイルに係る指摘項目を削除する。
(ステップS207)
検証結果更新部25は、行差分情報を参照し、検証結果33の各指摘項目の開始行、終了行を更新、削除する。ステップS207の処理の詳細については、具体例を用いて後述する。
(ステップS208)
検証結果更新部25は、検証結果33の各指摘項目の確認フラグに「未確認」を設定し、リポジトリ51に各指摘項目を追加する。ただし、ファイル名、開始行、終了行、指摘ルールが全て一致する指摘項目が、既にリポジトリ51の検証結果33に存在する場合には、当該指摘項目については追加しない。
(ステップS209)
検証結果更新部25は、リポジトリ51の前回計測時リビジョン32の値を、今回計測時の指定リビジョンの値で更新する。
次に、本発明の実施形態における静的解析システム10の静的解析結果確認方法について説明する。図8は、本発明の実施形態における静的解析システム10の静的解析結果確認方法のフローチャートである。
(ステップS301)
クライアント装置1の検証結果アクセス部12は、静的解析装置2の検証結果取得部27に検証結果格納要求を送信する。
(ステップS302)
静的解析装置2の検証結果取得部27は、リポジトリ51に格納された検証結果33から、確認フラグが「未確認」の指摘項目を全て抽出する。検証結果取得部27は、一覧の形式でクライアント装置1の画面に表示するための検証結果確認用データ41を作成して、クライアント装置1に返信する。
(ステップS303)
クライアント装置1の検証結果確認部13は、検証結果確認用データ41に基づいて、検証結果確認画面を表示する。図9は、本発明の実施形態における静的解析システム10の検証結果確認画面の例である。図9の一覧表の各行は、検証実行部24により作成された各指摘項目に対応している。図9の一覧表の各行は、確認フラグ、ファイル名、開始行、終了行、指摘ルール及び指摘内容から構成されている。確認フラグの列は、チェックボックスやプルダウンリストを備え、検証結果確認画面を閲覧するユーザが、各指摘項目に対するステータスを変更できる。
ユーザが、クライアント装置1の検証結果確認画面に表示された各指摘項目に対して、確認フラグをチェックすると、検証結果確認部13は、確認フラグがチェックされた指摘項目については、次回の静的解析からは表示不要と判断する。検証結果確認部13は、確認フラグがチェックされた指摘項目に対して、検証結果確認用データ41の対応する指摘項目の確認フラグを「確認済み」に更新する。
(ステップS304)
クライアント装置1の検証結果確認部13は、ステップS303で更新した検証結果確認用データ41を静的解析装置2の確認フラグ更新部28に送信する。
(ステップS305)
静的解析装置2の確認フラグ更新部28は、ステップS304でクライアント装置1から送信された検証結果確認用データ41に基づいて、リポジトリ51の検証結果33の各指摘項目の確認フラグの値を更新する。
次に、具体例を用いて、本発明の実施形態における静的解析システム10の静的解析結果表示方法を説明する。
図10は、検証結果更新部25によって更新されたリポジトリ51の検証結果33の例である。図11は、図10の検証結果33に基づいて作成された検証結果確認画面である。図11では、静的解析システム10のユーザが、1行目、2行目及び4行目の指摘項目の確認フラグを「確認済み」としてチェックしたことが示されている。クライアント装置1の検証結果確認部13は、検証結果確認用データ41を確認フラグ更新部28に送信する。図12は、本発明の実施形態における確認フラグ更新部28によって更新されたリポジトリ51の検証結果33の例である。
リポジトリ51の検証結果33が図12の状態のときに、ユーザがソースコードを変更したとする。リポジトリアクセス部11により、変更されたソースコードファイルが、ソースコードファイル格納部26に送信される。ソースコードファイル格納部26は、ユーザにより変更されたソースコードファイルを、リポジトリ51のソースコードファイル31に上書きする。この上書きによる変更で、リポジトリ51のソースコードファイル31のリビジョンがインクリメントされる。
次に、実行トリガ部21により、再度静的解析が実行される。図13は、本発明の実施形態における差分取得部23によって作成されたファイル差分情報及び行差分情報の例である。図14は、本発明の実施形態における検証実行部24により作成されたリポジトリ51保存前の検証結果である。
次に、検証結果更新部25は、図12の検証結果33から、確認フラグが「未確認」の指摘項目を削除する。図12の例では、検証IDが「0003」及び「0005」の指摘項目が削除される。
次に、検証結果更新部25は、図13のファイル差分情報を参照して、Sample1.javaが削除されていることを特定し、図12の検証結果33から、Sample1.javaに対する指摘項目である検証IDが「0001」の指摘項目を削除する。
次に、検証結果更新部25は、図13のファイル差分情報を参照して、Sample2.javaが変更されていることを特定し、行差分情報のSample2.javaに関するレコードを参照する。検証結果更新部25は、行差分情報を参照して、検証ID「0002」の指摘項目の開始行「100」及び終了行「101」に係る変更有無を確認する。図13の例では、(ファイル名、変更後行番号、変更前行番号)=(Sample2.java,0,100)であるレコードが存在するため、図12の検証結果33から検証IDが「0002」の指摘項目を削除する。
次に、検証結果更新部25は、行差分情報を参照して、検証ID「0004」の指摘項目の開始行「300」及び終了行「301」に係る変更有無を確認する。図13の例では、(ファイル名、変更後行番号、変更前行番号)=(Sample2.java,400,300)、(ファイル名、変更後行番号、変更前行番号)=(Sample2.java,401,400)であるレコードが存在するため、図12の検証結果33において、検証IDが「0004」の指摘項目の開始行を「400」、終了行を「401」に更新する。
次に、検証結果更新部25は、図14のリポジトリ51保存前の検証結果の各指摘項目を、リポジトリ51の検証結果33に追加する。検証結果更新部25は、図14の検証結果の1行目の指摘事項を、検証ID「0006」として、リポジトリ51の検証結果33に保存する。検証結果更新部25は、図14の検証結果の2行目の指摘事項を、検証ID「0007」として、リポジトリ51の検証結果33に保存する。検証結果更新部25は、図14の検証結果の3行目の指摘事項については、検証ID「0004」と同一であるため、リポジトリ51の検証結果33に、新たに保存しない。図14の検証結果の4行目の指摘事項を、検証ID「0008」として、リポジトリ51の検証結果33に保存する。図14の検証結果の5行目の指摘事項を、検証ID「0009」として、リポジトリ51の検証結果33に保存する。
以上をまとめると、図12で示されていたリポジトリ51の検証結果33は、図15に示される検証結果33に更新される。
図16は、図15の検証結果33に基づいて、本発明の実施形態における検証結果確認部13が表示する検証結果確認画面の例である。検証ID「0004」の指摘項目は、ユーザにより、前回の静的検証時に、「確認済み」としてチェックされていた。そのため、検証ID「0004」に対応する指摘項目は、検証結果確認画面に表示されていない。本実施形態では、検証ID「0004」のように、指摘項目の開始行及び終了行が、変更された場合であっても、ユーザが「確認済み」としてチェックしていた指摘項目と、同一の指摘項目であると識別できる。
本実施形態の静的解析システム10では、ユーザは、クライアント装置1の検証結果確認画面で「確認済み」とした指摘項目は、次回の静的解析で表示されない。そのため、ユーザによる検証結果33の指摘項目の確認作業が、煩雑さを低減することができる。ユーザは、必要な指摘項目のみを確認することができるため、効率よく指摘項目を確認できる。
また、本実施形態の静的解析システム10では、変更有無によらずに、全てのソースコードファイル31を静的解析するため、ソースコードを変更した箇所が、ソースコードを変更していない箇所に影響を及ぼすことにより、新たに追加された指摘項目も、洩れなく表示することができる。
本実施形態の静的解析システム10によれば、上述の2つの効果を同時に達成することができる。
本実施形態の静的解析システム10は、ソフトウェア開発プロジェクトにおいて、製造工程以降のフェーズで、定期的(例えば日次)に、静的解析装置2の実行トリガ21を設定して利用する方法が考えられる。このようにすることで、開発モジュールのソースコードファイル31の静的解析処理を定期的に実行でき、ソフトウェア開発者が、逐次的確に指摘項目を確認することができる。
また、レビュー(コードインスペクション)のレビューアが、本実施形態の静的解析システム10を利用すれば、検証結果画面を参照することにより、指摘項目の一覧から、効率的に、当該ソースコードのバグの傾向をつかむことができる。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
1 クライアント装置
2 静的解析装置
10 静的解析システム
11 リポジトリアクセス部
12 検証結果アクセス部
13 検証結果確認部
21 実行トリガ部
22 ソースコードファイル取得部
23 差分取得部
24 検証実行部
25 検証結果更新部
26 ソースコードファイル格納部
27 検証結果取得部
28 確認フラグ更新部
31 ソースコードファイル
32 前回計測時リビジョン
33 検証結果
41 検証結果確認用データ
51 リポジトリ

Claims (7)

  1. 静的解析装置と、
    前記静的解析装置のユーザインタフェースとなるクライアント装置と
    を備える静的解析システムであって、
    前記静的解析装置は、
    変更有無によらずに、全てのソースコードファイルを静的解析する検証実行部と、
    前記ソースコードファイル及び前記検証実行部による検証結果を、リビジョン毎に保存するリポジトリと、
    前記検証結果において、各指摘項目を前記クライアント装置の画面に表示するかどうかを示す確認フラグを更新する確認フラグ更新部と
    を備え、
    前記クライアント装置は、
    前記静的解析装置から、前記検証結果を取得する検証結果アクセス部と、
    前記検証結果の指摘項目の一覧、及び、次の静的解析時では表示不要な前記指摘項目をユーザに選択させる画面を表示し、前記選択させた前記表示不要な指摘項目を含む前記検証結果を、前記確認フラグ更新部に送信する検証結果確認部と
    を備える静的解析システム。
  2. 前記静的解析装置は、
    行差分情報を作成する差分取得部と、ここで、前記行差分情報は、前記ソースコードファイル毎に、前回の静的解析実行時のリビジョンの前記ソースコードファイルの行番号と、今回の静的解析実行時のリビジョンの前記ソースコードファイルの行番号との対応関係を記録し、
    前記行差分情報を参照して、前記表示不要な指摘項目に対応するソースコードの行番号が変更された場合であっても、対象の指摘項目が、前記表示不要な指摘項目であることを特定する検証結果更新部と
    を更に備える請求項1に記載の静的解析システム。
  3. 前記差分取得部は、
    ファイル差分情報を更に作成し、ここで、前記ファイル差分情報は、前記ソースコードファイルのファイル名及び、「追加」、「変更」、「削除」のいずれかの状態を示すステータスを記録し、
    前記差分取得部は、前記ファイル差分情報において、前記ファイル名に対応する前記ステータスが、「変更」である前記ソースコードファイルに対してのみ、前記行差分情報を作成する
    請求項2に記載の静的解析システム。
  4. 静的解析装置と、
    前記静的解析装置のユーザインタフェースとなるクライアント装置と
    を備える静的解析システムにおいて、
    前記静的解析装置の検証実行部が、変更有無によらずに、全てのソースコードファイルを静的解析するステップと、
    前記静的解析装置のリポジトリが、前記ソースコードファイル及び前記検証実行部による検証結果を、リビジョン毎に保存するステップと、
    前記静的解析装置の確認フラグ更新部が、前記検証結果において、各指摘項目を前記クライアント装置の画面に表示するかどうかを示す確認フラグを更新するステップと
    を備え、
    前記クライアント装置の検証結果アクセス部が、前記静的解析装置から、前記検証結果を取得するステップと、
    前記クライアント装置の検証結果確認部が、前記検証結果の指摘項目の一覧、及び、次の静的解析時では表示不要な前記指摘項目をユーザに選択させる画面を表示するステップと、
    前記クライアント装置の検証結果確認部が、前記選択させた前記表示不要な指摘項目を含む前記検証結果を、前記確認フラグ更新部に送信するステップと
    を含む静的解析結果表示方法。
  5. 前記静的解析装置の差分取得部が、行差分情報を作成するステップと、ここで、前記行差分情報は、前記ソースコードファイル毎に、前回の静的解析実行時のリビジョンの前記ソースコードファイルの行番号と、今回の静的解析実行時のリビジョンの前記ソースコードファイルの行番号との対応関係を記録し、
    前記静的解析装置の検証結果更新部が、前記行差分情報を参照するステップと、
    前記静的解析装置の検証結果更新部が、前記表示不要な指摘項目に対応するソースコードの行番号が変更された場合であっても、対象の指摘項目が、前記表示不要な指摘項目であることを特定するステップと
    を更に含む請求項4に記載の静的解析結果表示方法。
  6. 前記差分取得部が、ファイル差分情報を作成するステップと、ここで、前記ファイル差分情報は、前記ソースコードファイルのファイル名及び、「追加」、「変更」、「削除」のいずれかの状態を示すステータスを記録し、
    前記行差分情報を作成するステップは、
    前記ファイル差分情報において、前記ファイル名に対応する前記ステータスが、「変更」である前記ソースコードファイルに対してのみ、前記行差分情報を作成する
    請求項5に記載の静的解析結果表示方法。
  7. 請求項4乃至6のいずれか1項に記載の静的解析結果表示方法をコンピュータに実行させるためのプログラム。
JP2011183099A 2011-08-24 2011-08-24 静的解析システム、静的解析結果表示方法及びプログラム Pending JP2013045307A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011183099A JP2013045307A (ja) 2011-08-24 2011-08-24 静的解析システム、静的解析結果表示方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011183099A JP2013045307A (ja) 2011-08-24 2011-08-24 静的解析システム、静的解析結果表示方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2013045307A true JP2013045307A (ja) 2013-03-04

Family

ID=48009162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011183099A Pending JP2013045307A (ja) 2011-08-24 2011-08-24 静的解析システム、静的解析結果表示方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2013045307A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016018307A (ja) * 2014-07-07 2016-02-01 富士通株式会社 開発支援プログラム,開発支援方法及び開発支援装置
WO2017119057A1 (ja) * 2016-01-05 2017-07-13 三菱電機株式会社 表示制御装置及び表示制御方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08194611A (ja) * 1995-01-19 1996-07-30 Hitachi Ltd プログラム修正による影響範囲を解析する装置
JPH11134187A (ja) * 1997-10-27 1999-05-21 Fujitsu Ltd ソースプログラム解析装置およびそのプログラム記憶媒体
JP2004126866A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 記述出力抑制プログラム解析装置及び記述出力抑制プログラム解析方法
JP2005190330A (ja) * 2003-12-26 2005-07-14 Matsushita Electric Ind Co Ltd ソースプログラムのレビュー支援システム
JP2006344145A (ja) * 2005-06-10 2006-12-21 Fujitsu Ltd ソースコード解析プログラムおよびソースコード解析方法
WO2008129619A1 (ja) * 2007-04-09 2008-10-30 Fujitsu Limited ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置
JP2010198522A (ja) * 2009-02-27 2010-09-09 Hitachi Ltd ソースコード解析方法およびソースコード解析支援システム
JP2011081496A (ja) * 2009-10-05 2011-04-21 Toshiba Corp 成果物レビュー支援装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08194611A (ja) * 1995-01-19 1996-07-30 Hitachi Ltd プログラム修正による影響範囲を解析する装置
JPH11134187A (ja) * 1997-10-27 1999-05-21 Fujitsu Ltd ソースプログラム解析装置およびそのプログラム記憶媒体
JP2004126866A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 記述出力抑制プログラム解析装置及び記述出力抑制プログラム解析方法
JP2005190330A (ja) * 2003-12-26 2005-07-14 Matsushita Electric Ind Co Ltd ソースプログラムのレビュー支援システム
JP2006344145A (ja) * 2005-06-10 2006-12-21 Fujitsu Ltd ソースコード解析プログラムおよびソースコード解析方法
WO2008129619A1 (ja) * 2007-04-09 2008-10-30 Fujitsu Limited ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置
JP2010198522A (ja) * 2009-02-27 2010-09-09 Hitachi Ltd ソースコード解析方法およびソースコード解析支援システム
JP2011081496A (ja) * 2009-10-05 2011-04-21 Toshiba Corp 成果物レビュー支援装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016018307A (ja) * 2014-07-07 2016-02-01 富士通株式会社 開発支援プログラム,開発支援方法及び開発支援装置
WO2017119057A1 (ja) * 2016-01-05 2017-07-13 三菱電機株式会社 表示制御装置及び表示制御方法
JPWO2017119057A1 (ja) * 2016-01-05 2018-03-01 三菱電機株式会社 表示制御装置及び表示制御方法

Similar Documents

Publication Publication Date Title
US11960388B2 (en) System and method for data collection and analysis of information relating to mobile applications
US7769821B2 (en) Systems and methods for enhanced meassage support using a generic client proxy
US8762929B2 (en) System and method for exclusion of inconsistent objects from lifecycle management processes
EP3152654B1 (en) Automatic software-update framework
US20130191814A1 (en) Test scenario generation method, test scenario generation system, and test scenario generation program
CN107562419B (zh) 软件开发支援方法及系统
CN110795910B (zh) 一种文本信息处理方法、装置、服务器及存储介质
JP2009104229A (ja) 入力チェック装置および入力チェック方法
CN110990346A (zh) 基于区块链的文件数据处理方法、装置、设备及存储介质
CA2429335A1 (en) System and method of determining impact of reports based on metadata model changes
JP5006824B2 (ja) テストプログラム管理システム
JP2013045307A (ja) 静的解析システム、静的解析結果表示方法及びプログラム
CN108073511B (zh) 测试代码生成方法和装置
US20110107318A1 (en) Simplifying Maintenance of Large Software Systems
JP2007122429A (ja) 情報提供システム、装置、及び方法
US10146473B2 (en) Systems and methods of subject state change notification
US8707307B2 (en) Creating jobs by replacing execution attributes within job definition when a job activation request is received with execution attributes based on predetermined conditions being satisfied
JP2008015975A (ja) アプリケーション設定情報更新方法
US20090006649A1 (en) Display control apparatus, display control program and display control method
US11526900B2 (en) Aggregation system and control method of the same
TW201417029A (zh) 原始程式碼管理系統、原始程式碼管理方法以及原始程式碼管理程式
CN109828781B (zh) 用于问题排查的源码版本定位方法、装置、介质和设备
JP2007264937A (ja) プログラム移送制御システムと方法およびプログラム
US11544454B2 (en) Method, apparatus and computer program product for document change management in original and tailored documents
JP2009223717A (ja) 文書管理装置、文書管理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140708

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150417

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20151013