(57)【特許請求の範囲】
【請求項１】
ソフトウェアのソースコードの解析処理の結果を保存する解析データ保管部と、
前記解析データ保管部に保存した前回解析時の解析結果を参照して、修正されたソースコードを含む対象ソースコードから、修正部分を抽出した再解析用のソースコードを生成する解析対象ソースコード生成部と、
前記再解析用のソースコードの静的解析を実行する静的解析部を備える、静的解析装置。
【請求項２】
前記解析データ保管部に保存されるソースコードの解析結果は、
前記解析結果を一意に識別可能にする識別ＩＤと、
ソースコードのどの範囲を解析したのかということを表す解析範囲と、
ソースコードのどの処理フローを解析したのかということを示す情報であり、この情報をソースコードに当てはめるとソースコードの処理フローが一意に定まるフロー制御情報と、
不具合の詳細情報である不具合判定、不具合種別、及び不具合発生箇所とを含む、請求項１に記載の静的解析装置。
【請求項３】
前記解析対象ソースコード生成部は、
前記解析データ保管部に保存されている前記解析範囲の情報から、前記不具合の詳細情報を基に修正したソースコードから修正した該当部分を抽出し、
前記解析データ保管部に保存されている前記フロー制御情報から、解析対象の処理フローに関連するソースコードを生成し、
その生成したソースコードを前記該当部分に付与して再解析用のソースコードを生成する機能を備える、請求項２に記載の静的解析装置。
【請求項４】
ソースコードの表示と修正及びソースコードの解析処理の結果の表示を行う利用者端末と、
前記利用者端末で修正されたソースコード及び修正以前の全てのリビジョンのソースコードを保存するソースコード保管部と、
ソフトウェアのソースコードの解析処理の結果を保存する解析データ保管部と、
前記解析データ保管部に保存した前回解析時の解析結果を参照して、前記ソースコード保管部に保存された前記修正されたソースコードを含む対象ソースコードから、修正部分を抽出した再解析用のソースコードを生成する解析対象ソースコード生成部と、
前記再解析用のソースコードの静的解析を実行する静的解析部と、
を備える、静的解析装置。
【請求項５】
解析データ保管部に保存された前回解析時の解析結果から、ソースコードのどの範囲をどのような条件で解析した際に不具合が発生したかの情報を取得し、
その取得した情報を基に再解析用のソースコードを生成し、
前記再解析用のソースコードの解析を実行するソースコードの静的解析方法。
【請求項６】
一つまたは複数の不具合を修正したソースコードを処理対象とする、請求項５に記載のソースコードの静的解析方法。
【請求項７】
利用者端末は、前回解析時の解析結果を表示し、それを参照しながらソースコードを修正して、引き続き静的解析を指示する、請求項５または６に記載のソースコードの静的解析方法。
【請求項８】
解析データ保管部に保存された前回解析時の解析結果を参照して、
入力された対象ソースコードから修正部分を抽出した再解析用のソースコードを生成する処理と、
前記再解析用のソースコードの解析を実行する処理を、コンピュータに実行させるプログラム。
【請求項９】
利用者端末上に前回解析時の解析結果を表示し、それを参照しながらソースコードを修正して、
引き続き静的解析の指示を行う処理をコンピュータに実行させる、請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソースコードの静的解析を行う静的解析装置、システム、方法、及びそのためのプログラムに関する。
【背景技術】
【０００２】
ソースコードの静的解析システムとは、プログラムを実行することなくソースコードの解析から不具合を検出するシステムである。
【０００３】
このようなシステムは解析処理を実行するのに多大な時間を要するため、不具合を修正した後に再度解析を行うときには、修正した部分のみを解析することで解析にかかる時間を短縮しようとする試みが行われてきた。
【０００４】
その一例が特許文献１に記載されている。
【０００５】
特許文献１に記載された静的解析システムは、モデル検査方式を用いた静的解析システムであって、再解析時には修正されたソースコード全体を解析し、その解析過程のモデル作成時に前回解析時のモデルと比較し、差分を抽出してその部分のみを検証することで解析に要する時間を短縮する、という手法を用いている。
【０００６】
モデルとは、ソースコードをコントロール・フロー・グラフ（Control Flow Graph）に変換後、論理式化したものである。モデル検査方式とは、モデルを利用してプログラム実行時における全てのデータパターン、全ての処理パスを網羅して検証する静的解析の方式の一つである。
【０００７】
また、特許文献２に記載された静的解析システムは、解析の対象となるソースコードを流用部分と新規作成部分とに分け、新規作成部分のみを静的解析の対象とすることによって、解析処理の実行時間を短縮させる、という手法を用いている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−１９８５５８号公報
【特許文献２】特開２０１１−１１３２９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
開発現場では、一度静的解析を実行し検出した不具合に対応したソースコードの修正を行った後に、その不具合の修正確認を行うために何度も静的解析を実行したいという要望がある。
【００１０】
しかしながら、上述した特許文献１に記載された技術は、再解析の場合であってもソースコード全体をモデル化するため、ソースコードの行数が多いときは短縮される時間が十分でないという問題点がある。
【００１１】
また、特許文献２に記載された技術は、静的解析の対象としない流用部分を判別するために、流用の関係にあるソースコードの有無を、システムで管理しているソースコードの全てを検索して、かつ対象ソースコード全体と比較し判定する必要がある。したがって、大規模なシステムでは静的解析の対象としない流用部分を判別するために大量のソースコードを処理する必要があり、そのために多大な時間を要するという問題点がある。２回目以降の再解析処理を実施する場合においても、この流用部分の判別処理は同じ処理を行う必要があるので、同じ問題点がある。
【００１２】
また、流用と判別された場合においても、流用元のソースコードが本当に静的解析の対象外とすることが可能な品質であるか否かの判断が、システムの利用者に委ねられており、静的解析処理によって潜在的な不具合を検出する機会を失う可能性もある。
【００１３】
本発明の目的の一例は、上述した問題点を解決できるソースコード静的解析装置、システム、方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明の一形態における第一の静的解析装置は、ソフトウェアのソースコードの解析処理の結果を保存する解析データ保管部と、前記解析データ保管部に保存した前回解析時の解析結果を参照して、修正されたソースコードを含む対象ソースコードから、修正部分を抽出した再解析用のソースコードを生成する解析対象ソースコード生成部と、前記再解析用のソースコードの静的解析を実行する静的解析部を備える。
【００１５】
本発明の一形態における第一の再解析用のソースコードの解析を実行する方法は、解析データ保管部に保存された前回解析時の解析結果から、ソースコードのどの範囲をどのような条件で解析した際に不具合が発生したかの情報を取得し、その取得した情報を基に再解析用のソースコードを生成し、前記再解析用のソースコードの解析を実行する。
【００１６】
本発明の一形態における第一のソースコード解析プログラムは、コンピュータに、解析データ保管部に保存された前回解析時の解析結果を参照して、入力された対象ソースコードから修正部分を抽出した再解析用のソースコードを生成する処理と、前記再解析用のソースコードの解析を実行する処理を、実行させる。
【発明の効果】
【００１７】
本発明によれば、複数回の静的解析を実行する場合に、前回解析時の解析結果を利用してソースコードに複数ある処理フローのうち一つまたは複数の処理フローに解析範囲を絞ることにより、解析対象から外す処理フローの流用部分の判別処理が不要になるため、解析処理を短時間で実行できるという効果が得られる。また、不具合が正しく修正されたかどうかを再解析によって保証することができるので、潜在的な不具合を見逃すことを防ぐことができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の第一の実施の形態の構成を示すブロック図である。
【図２】図２は、第一の実施の形態におけるソースコード静的解析システムをコンピュータ装置とその周辺装置で実現したハードウェア構成を示す図である。
【図３】図３は、第一の実施の形態におけるソースコード静的解析システムの動作の概略を示すフローチャートである。
【図４】図４は、第一の実施の形態における解析データ保管部に格納される解析結果データの一例を示す図である。
【図５】図５は、本発明の第二の実施の形態におけるソースコード静的解析システムの動作の概略を示すフローチャートである。
【図６】図６は、本発明の第三の実施の形態の構成を示すブロック図である。
【図７】図７は、本発明の第三の実施の形態におけるソースコード静的解析システムの動作の概略を示すフローチャートである。
【発明を実施するための形態】
【００１９】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【００２０】
なお、一般的に、プログラムを実行することなくソースコードの解析から不具合を検出する静的解析システムは、プログラムのどのような処理フローにおいて、どのような不具合が発生したのかということを解析結果として出力する。
【００２１】
本発明の実施形態では、その解析結果は図４のような情報を保有している。本実施形態において、解析結果は、プログラムの処理フローの解析ごとに得られ、解析データともいう。各解析データは識別ＩＤにより一意に識別可能となっている。各解析データは、識別ＩＤと、解析範囲と、フロー制御情報と、不具合判定と、不具合種別と、不具合発生箇所を含む。
【００２２】
解析範囲とは、ソースコードのどの範囲を解析したのかということを関数単位で表している。図４では、解析範囲が関数（ｆｕｎｃ）Ａ，Ｂ，Ｃ，Ｄ，Ｅで示される。フロー制御情報とは、ソースコードのどの処理フローを解析したのかということを示す情報であり、この情報をソースコードに当てはめるとソースコードの処理フローが一意に定まる。さらに、不具合判定、不具合種別、不具合発生箇所とは、不具合の詳細情報である。不具合判定が「×」となっている場合は、当該処理フローでは不具合が発生しなかったことを表す。
【００２３】
［第一の実施の形態］
図１は、本発明の第一の実施の形態におけるソースコード静的解析システム１００の構成を示すブロック図である。図１を参照すると、ソースコード静的解析システム１００は、入出力部１１０と送受信部１２０と静的解析装置１３０とを備える。静的解析装置１３０は、解析対象ソースコード生成部１３１と解析データ保管部１３２と静的解析部１３３を備える。
【００２４】
次に、第一の実施の形態におけるソースコード解析システム１００の構成について説明する。
【００２５】
入出力部１１０は、本ソースコード解析システムの利用者からの入力を受け付け、さらに利用者に解析結果を通知する機能を有する。利用者は、入出力部１１０を用いて、前回解析時の解析結果を基に修正したソースコード（以下、対象ソースコードとも言う）と、修正した不具合の詳細情報を含む前回解析時の解析結果、を識別するためのＩＤ（以下、不具合識別ＩＤとも言う）と、静的解析の実行要求を入力する。これにより、入出力部１１０は、修正したソースコードと、前述の不具合識別ＩＤと、静的解析の実行要求を送受信部１２０に出力する。
【００２６】
送受信部１２０は、入出力部１１０からの静的解析の実行要求を受け付け、その要求を静的解析装置１３０に転送し、その結果を静的解析装置１３０から受け取り、入出力部１１０に返すものである。この送受信部１２０は、入出力部１１０に含まれても良い。また、送受信部１２０は、静的解析装置１３０に含まれても良い。送受信部１２０は、入出力部１１０と静的解析装置１３０とのデータ、制御情報の受け渡しのためのインタフェースとしての機能だけでも良い。
【００２７】
解析対象ソースコード生成部１３１は、入出力部１１０から送受信部１２０を経由して、対象ソースコードと、修正した不具合識別ＩＤを受け取る。さらに、解析対象ソースコード生成部１３１は、そのソースコード及び識別ＩＤに対応した前回解析時の解析結果を解析データ保管部１３２から取得し、再解析用のソースコードである解析データ付与ソースコードを生成する。そして、生成した解析データ付与ソースコードを静的解析部１３３に渡す。
【００２８】
なお、解析対象ソースコード生成部１３１は、図４の解析データにおける識別ＩＤ「１」のように、フロー制御情報に、処理フローに関わる変数の値が明確に定められている場合は、その変数の値をそのまま使い解析データ付与ソースコードを生成する。識別ＩＤ「２」のように、フロー制御情報に条件式の形式で記述されている場合は、その条件式を満たすように適切に解析対象ソースコード生成部１３１が変数の値を設定し、解析データ付与ソースコードを生成する。
【００２９】
解析データ保管部１３２は、解析対象ソースコード生成部１３１に、前述のソースコードと識別ＩＤに対応した前回解析時の解析結果を提供すると共に、静的解析部１３３から今回の解析結果を受け取り保存する。
【００３０】
静的解析部１３３は、解析対象ソースコード生成部１３１から渡された解析データ付与ソースコードに対し静的解析を実施し、解析結果を解析データ保管部１３２に出力する。
【００３１】
図２は、本発明の実施形態をコンピュータ装置で実現したハードウェア構成の一例を示す図である。
【００３２】
本構成は、図２に示されるように入出力装置２１０、ＣＰＵ２２０、メモリ２３０、プログラムやデータを格納するハードディスク等の外部記憶装置２４０、及び、それらの装置間をつなぐバス２５０を含む。
【００３３】
ＣＰＵ２２０は、オペレーティングシステムを動作させて本発明の第一の実施の形態に係るソースコード静的解析システム１００の全体を制御する。また、ＣＰＵ２２０は、例えばドライブ装置などに装着された外部記憶装置２４０からメモリ２３０にプログラムやデータを読み出す。また、ＣＰＵ２２０は、第一の実施の形態における送受信部１２０、解析対象ソースコード生成部１３１、静的解析部１３３、及び解析データ保管部１３２の一部として機能し、プログラムに基づいて各種の処理を実行する。
【００３４】
外部記憶装置２４０は、例えば光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、または半導体メモリ等である。記憶装置の一部の記憶媒体は、不揮発性記憶装置であり、そこにプログラムを記録する。
【００３５】
入出力装置２１０は、例えばマウスやキーボード、内蔵のキーボタン、タッチパネルなどで実現される入力操作に用いられる装置、及び、例えばディスプレイで実現される出力を確認する装置を含む。
【００３６】
以上のように、図1に示す第一の実施の形態は、図２に示されるハードウェア構成によって実現される。ただし、図1のソースコード静的解析システム１００が備える各部の実現手段は特に限定されない。すなわち、ソースコード静的解析システム１００は、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した二つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
【００３７】
以上のように構成されたソースコード静的解析システム１００の動作について、図３のフローチャートを参照して説明する。
【００３８】
図３は、第一の実施の形態におけるソースコード静的解析システム１００での静的解析の動作の概要を示すフローチャートである。なお、このフローチャートによる処理は、前述したＣＰＵによるプログラム制御に基づいて、実行されても良い。
【００３９】
まず、利用者は、入出力部１１０から、前回解析時の解析結果を基に修正したソースコードと、修正した不具合識別ＩＤと、静的解析の実行要求を入力する。（ステップＳ１０１）
例えば、ソースコードに関数（ｆｕｎｃ）Ａ、Ｂ、Ｃが含まれており、前回の解析時の解析結果で関数Ａに不具合が見つかったとすると、その解析結果を基に修正した関数Ａ´と元の関数Ｂ及び関数Ｃとを含むソースコードと、修正した不具合識別ＩＤ（たとえば、解析ＩＤ「１」）が入力の対象となる。
【００４０】
次に、送受信部１２０は、入出力部１１０から実行要求を受け付け、前述のソースコード及び前述の不具合識別ＩＤを解析対象ソースコード生成部１３１へ渡す。（ステップＳ１０２）
解析データ保管部１３２に保存された前回解析時の解析結果には、それぞれ一意に識別できる前述の不具合識別ＩＤが与えられているため、解析対象ソースコード生成部１３１は、解析データ保管部１３２から、不具合識別ＩＤに対応した不具合の解析結果を読み出す。（ステップＳ１０３）
次に、解析対象ソースコード生成部１３１は、入手した前述の不具合の解析結果に含まれている解析範囲の情報を基に、前回解析時の解析結果を基に修正したソースコードから不具合部分を修正した該当部分を抽出する。さらに、解析対象ソースコード生成部１３１は、入手した前述の不具合の解析結果に含まれているフロー制御情報から、対象の処理フローに関連するソースコードを生成し、その生成したソースコードを前述の該当部分に付与して解析データ付与ソースコードを生成する。（ステップＳ１０４）
例えば前述の例によると、修正した関数Ａ´と元の関数Ｂ及び関数Ｃを含むソースコードから、前述の不具合の解析結果に含まれている解析範囲の情報を基に関数Ａ´を抽出し、抽出した関数Ａ´にフロー制御情報から生成したソースコードを付与して、新たに解析データ付与ソースコードを生成する。
【００４１】
次に、解析対象ソースコード生成部１３１は、生成された解析データ付与ソースコードを静的解析部１３３に渡し、静的解析部１３３は静的解析を実施する。（ステップＳ１０５）
次に、静的解析部１３３は、送受信部１２０と解析データ保管部１３２に解析結果を渡し、解析データ保管部１３２は受け取った解析結果を保存する。（ステップＳ１０６）
最後に、送受信部１２０は、静的解析部１３３から受け取った解析結果を入出力部１１０に通知する。（ステップＳ１０７）
以上で、ソースコード静的解析システム１００は、静的解析の動作を終了する。
【００４２】
なお、以上の動作の概要説明に限らず、送受信部１２０が静的解析装置１３０の一連の静的解析の動作を制御してもよい。
【００４３】
次に、本発明の第一の実施の形態の効果について説明する。
【００４４】
上述した本実施形態におけるソースコード解析システム１００は、前回の解析時の解析結果を利用してソースコード中に複数ある処理フローのうち一つのフローにのみ解析範囲を絞っているため、ソースコード全体のモデル化にかかる時間や、流用部分を判別するためにかかる時間を省くことができ、従来の技術に比べて静的解析を短時間で実行できる。
【００４５】
また、不具合が正しく修正されたかどうかを静的解析部１３３によって保証することができるので、人手で修正状況を確認する場合よりも作業時間を短縮でき、さらに見逃し等の人的ミスを防ぐことができる。
【００４６】
［第二の実施形態］
次に、本発明の第二の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【００４７】
第一の実施の形態では、前回の解析で複数の不具合が発見された場合でも、そのうちの一つの不具合を修正するたびに再解析を実施している。これは、利用者の、修正した内容が正しいかどうかをなるべく早く知りたいという要望のためである。
【００４８】
しかし、不具合の内容によっては、複数の不具合を同時に修正して再解析を一度に実施したい、という要望も存在する。
【００４９】
そこで、第二の実施の形態では、一つまたは複数の不具合を修正したソースコードを本システムに入力し、解析データ付与ソースコードを生成し、その一つまたは複数の解析データ付与ソースコードから、一つの解析対象ソースコードを作成して再解析を実施する。
【００５０】
次に第二の実施の形態における動作を図５のフローチャートを参照して説明する。
【００５１】
まず、利用者は、入出力部１１０から、前回解析時の解析結果を基に修正したソースコードと、修正した不具合の解析結果を表す一つまたは複数の不具合識別ＩＤと、静的解析の実行要求を入力する。（ステップＳ２０１）
次に、送受信部１２０は、静的解析の実行要求を受け付け、前述のソースコード及び前述の複数の不具合識別ＩＤを解析対象ソースコード生成部１３１へ渡す。（ステップＳ２０２）
解析対象ソースコード生成部１３１は、渡されたソースコードと不具合識別ＩＤに対応した不具合を示す解析結果の一つを、解析データ保管部１３２から入手する。（ステップＳ２０３）
次に、解析対象ソースコード生成部１３１は、その不具合を示す解析結果に含まれている解析範囲の情報とフロー制御情報から、前述のステップＳ１０４と同様に解析データ付与ソースコードを生成する。（ステップＳ２０４）
次に、入力された一つまたは複数の不具合識別ＩＤが、全て処理されて解析データ付与ソースコードが生成されていれば、ステップＳ２０６へ進み、まだ未処理の不具合識別ＩＤがあれば、ステップＳ２０３に戻り繰り返し処理を行う。（ステップＳ２０５）
全ての不具合識別ＩＤが処理された場合、解析対象ソースコード生成部１３１は、生成された全ての解析データ付与ソースコードから、解析対象のソースコードを作成する。（ステップ２０６）
次に、解析対象ソースコード生成部１３１は、作成された解析対象のソースコードを静的解析部１３３に渡し、静的解析部１３３は静的解析を実施する。（ステップＳ２０７）
次に、静的解析部１３３は、送受信部１２０と解析データ保管部１３２に解析結果を渡し、解析データ保管部１３２は受け取った解析データを保存する。（ステップＳ２０８）
最後に、送受信部１２０は、静的解析部１３３から受け取った解析結果を入出力部１１０に通知する。（ステップＳ２０９）
以上で、ソースコード静的解析システム１００は、一つまたは複数の不具合を修正したソースコードに対する静的解析の動作を終了する。
【００５２】
次に、本発明の第二の実施の形態の効果について説明する。
【００５３】
上述した第二の実施の形態におけるソースコード解析システム１００は、一つまたは複数の不具合を修正したソースコードに対し一度に静的解析を実施するため、修正したソースコードと対応する不具合識別ＩＤの組を、複数回入力する手間を省くことができる。
【００５４】
［第三の実施形態］
次に、本発明の第三の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【００５５】
第一、及び第二の実施の形態では、一つまたは複数の不具合を修正し再解析を実施するたびに、毎回、対象ソースコードと、対応する不具合識別ＩＤを入力する必要がある。
【００５６】
また、ソースコードの修正を別の装置で行い、その後に修正されたソースコードを本システムに入力する必要があり、手間がかかると共に、利用者が対象ソースコードと不具合識別ＩＤの対応を間違えて入力する可能性もある。
【００５７】
そこで、第三の実施の形態では、利用者端末とソースコード保管部を追加し、利用者がソースコードの修正後に引き続き静的解析の実施を指示することにより、修正後のソースコードを本システムに入力する手間を省き、さらに、対象ソースコードと不具合識別ＩＤの対応を間違える可能性を無くした。
【００５８】
図６は、本発明の第三の実施の形態におけるソースコード静的解析システム６００の構成を示すブロック図である。
【００５９】
図６を参照すると、本実施形態のソースコード静的解析システム６００は、第一の実施形態のそれと比べて、利用者端末６４０とソースコード保管部６５０とを追加している。
【００６０】
利用者端末６４０は、ソースコード保管部６５０のソースコードを表示・編集する機能と、解析データ保管部６３２の解析結果を表示する機能、及び静的解析装置６３０に静的解析の実施を指示する機能を有する。
【００６１】
ソースコード保管部６５０は、利用者端末６４０によって修正されたソースコード、及び修正前の全てのリビジョンのソースコードを保持するリポジトリである。
【００６２】
送受信部６２０は、利用者端末６４０およびソースコード保管部６５０と静的解析装置６３０とのインタフェース機能を有する。
【００６３】
以上のように構成されたソースコード静的解析システム６００の動作について、図７のフローチャートを参照して説明する。
【００６４】
図７は、第三の実施の形態におけるソースコード静的解析システム６００での静的解析の動作の概要を示すフローチャートである。
【００６５】
まず、利用者は、利用者端末６４０上で修正対象のソースコードのＩＤを指定する。（ステップＳ３０１）このソースコードのＩＤは、送受信部６２０に出力される。
【００６６】
利用者端末６４０は、指定されたソースコードのＩＤに対応するソースコードをソースコード保管部６５０のリポジトリから取り出し、利用者端末６４０の画面上に表示する。さらに、送受信部６２０は、解析データ保管部６３２から、指定されたソースコードのＩＤに対応した前回解析時の解析結果を取り出し、一つまたは複数の不具合の詳細情報を、送受信部６２０を経由して利用者端末６４０に出力する。これにより、利用者端末６４０の画面上に不具合を示す解析結果を表示する。（ステップＳ３０２）解析結果の表示では、不具合の詳細情報の不具合識別ＩＤを含めて表示する。
【００６７】
そして、利用者の操作に基づき、利用者端末６４０は、修正対象のソースコードに対して一つまたは複数の不具合を修正し、修正したソースコードの保存と静的解析の実施を指示する。（ステップＳ３０３）次に、ソースコード保管部６５０は、修正されたソースコードをリポジトリに保存する。(ステップＳ３０４）
送受信部６２０は、静的解析の実施の指示を受け付け、利用者端末６４０から修正したソースコードのＩＤ及び修正された一つまたは複数の不具合識別ＩＤを受信し、解析対象ソースコード生成部６３１へ渡す。（ステップＳ３０５）
解析対象ソースコード生成部６３１は、渡されたソースコードのＩＤに対応したソースコードを送受信部６２０を介してソースコード保管部６５０から入手する。（ステップＳ３０６）
また、解析対象ソースコード生成部６３１は、渡されたソースコードのＩＤと不具合識別ＩＤに対応した不具合を示す解析結果の一つを、解析データ保管部６３２から入手する。（ステップＳ３０７）
次に、解析対象ソースコード生成部６３１は、その不具合を示す解析結果に含まれている解析範囲の情報とフロー制御情報から、解析データ付与ソースコードを生成する。（ステップＳ３０８）
次に、渡された一つまたは複数の不具合識別ＩＤが、全て処理されて解析データ付与ソースコードが生成されていれば、ステップＳ３１０へ進み、まだ未処理の不具合識別ＩＤがあれば、ステップＳ３０７に戻り繰り返し処理を行う。（ステップＳ３０９）
一つまたは複数の不具合識別ＩＤが全て処理された場合、解析対象ソースコード生成部６３１は、生成された全ての解析データ付与ソースコードから、解析対象のソースコードを作成する。（ステップ３１０）
次に、解析対象ソースコード生成部６３１は、作成された解析対象のソースコードを静的解析部６３３に渡し、静的解析部６３３は静的解析を実施する。（ステップＳ３１１）
次に、静的解析部６３３は、送受信部６２０と解析データ保管部６３２に解析結果を渡し、解析データ保管部６３２は受け取った解析データを保存する。（ステップＳ３１２）
最後に、送受信部６２０は、静的解析部６３３から受け取った解析結果を利用者端末６４０上に表示して利用者に通知する。（ステップＳ３１３）
以上で、ソースコード静的解析システム６００は、利用者端末上で一つまたは複数の不具合の修正がされたソースコードの静的解析の動作を終了する。
【００６８】
次に、本発明の第三の実施の形態の効果について説明する。
【００６９】
第三の実施の形態では、利用者端末とソースコード保管部をソースコード静的解析システムに追加したことにより、利用者は、利用者端末上に前回解析時の解析結果を表示し、それを参照しながらソースコードを修正して、引き続き静的解析の実施の指示を行うことができる。
【００７０】
そのため、静的解析の都度修正後のソースコードをシステムに入力する手間を省き、さらに、ソースコードの入力間違いや、修正したソースコードと不具合識別ＩＤの対応の間違いを防ぐことができる。
【００７１】
以上説明した、本発明の各実施形態における各構成要素は、その機能をハードウェア的に実現することはもちろん、プログラム制御に基づくコンピュータ装置、ファームウェアで実現することができる。プログラムは、磁気ディスクや半導体メモリなどのコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態における構成要素として機能させる。
【００７２】
以上、各実施の形態を参照して本発明を説明したが、本発明は上記実施の形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
【００７３】
例えば、以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が１個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
【００７４】
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
【００７５】
さらに、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
【００７６】
さらに、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
【符号の説明】
【００７７】
１００    ソースコード静的解析システム
１１０    入出力部
１２０    送受信部
１３０    静的解析装置
１３１    解析対象ソースコード生成部
１３２    解析データ保管部
１３３    静的解析部
２１０    入出力装置
２２０    ＣＰＵ
２３０    メモリ
２４０    外部記憶装置
２５０    バス
６００    ソースコード静的解析システム
６２０    送受信部
６３０    静的解析装置
６３１    解析対象ソースコード生成部
６３２    解析データ保管部
６３３    静的解析部
６４０    利用者端末
６５０    ソースコード保管部
【図１】
0005811859.tif 000002
【図２】
0005811859.tif 000003
【図３】
0005811859.tif 000004
【図４】
0005811859.tif 000005
【図５】
0005811859.tif 000006
【図６】
0005811859.tif 000007
【図７】
0005811859.tif 000008