JP5811859B2 - ソースコードの静的解析装置、システム、方法、及びそのためのプログラム - Google Patents

ソースコードの静的解析装置、システム、方法、及びそのためのプログラム Download PDF

Info

Publication number
JP5811859B2
JP5811859B2 JP2012009955A JP2012009955A JP5811859B2 JP 5811859 B2 JP5811859 B2 JP 5811859B2 JP 2012009955 A JP2012009955 A JP 2012009955A JP 2012009955 A JP2012009955 A JP 2012009955A JP 5811859 B2 JP5811859 B2 JP 5811859B2
Authority
JP
Japan
Prior art keywords
analysis
source code
static
storage unit
static analysis
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
Application number
JP2012009955A
Other languages
English (en)
Other versions
JP2013149134A (ja
Inventor
広樹 池田
広樹 池田
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 JP2012009955A priority Critical patent/JP5811859B2/ja
Publication of JP2013149134A publication Critical patent/JP2013149134A/ja
Application granted granted Critical
Publication of JP5811859B2 publication Critical patent/JP5811859B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明はソースコードの静的解析を行う静的解析装置、システム、方法、及びそのためのプログラムに関する。
ソースコードの静的解析システムとは、プログラムを実行することなくソースコードの解析から不具合を検出するシステムである。
このようなシステムは解析処理を実行するのに多大な時間を要するため、不具合を修正した後に再度解析を行うときには、修正した部分のみを解析することで解析にかかる時間を短縮しようとする試みが行われてきた。
その一例が特許文献1に記載されている。
特許文献1に記載された静的解析システムは、モデル検査方式を用いた静的解析システムであって、再解析時には修正されたソースコード全体を解析し、その解析過程のモデル作成時に前回解析時のモデルと比較し、差分を抽出してその部分のみを検証することで解析に要する時間を短縮する、という手法を用いている。
モデルとは、ソースコードをコントロール・フロー・グラフ(Control Flow Graph)に変換後、論理式化したものである。モデル検査方式とは、モデルを利用してプログラム実行時における全てのデータパターン、全ての処理パスを網羅して検証する静的解析の方式の一つである。
また、特許文献2に記載された静的解析システムは、解析の対象となるソースコードを流用部分と新規作成部分とに分け、新規作成部分のみを静的解析の対象とすることによって、解析処理の実行時間を短縮させる、という手法を用いている。
特開2010−198558号公報 特開2011−113298号公報
開発現場では、一度静的解析を実行し検出した不具合に対応したソースコードの修正を行った後に、その不具合の修正確認を行うために何度も静的解析を実行したいという要望がある。
しかしながら、上述した特許文献1に記載された技術は、再解析の場合であってもソースコード全体をモデル化するため、ソースコードの行数が多いときは短縮される時間が十分でないという問題点がある。
また、特許文献2に記載された技術は、静的解析の対象としない流用部分を判別するために、流用の関係にあるソースコードの有無を、システムで管理しているソースコードの全てを検索して、かつ対象ソースコード全体と比較し判定する必要がある。したがって、大規模なシステムでは静的解析の対象としない流用部分を判別するために大量のソースコードを処理する必要があり、そのために多大な時間を要するという問題点がある。2回目以降の再解析処理を実施する場合においても、この流用部分の判別処理は同じ処理を行う必要があるので、同じ問題点がある。
また、流用と判別された場合においても、流用元のソースコードが本当に静的解析の対象外とすることが可能な品質であるか否かの判断が、システムの利用者に委ねられており、静的解析処理によって潜在的な不具合を検出する機会を失う可能性もある。
本発明の目的の一例は、上述した問題点を解決できるソースコード静的解析装置、システム、方法、及びプログラムを提供することにある。
本発明の一形態における第一の静的解析装置は、ソフトウェアのソースコードの解析処理の結果を保存する解析データ保管部と、前記解析データ保管部に保存した前回解析時の解析結果を参照して、修正されたソースコードを含む対象ソースコードから、修正部分を抽出した再解析用のソースコードを生成する解析対象ソースコード生成部と、前記再解析用のソースコードの静的解析を実行する静的解析部を備える。
本発明の一形態における第一の再解析用のソースコードの解析を実行する方法は、解析データ保管部に保存された前回解析時の解析結果から、ソースコードのどの範囲をどのような条件で解析した際に不具合が発生したかの情報を取得し、その取得した情報を基に再解析用のソースコードを生成し、前記再解析用のソースコードの解析を実行する。
本発明の一形態における第一のソースコード解析プログラムは、コンピュータに、解析データ保管部に保存された前回解析時の解析結果を参照して、入力された対象ソースコードから修正部分を抽出した再解析用のソースコードを生成する処理と、前記再解析用のソースコードの解析を実行する処理を、実行させる。
本発明によれば、複数回の静的解析を実行する場合に、前回解析時の解析結果を利用してソースコードに複数ある処理フローのうち一つまたは複数の処理フローに解析範囲を絞ることにより、解析対象から外す処理フローの流用部分の判別処理が不要になるため、解析処理を短時間で実行できるという効果が得られる。また、不具合が正しく修正されたかどうかを再解析によって保証することができるので、潜在的な不具合を見逃すことを防ぐことができる。
図1は、本発明の第一の実施の形態の構成を示すブロック図である。 図2は、第一の実施の形態におけるソースコード静的解析システムをコンピュータ装置とその周辺装置で実現したハードウェア構成を示す図である。 図3は、第一の実施の形態におけるソースコード静的解析システムの動作の概略を示すフローチャートである。 図4は、第一の実施の形態における解析データ保管部に格納される解析結果データの一例を示す図である。 図5は、本発明の第二の実施の形態におけるソースコード静的解析システムの動作の概略を示すフローチャートである。 図6は、本発明の第三の実施の形態の構成を示すブロック図である。 図7は、本発明の第三の実施の形態におけるソースコード静的解析システムの動作の概略を示すフローチャートである。
次に、本発明の実施形態について図面を参照して詳細に説明する。
なお、一般的に、プログラムを実行することなくソースコードの解析から不具合を検出する静的解析システムは、プログラムのどのような処理フローにおいて、どのような不具合が発生したのかということを解析結果として出力する。
本発明の実施形態では、その解析結果は図4のような情報を保有している。本実施形態において、解析結果は、プログラムの処理フローの解析ごとに得られ、解析データともいう。各解析データは識別IDにより一意に識別可能となっている。各解析データは、識別IDと、解析範囲と、フロー制御情報と、不具合判定と、不具合種別と、不具合発生箇所を含む。
解析範囲とは、ソースコードのどの範囲を解析したのかということを関数単位で表している。図4では、解析範囲が関数(func)A,B,C,D,Eで示される。フロー制御情報とは、ソースコードのどの処理フローを解析したのかということを示す情報であり、この情報をソースコードに当てはめるとソースコードの処理フローが一意に定まる。さらに、不具合判定、不具合種別、不具合発生箇所とは、不具合の詳細情報である。不具合判定が「×」となっている場合は、当該処理フローでは不具合が発生しなかったことを表す。
[第一の実施の形態]
図1は、本発明の第一の実施の形態におけるソースコード静的解析システム100の構成を示すブロック図である。図1を参照すると、ソースコード静的解析システム100は、入出力部110と送受信部120と静的解析装置130とを備える。静的解析装置130は、解析対象ソースコード生成部131と解析データ保管部132と静的解析部133を備える。
次に、第一の実施の形態におけるソースコード解析システム100の構成について説明する。
入出力部110は、本ソースコード解析システムの利用者からの入力を受け付け、さらに利用者に解析結果を通知する機能を有する。利用者は、入出力部110を用いて、前回解析時の解析結果を基に修正したソースコード(以下、対象ソースコードとも言う)と、修正した不具合の詳細情報を含む前回解析時の解析結果、を識別するためのID(以下、不具合識別IDとも言う)と、静的解析の実行要求を入力する。これにより、入出力部110は、修正したソースコードと、前述の不具合識別IDと、静的解析の実行要求を送受信部120に出力する。
送受信部120は、入出力部110からの静的解析の実行要求を受け付け、その要求を静的解析装置130に転送し、その結果を静的解析装置130から受け取り、入出力部110に返すものである。この送受信部120は、入出力部110に含まれても良い。また、送受信部120は、静的解析装置130に含まれても良い。送受信部120は、入出力部110と静的解析装置130とのデータ、制御情報の受け渡しのためのインタフェースとしての機能だけでも良い。
解析対象ソースコード生成部131は、入出力部110から送受信部120を経由して、対象ソースコードと、修正した不具合識別IDを受け取る。さらに、解析対象ソースコード生成部131は、そのソースコード及び識別IDに対応した前回解析時の解析結果を解析データ保管部132から取得し、再解析用のソースコードである解析データ付与ソースコードを生成する。そして、生成した解析データ付与ソースコードを静的解析部133に渡す。
なお、解析対象ソースコード生成部131は、図4の解析データにおける識別ID「1」のように、フロー制御情報に、処理フローに関わる変数の値が明確に定められている場合は、その変数の値をそのまま使い解析データ付与ソースコードを生成する。識別ID「2」のように、フロー制御情報に条件式の形式で記述されている場合は、その条件式を満たすように適切に解析対象ソースコード生成部131が変数の値を設定し、解析データ付与ソースコードを生成する。
解析データ保管部132は、解析対象ソースコード生成部131に、前述のソースコードと識別IDに対応した前回解析時の解析結果を提供すると共に、静的解析部133から今回の解析結果を受け取り保存する。
静的解析部133は、解析対象ソースコード生成部131から渡された解析データ付与ソースコードに対し静的解析を実施し、解析結果を解析データ保管部132に出力する。
図2は、本発明の実施形態をコンピュータ装置で実現したハードウェア構成の一例を示す図である。
本構成は、図2に示されるように入出力装置210、CPU220、メモリ230、プログラムやデータを格納するハードディスク等の外部記憶装置240、及び、それらの装置間をつなぐバス250を含む。
CPU220は、オペレーティングシステムを動作させて本発明の第一の実施の形態に係るソースコード静的解析システム100の全体を制御する。また、CPU220は、例えばドライブ装置などに装着された外部記憶装置240からメモリ230にプログラムやデータを読み出す。また、CPU220は、第一の実施の形態における送受信部120、解析対象ソースコード生成部131、静的解析部133、及び解析データ保管部132の一部として機能し、プログラムに基づいて各種の処理を実行する。
外部記憶装置240は、例えば光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、または半導体メモリ等である。記憶装置の一部の記憶媒体は、不揮発性記憶装置であり、そこにプログラムを記録する。
入出力装置210は、例えばマウスやキーボード、内蔵のキーボタン、タッチパネルなどで実現される入力操作に用いられる装置、及び、例えばディスプレイで実現される出力を確認する装置を含む。
以上のように、図1に示す第一の実施の形態は、図2に示されるハードウェア構成によって実現される。ただし、図1のソースコード静的解析システム100が備える各部の実現手段は特に限定されない。すなわち、ソースコード静的解析システム100は、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した二つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
以上のように構成されたソースコード静的解析システム100の動作について、図3のフローチャートを参照して説明する。
図3は、第一の実施の形態におけるソースコード静的解析システム100での静的解析の動作の概要を示すフローチャートである。なお、このフローチャートによる処理は、前述したCPUによるプログラム制御に基づいて、実行されても良い。
まず、利用者は、入出力部110から、前回解析時の解析結果を基に修正したソースコードと、修正した不具合識別IDと、静的解析の実行要求を入力する。(ステップS101)
例えば、ソースコードに関数(func)A、B、Cが含まれており、前回の解析時の解析結果で関数Aに不具合が見つかったとすると、その解析結果を基に修正した関数A´と元の関数B及び関数Cとを含むソースコードと、修正した不具合識別ID(たとえば、解析ID「1」)が入力の対象となる。
次に、送受信部120は、入出力部110から実行要求を受け付け、前述のソースコード及び前述の不具合識別IDを解析対象ソースコード生成部131へ渡す。(ステップS102)
解析データ保管部132に保存された前回解析時の解析結果には、それぞれ一意に識別できる前述の不具合識別IDが与えられているため、解析対象ソースコード生成部131は、解析データ保管部132から、不具合識別IDに対応した不具合の解析結果を読み出す。(ステップS103)
次に、解析対象ソースコード生成部131は、入手した前述の不具合の解析結果に含まれている解析範囲の情報を基に、前回解析時の解析結果を基に修正したソースコードから不具合部分を修正した該当部分を抽出する。さらに、解析対象ソースコード生成部131は、入手した前述の不具合の解析結果に含まれているフロー制御情報から、対象の処理フローに関連するソースコードを生成し、その生成したソースコードを前述の該当部分に付与して解析データ付与ソースコードを生成する。(ステップS104)
例えば前述の例によると、修正した関数A´と元の関数B及び関数Cを含むソースコードから、前述の不具合の解析結果に含まれている解析範囲の情報を基に関数A´を抽出し、抽出した関数A´にフロー制御情報から生成したソースコードを付与して、新たに解析データ付与ソースコードを生成する。
次に、解析対象ソースコード生成部131は、生成された解析データ付与ソースコードを静的解析部133に渡し、静的解析部133は静的解析を実施する。(ステップS105)
次に、静的解析部133は、送受信部120と解析データ保管部132に解析結果を渡し、解析データ保管部132は受け取った解析結果を保存する。(ステップS106)
最後に、送受信部120は、静的解析部133から受け取った解析結果を入出力部110に通知する。(ステップS107)
以上で、ソースコード静的解析システム100は、静的解析の動作を終了する。
なお、以上の動作の概要説明に限らず、送受信部120が静的解析装置130の一連の静的解析の動作を制御してもよい。
次に、本発明の第一の実施の形態の効果について説明する。
上述した本実施形態におけるソースコード解析システム100は、前回の解析時の解析結果を利用してソースコード中に複数ある処理フローのうち一つのフローにのみ解析範囲を絞っているため、ソースコード全体のモデル化にかかる時間や、流用部分を判別するためにかかる時間を省くことができ、従来の技術に比べて静的解析を短時間で実行できる。
また、不具合が正しく修正されたかどうかを静的解析部133によって保証することができるので、人手で修正状況を確認する場合よりも作業時間を短縮でき、さらに見逃し等の人的ミスを防ぐことができる。
[第二の実施形態]
次に、本発明の第二の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
第一の実施の形態では、前回の解析で複数の不具合が発見された場合でも、そのうちの一つの不具合を修正するたびに再解析を実施している。これは、利用者の、修正した内容が正しいかどうかをなるべく早く知りたいという要望のためである。
しかし、不具合の内容によっては、複数の不具合を同時に修正して再解析を一度に実施したい、という要望も存在する。
そこで、第二の実施の形態では、一つまたは複数の不具合を修正したソースコードを本システムに入力し、解析データ付与ソースコードを生成し、その一つまたは複数の解析データ付与ソースコードから、一つの解析対象ソースコードを作成して再解析を実施する。
次に第二の実施の形態における動作を図5のフローチャートを参照して説明する。
まず、利用者は、入出力部110から、前回解析時の解析結果を基に修正したソースコードと、修正した不具合の解析結果を表す一つまたは複数の不具合識別IDと、静的解析の実行要求を入力する。(ステップS201)
次に、送受信部120は、静的解析の実行要求を受け付け、前述のソースコード及び前述の複数の不具合識別IDを解析対象ソースコード生成部131へ渡す。(ステップS202)
解析対象ソースコード生成部131は、渡されたソースコードと不具合識別IDに対応した不具合を示す解析結果の一つを、解析データ保管部132から入手する。(ステップS203)
次に、解析対象ソースコード生成部131は、その不具合を示す解析結果に含まれている解析範囲の情報とフロー制御情報から、前述のステップS104と同様に解析データ付与ソースコードを生成する。(ステップS204)
次に、入力された一つまたは複数の不具合識別IDが、全て処理されて解析データ付与ソースコードが生成されていれば、ステップS206へ進み、まだ未処理の不具合識別IDがあれば、ステップS203に戻り繰り返し処理を行う。(ステップS205)
全ての不具合識別IDが処理された場合、解析対象ソースコード生成部131は、生成された全ての解析データ付与ソースコードから、解析対象のソースコードを作成する。(ステップ206)
次に、解析対象ソースコード生成部131は、作成された解析対象のソースコードを静的解析部133に渡し、静的解析部133は静的解析を実施する。(ステップS207)
次に、静的解析部133は、送受信部120と解析データ保管部132に解析結果を渡し、解析データ保管部132は受け取った解析データを保存する。(ステップS208)
最後に、送受信部120は、静的解析部133から受け取った解析結果を入出力部110に通知する。(ステップS209)
以上で、ソースコード静的解析システム100は、一つまたは複数の不具合を修正したソースコードに対する静的解析の動作を終了する。
次に、本発明の第二の実施の形態の効果について説明する。
上述した第二の実施の形態におけるソースコード解析システム100は、一つまたは複数の不具合を修正したソースコードに対し一度に静的解析を実施するため、修正したソースコードと対応する不具合識別IDの組を、複数回入力する手間を省くことができる。
[第三の実施形態]
次に、本発明の第三の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
第一、及び第二の実施の形態では、一つまたは複数の不具合を修正し再解析を実施するたびに、毎回、対象ソースコードと、対応する不具合識別IDを入力する必要がある。
また、ソースコードの修正を別の装置で行い、その後に修正されたソースコードを本システムに入力する必要があり、手間がかかると共に、利用者が対象ソースコードと不具合識別IDの対応を間違えて入力する可能性もある。
そこで、第三の実施の形態では、利用者端末とソースコード保管部を追加し、利用者がソースコードの修正後に引き続き静的解析の実施を指示することにより、修正後のソースコードを本システムに入力する手間を省き、さらに、対象ソースコードと不具合識別IDの対応を間違える可能性を無くした。
図6は、本発明の第三の実施の形態におけるソースコード静的解析システム600の構成を示すブロック図である。
図6を参照すると、本実施形態のソースコード静的解析システム600は、第一の実施形態のそれと比べて、利用者端末640とソースコード保管部650とを追加している。
利用者端末640は、ソースコード保管部650のソースコードを表示・編集する機能と、解析データ保管部632の解析結果を表示する機能、及び静的解析装置630に静的解析の実施を指示する機能を有する。
ソースコード保管部650は、利用者端末640によって修正されたソースコード、及び修正前の全てのリビジョンのソースコードを保持するリポジトリである。
送受信部620は、利用者端末640およびソースコード保管部650と静的解析装置630とのインタフェース機能を有する。
以上のように構成されたソースコード静的解析システム600の動作について、図7のフローチャートを参照して説明する。
図7は、第三の実施の形態におけるソースコード静的解析システム600での静的解析の動作の概要を示すフローチャートである。
まず、利用者は、利用者端末640上で修正対象のソースコードのIDを指定する。(ステップS301)このソースコードのIDは、送受信部620に出力される。
利用者端末640は、指定されたソースコードのIDに対応するソースコードをソースコード保管部650のリポジトリから取り出し、利用者端末640の画面上に表示する。さらに、送受信部620は、解析データ保管部632から、指定されたソースコードのIDに対応した前回解析時の解析結果を取り出し、一つまたは複数の不具合の詳細情報を、送受信部620を経由して利用者端末640に出力する。これにより、利用者端末640の画面上に不具合を示す解析結果を表示する。(ステップS302)解析結果の表示では、不具合の詳細情報の不具合識別IDを含めて表示する。
そして、利用者の操作に基づき、利用者端末640は、修正対象のソースコードに対して一つまたは複数の不具合を修正し、修正したソースコードの保存と静的解析の実施を指示する。(ステップS303)次に、ソースコード保管部650は、修正されたソースコードをリポジトリに保存する。(ステップS304)
送受信部620は、静的解析の実施の指示を受け付け、利用者端末640から修正したソースコードのID及び修正された一つまたは複数の不具合識別IDを受信し、解析対象ソースコード生成部631へ渡す。(ステップS305)
解析対象ソースコード生成部631は、渡されたソースコードのIDに対応したソースコードを送受信部620を介してソースコード保管部650から入手する。(ステップS306)
また、解析対象ソースコード生成部631は、渡されたソースコードのIDと不具合識別IDに対応した不具合を示す解析結果の一つを、解析データ保管部632から入手する。(ステップS307)
次に、解析対象ソースコード生成部631は、その不具合を示す解析結果に含まれている解析範囲の情報とフロー制御情報から、解析データ付与ソースコードを生成する。(ステップS308)
次に、渡された一つまたは複数の不具合識別IDが、全て処理されて解析データ付与ソースコードが生成されていれば、ステップS310へ進み、まだ未処理の不具合識別IDがあれば、ステップS307に戻り繰り返し処理を行う。(ステップS309)
一つまたは複数の不具合識別IDが全て処理された場合、解析対象ソースコード生成部631は、生成された全ての解析データ付与ソースコードから、解析対象のソースコードを作成する。(ステップ310)
次に、解析対象ソースコード生成部631は、作成された解析対象のソースコードを静的解析部633に渡し、静的解析部633は静的解析を実施する。(ステップS311)
次に、静的解析部633は、送受信部620と解析データ保管部632に解析結果を渡し、解析データ保管部632は受け取った解析データを保存する。(ステップS312)
最後に、送受信部620は、静的解析部633から受け取った解析結果を利用者端末640上に表示して利用者に通知する。(ステップS313)
以上で、ソースコード静的解析システム600は、利用者端末上で一つまたは複数の不具合の修正がされたソースコードの静的解析の動作を終了する。
次に、本発明の第三の実施の形態の効果について説明する。
第三の実施の形態では、利用者端末とソースコード保管部をソースコード静的解析システムに追加したことにより、利用者は、利用者端末上に前回解析時の解析結果を表示し、それを参照しながらソースコードを修正して、引き続き静的解析の実施の指示を行うことができる。
そのため、静的解析の都度修正後のソースコードをシステムに入力する手間を省き、さらに、ソースコードの入力間違いや、修正したソースコードと不具合識別IDの対応の間違いを防ぐことができる。
以上説明した、本発明の各実施形態における各構成要素は、その機能をハードウェア的に実現することはもちろん、プログラム制御に基づくコンピュータ装置、ファームウェアで実現することができる。プログラムは、磁気ディスクや半導体メモリなどのコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態における構成要素として機能させる。
以上、各実施の形態を参照して本発明を説明したが、本発明は上記実施の形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
例えば、以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
さらに、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
さらに、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
100 ソースコード静的解析システム
110 入出力部
120 送受信部
130 静的解析装置
131 解析対象ソースコード生成部
132 解析データ保管部
133 静的解析部
210 入出力装置
220 CPU
230 メモリ
240 外部記憶装置
250 バス
600 ソースコード静的解析システム
620 送受信部
630 静的解析装置
631 解析対象ソースコード生成部
632 解析データ保管部
633 静的解析部
640 利用者端末
650 ソースコード保管部

Claims (9)

  1. ソフトウェアのソースコードの解析処理の結果を保存する解析データ保管部と、
    前記解析データ保管部に保存した前回解析時の解析結果を参照して、修正されたソースコードを含む対象ソースコードから、修正部分を抽出した再解析用のソースコードを生成する解析対象ソースコード生成部と、
    前記再解析用のソースコードの静的解析を実行する静的解析部を備える、静的解析装置。
  2. 前記解析データ保管部に保存されるソースコードの解析結果は、
    前記解析結果を一意に識別可能にする識別IDと、
    ソースコードのどの範囲を解析したのかということを表す解析範囲と、
    ソースコードのどの処理フローを解析したのかということを示す情報であり、この情報をソースコードに当てはめるとソースコードの処理フローが一意に定まるフロー制御情報と、
    不具合の詳細情報である不具合判定、不具合種別、及び不具合発生箇所とを含む、請求項1に記載の静的解析装置。
  3. 前記解析対象ソースコード生成部は、
    前記解析データ保管部に保存されている前記解析範囲の情報から、前記不具合の詳細情報を基に修正したソースコードから修正した該当部分を抽出し、
    前記解析データ保管部に保存されている前記フロー制御情報から、解析対象の処理フローに関連するソースコードを生成し、
    その生成したソースコードを前記該当部分に付与して再解析用のソースコードを生成する機能を備える、請求項2に記載の静的解析装置。
  4. ソースコードの表示と修正及びソースコードの解析処理の結果の表示を行う利用者端末と、
    前記利用者端末で修正されたソースコード及び修正以前の全てのリビジョンのソースコードを保存するソースコード保管部と、
    ソフトウェアのソースコードの解析処理の結果を保存する解析データ保管部と、
    前記解析データ保管部に保存した前回解析時の解析結果を参照して、前記ソースコード保管部に保存された前記修正されたソースコードを含む対象ソースコードから、修正部分を抽出した再解析用のソースコードを生成する解析対象ソースコード生成部と、
    前記再解析用のソースコードの静的解析を実行する静的解析部と、
    を備える、静的解析装置。
  5. 解析データ保管部に保存された前回解析時の解析結果から、ソースコードのどの範囲をどのような条件で解析した際に不具合が発生したかの情報を取得し、
    その取得した情報を基に再解析用のソースコードを生成し、
    前記再解析用のソースコードの解析を実行するソースコードの静的解析方法。
  6. 一つまたは複数の不具合を修正したソースコードを処理対象とする、請求項5に記載のソースコードの静的解析方法。
  7. 利用者端末は、前回解析時の解析結果を表示し、それを参照しながらソースコードを修正して、引き続き静的解析を指示する、請求項5または6に記載のソースコードの静的解析方法。
  8. 解析データ保管部に保存された前回解析時の解析結果を参照して、
    入力された対象ソースコードから修正部分を抽出した再解析用のソースコードを生成する処理と、
    前記再解析用のソースコードの解析を実行する処理を、コンピュータに実行させるプログラム。
  9. 利用者端末上に前回解析時の解析結果を表示し、それを参照しながらソースコードを修正して、
    引き続き静的解析の指示を行う処理をコンピュータに実行させる、請求項8に記載のプログラム。
JP2012009955A 2012-01-20 2012-01-20 ソースコードの静的解析装置、システム、方法、及びそのためのプログラム Expired - Fee Related JP5811859B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012009955A JP5811859B2 (ja) 2012-01-20 2012-01-20 ソースコードの静的解析装置、システム、方法、及びそのためのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012009955A JP5811859B2 (ja) 2012-01-20 2012-01-20 ソースコードの静的解析装置、システム、方法、及びそのためのプログラム

Publications (2)

Publication Number Publication Date
JP2013149134A JP2013149134A (ja) 2013-08-01
JP5811859B2 true JP5811859B2 (ja) 2015-11-11

Family

ID=49046564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012009955A Expired - Fee Related JP5811859B2 (ja) 2012-01-20 2012-01-20 ソースコードの静的解析装置、システム、方法、及びそのためのプログラム

Country Status (1)

Country Link
JP (1) JP5811859B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269602B2 (en) 2020-05-15 2022-03-08 Red Hat, Inc. Detecting native compilation incompatibilities

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729295A (zh) * 2013-12-31 2014-04-16 北京理工大学 一种污点传播路径分析方法
KR102269335B1 (ko) * 2019-10-18 2021-06-24 한전케이디엔주식회사 실시간 운영체제 환경에서의 암호 알고리즘 구현 적합성 검증 장치 및 그 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269602B2 (en) 2020-05-15 2022-03-08 Red Hat, Inc. Detecting native compilation incompatibilities

Also Published As

Publication number Publication date
JP2013149134A (ja) 2013-08-01

Similar Documents

Publication Publication Date Title
US9632754B2 (en) Auto generation and linkage of source code to test cases
US10049031B2 (en) Correlation of violating change sets in regression testing of computer software
CN111831564A (zh) 一种回归测试方法、装置及计算设备
US10095512B2 (en) Program development support device, non-transitory storage medium storing thereon computer-readable program development support program, and program development support method
JP2017084082A (ja) シミュレーション装置、試験シナリオファイル作成方法、及び試験シナリオファイルを用いた試験方法
JP5811859B2 (ja) ソースコードの静的解析装置、システム、方法、及びそのためのプログラム
JP5293521B2 (ja) デザインルールチェック検証装置およびデザインルールチェック検証方法
KR20140088963A (ko) 애플리케이션 개발을 위한 런타임 에러 테스팅 시스템 및 방법
JP6567212B2 (ja) 等価性検証装置および等価性検証プログラム
JP2011013887A (ja) ソフトウェア開発支援装置
KR20120111618A (ko) Plc 명령어 테스트 장치 및 방법
JP6318976B2 (ja) デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
JPWO2012049816A1 (ja) モデル検査装置、方法及びプログラム
KR102002545B1 (ko) 가상화를 통한 코드 테스트 수행 자동화 방법 및 장치
JP2008262473A (ja) 設備保全管理システム
JP5799589B2 (ja) 検証方法及び検証プログラム
US20240241822A1 (en) Code implementation missing detection apparatus, code implementation missing detection method and program
WO2024195093A1 (ja) 処理フロー可視化装置、処理フロー可視化方法、および処理フロー可視化プログラム
JP2018121245A (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム
JP2010097328A (ja) ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム
JP2009217720A (ja) プログラム生成装置およびプログラム生成方法
JP5949889B2 (ja) ソフトウェア開発支援装置
JP6576873B2 (ja) ジョブネット検証装置及びジョブネット検証方法
WO2018122990A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US20110239193A1 (en) Using reverse time for coverage analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150806

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: 20150825

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150907

R150 Certificate of patent or registration of utility model

Ref document number: 5811859

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees