JP5545133B2 - 静的解析処理システム、方法、およびプログラム - Google Patents

静的解析処理システム、方法、およびプログラム Download PDF

Info

Publication number
JP5545133B2
JP5545133B2 JP2010192716A JP2010192716A JP5545133B2 JP 5545133 B2 JP5545133 B2 JP 5545133B2 JP 2010192716 A JP2010192716 A JP 2010192716A JP 2010192716 A JP2010192716 A JP 2010192716A JP 5545133 B2 JP5545133 B2 JP 5545133B2
Authority
JP
Japan
Prior art keywords
source code
function
static analysis
stub
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
JP2010192716A
Other languages
English (en)
Other versions
JP2012048660A (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 JP2010192716A priority Critical patent/JP5545133B2/ja
Publication of JP2012048660A publication Critical patent/JP2012048660A/ja
Application granted granted Critical
Publication of JP5545133B2 publication Critical patent/JP5545133B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、モデル検査方式を用いてコンピュータプログラムの静的解析を行う静的解析処理システムに関する。
静的解析は、コンピュータプログラムを実行することなく、コンピュータプログラムの記述ミスや動作時の不具合を発見することを可能とするコンピュータプログラムの解析方法である。また、モデル検査方式は、モデルを用いて、コンピュータプログラム(以下、プログラム)の実行時におけるすべてのデータパターン及び全ての処理パスを網羅して、コンピュータプログラムを検証する静的解析の一手法である。ここで、モデルとは、プログラムのソースコードをCFG(Control Flow Graph)に変換後に論理式化したものである。静的解析処理システムは、コンピュータプログラムのソースコードを実行することなく、コンピュータプログラムに潜むバグを検出することを可能にする。
モデル検査方式を用いた静的解析では、ソースコードの行数が増加するほど、解析処理に時間を要する。それは、プログラム実行時にプログラム実行時におけるデータパターン、処理パスが増加することによりモデルの規模が増大するためである。大規模なソースコードになると、モデルの規模が解析を行うことが不可能なまでに増大する。
特許文献1は、クライアントの負荷を抑制し、静的解析の結果を編集中のソースコードに反映することができ、解析ルールの管理が容易な静的解析処理システムを開示している。特許文献1の静的解析処理システムは、サーバ、クライアント間で複数のソースコードの静的解析を行う静的解析処理システムである。サーバは、複数のソースコードに対して静的解析のための所定の事前処理を予め実施する。そして、サーバは、事前処理の解析結果を利用してサーバとクライアント間によるソースコードの静的解析を実施する。
しかし、特許文献1では、ソースコードの行数が大きい場合に、静的解析に膨大な時間を要してしまうという課題がある。それは、ソースコードの行数に応じてモデルの規模が増大し、事前処理時間及び解析時間が著しく増加するためである。そのため、ソースコードの検証時間の短縮を図るために、モデルの規模を縮小することが求められる。
特許文献2及び特許文献3にソースコードをスタブ化することにより、モデルの規模を縮小する技術が開示されている。ここで、スタブとは、ソースコードを圧縮する手段であり、ソースコード中から呼び出される関数の中身を別ファイルに分離して、検証対象のソースコードが呼び出す関数は、インタフェース定義に基づく値を呼び出しに対して応答するだけのソースコードである。
しかし、特許文献2及び特許文献3のソースコードでは、ソースコードをスタブ化してモデルの規模を縮小したとしても、ソースコード内のバグの見落としが発生するといった解析制度の低下が発生するといった課題がある。
さらに、関連する技術として特許文献4は、API(Application Program Interface)のソースコード実装へのアクセスが無くともAPIコールを評価することができる方法が開示されている。
特開2008−225519号公報 特開2010−079525号公報 特開2009−211622号公報 特開2006−236336号公報
本発明の目的は、ソースコードの規模を縮小しつつ、ソースコードに潜むバグを検出することが可能な静的解析処理システムを提供することにある。
本発明の一つの観点として静的解析処理システムが提供される。静的解析処理システムは、ソースコードに含まれる関数を関数の規模が圧縮されたスタブに変換して変換後ソースコードを生成する変換処理部と、ソースコードの関数を変換後ソースコードのスタブへ置き換えて合成後ソースコードを生成する合成処理部と、合成後ソースコードに対して静的解析を実行する静的解析処理部とを備える。変換処理部は、関数をスタブに変換するときに、関数の仕様情報に基づいて関数の仕様違反を検出するための仕様違反検出コードをスタブへ挿入する。静的解析処理部は、静的解析の実行時に、仕様違反検出コードに基づいて関数の仕様違反を検出する。
本発明の他の観点として静的解析処理方法が提供される。静的解析処理方法は、ソースコードに含まれる関数を関数の規模が圧縮されたスタブに変換して変換後ソースコードを生成するステップと、ソースコードの関数を変換後ソースコードのスタブへ置き換えて合成後ソースコードを生成するステップと、合成後ソースコードに対して静的解析を実行するステップと、関数をスタブに変換するときに、関数の仕様情報に基づいて関数の仕様違反を検出するための仕様違反検出コードをスタブへ挿入するステップと、静的解析の実行時に仕様違反検出コードに基づいて関数の仕様違反を検出するステップとを備える。
本発明のさらに他の観点として静的解析処理プログラムが提供される。静的解析処理プログラムは、ソースコードに含まれる関数を関数の規模が圧縮されたスタブに変換して変換後ソースコードを生成するステップと、ソースコードの関数を変換後ソースコードのスタブへ置き換えて合成後ソースコードを生成するステップと、合成後ソースコードに対して静的解析を実行するステップと、関数をスタブに変換するときに、関数の仕様情報に基づいて関数の仕様違反を検出するための仕様違反検出コードをスタブへ挿入するステップと、静的解析の実行時に仕様違反検出コードに基づいて関数の仕様違反を検出するステップとを備える。
本発明によれば、ソースコードの規模を縮小しつつ、ソースコードに潜むバグを検出することが可能な静的解析処理システムを提供することができる。
図1は、本実施形態における静的解析処理システムの構成を示す機能ブロック図である。 図2は、本実施形態におけるクライアント100及びサーバ200のハードウェア構成を示す図である。 図3は、本実施形態における静的解析処理システムの動作を示すフローチャートである。 図4は、本実施形態におけるソースコード222の例を示す図である。 図5Aは、本実施形態におけるスタブ化される前のソースコード222内の関数Bの例を示す図である。 図5Bは、本実施形態におけるスタブ化された変換後ソースコード225内のスタブBの例を示す図である。 図6は、本実施形態における変換後ソースコード225の例を示す図である。 図7は、本実施形態における合成後ソースコード227の例を示す図である。
添付図面を参照して、本発明の実施形態による静的解析処理システムを以下に説明する。
[構成の説明]
はじめに、本実施形態における静的解析処理システムの構成の説明を行う。図1は、本実施形態における静的解析処理システムの構成を示す機能ブロック図である。本実施形態の静的解析処理システムは、クライアント100とサーバ200とを備える。
まず、クライアント100は、静的解析処理システムのユーザによって操作される。クライアント100は、ソースコード編集装置110を備える。ソースコード編集装置110は、ソースコード222の表示、編集、保存、及び登録を行う。ソースコード編集装置110は、解析結果表示部120と、ソースコード登録部130とを備える。
解析結果表示部120は、ソースコード222の解析結果をユーザに確認可能な形で表示する。解析結果表示部120は、サーバ200から解析結果を取得する。解析結果には、解析に用いられたルール及びその説明、ソースコード222の対応箇所といった情報が含まれる。解析結果表示部120は、これらの情報に基づいて、ソースコード222の解析結果をソースコード222の対応箇所に結び付けて表示する。
ソースコード登録部130は、編集されたソースコード222をサーバ200へ登録する。また、ソースコード登録部130は、ソースコード222内に存在する関数の仕様である関数仕様情報223をサーバ200へ登録する。
次に、サーバ200は、静的解析処理装置210と、ソースコード管理装置220と、変換装置230と、合成装置240とを備える。
まず、変換装置230は、スタブ変換部231を備える。スタブ変換部231は、ソースコード管理装置220からソースコード222と関数仕様情報223とを入力して、ソースコード222内の全ての関数をスタブ化する。ここで、スタブとは、ソースコードを圧縮する手段であり、ソースコード中から呼び出される関数の中身を別ファイルに分離して、検証対象のソースコードが呼び出す関数は、インタフェース定義に基づく値を呼び出しに対して応答するだけのソースコードである。また、変換装置230は、ソースコード222内の関数をスタブ化するときに、関数仕様情報223に基づいて、当該関数について問題の有無を指摘させる関数仕様違反コードを、関数に埋め込む。関数仕様違反コードについては後述する。変換装置230は、スタブ化された変換後ソースコード225をソースコード管理装置220へ出力する。
次に、合成装置240は、ソースコード合成部241を備える。ソースコード合成部241は、ソースコード合成ルール242を記憶している。ソースコード合成部241は、ソースコード管理装置220からソースコード222と変換後ソースコード225を入力して、ソースコード合成ルール242に基づいてソースコード222と変換後ソースコード225を合成する。ソースコード合成部241は、合成された合成後ソースコード227をソースコード管理装置220へ出力する。
次に、静的解析処理装置210は、解析装置211と、事前処理装置212と、ルール管理装置215とを備える。
まず、ルール管理装置215は、ルール記憶部216を備える、ルール記憶部216は、解析ルール217と事前処理ルール218とを記憶する。解析ルール217は、解析装置211が行う静的解析処理に用いられる。事前処理ルール218は、事前処理装置が行う事前処理に用いられる。
次に、事前処理装置212は、事前処理解析部213を備える。事前処理解析部213は、合成後ソースコード記憶部226から合成後ソースコード227を取得して、合成後ソースコード227に対して事前処理を行う。具体的に、事前処理解析部213は、合成後ソースコード記憶部226から合成後ソースコード227を取得すると、ルール記憶部216から事前処理ルール218を取得して、事前処理ルール218に基づいて合成後ソースコード227をモデル化して事前処理解析情報214を生成する。事前処理装置212は、事前処理解析情報214を記憶する。
次に、解析装置211は、事前処理解析部218から合成後ソースコード227と事前処理解析情報214とを取得し、また、ルール記憶部216から解析ルール217を取得して、解析ルール217に基づき、事前処理解析情報214を用いて合成後ソースコード227に対して静的解析を行う。解析装置211は、合成後ソースコード227に対する静的解析において合成後ソースコード227内のスタブ内に関数仕様違反を検出した場合、関数仕様違反が検出されたスタブがスタブ化される前のソースコード222をソースコード管理装置220から取得する。そして、解析装置211は、関数仕様違反が検出されたスタブがスタブ化される前のソースコード222に対して、再度、静的解析を行う。解析装置211は、静的解析の結果である解析結果を、解析結果表示部120へ出力する。
次に、ソースコード管理装置220は、ソースコード記憶部221と、変換後ソースコード記憶部224と、合成後ソースコード記憶部226とを備える。
ソースコード記憶部221は、ソースコード登録部130から登録されるソースコード222と関数仕様情報223とを記憶する。ソースコード記憶部221は、ソースコード222と関数仕様情報223とをスタブ変換部231へ出力する。また、ソースコード記憶部221は、解析装置211からの要求に応じて、静的解析中に関数仕様違反が検出されたスタブに対応するスタブ化前のソースコードを解析装置221へ出力する。
変換後ソースコード記憶部224は、スタブ変換部231から入力される変換後ソースコード225を記憶する。変換後ソースコード記憶部224は、変換後ソースコード225をソースコード合成部241へ出力する。
合成後ソースコード記憶部226は、ソースコード合成部241から入力される合成後ソースコード227を記憶する。合成後ソースコード記憶部226は、合成後ソースコード227を事前処理装置212へ出力する。
次に、図2は、本実施形態におけるクライアント100及びサーバ200のハードウェア構成を示す図である。本実施形態のクライアント100及びサーバ200は、一般的なコンピュータと同様のハードウェア構成により実現が可能である。
クライアント100及びサーバ200は、処理部10と、記憶部20と、通信部30と、表示部40と、入力部50と、インタフェース部60とを備える。処理部10と、記憶部20と、通信部30と、表示部40と、入力部50と、インタフェース部60は、システムバス70によりデータ送受信が可能に接続されている。
表示部40は、LCD(Liquid Crystal Display)に例示される。表示部40は、静的解析の解析結果等の情報を表示する。入力部50は、マウスやキーボードに例示される。ユーザは、入力部50から各種の入力を行う。インタフェース部60は、コンピュータの周辺機器とのインタフェースである。通信部30は、ネットワーク80と接続されており、ネットワーク80を介して他のコンピュータとの通信が可能である。記憶部20は、RAM(Random Access Memory)やROM(Read Only Memory)に例示される。記憶部20は、本実施形態のクライアント100やサーバ200の機能を実現するためのコンピュータプログラムやデータを記憶している。処理部10は、CPU(Central Processing Unit)に例示される。処理部10は、記憶部20に記憶されたコンピュータプログラムを実行することにより、クライアント100やサーバ200の機能を実現する。
このように、本実施形態におけるクライアント100及びサーバ200の機能は、ソフトウェアにより実現されても良いし、ハードウェアにより実現されても良いし、あるいは、これらの組み合わせによって実現されても良い。なお、上述のコンピュータプログラムは、移動可能な記憶媒体に記録することができる。記録媒体とは、CD(Compact Disc)やUSB(Universal Serial Bus)を搭載したフラッシュメモリや、ネットワーク80を介してアクセス可能なアプリケーションダウンロードサーバのHDD(Hard Disc Drive)等に例示される。このような場合、コンピュータプログラムは、記録媒体に格納されて移動や流通が可能である。コンピュータプログラムは、記録媒体からネットワーク80やインタフェース部60を介して、クライアント100やサーバ200の記憶部20へ導入される。
以上が、本実施形態における静的解析処理システムの構成の説明である。
[動作の説明]
続いて、本実施形態における静的解析処理システムの動作の説明を行う。図3は、本実施形態における静的解析処理システムの動作を示すフローチャートである。
まず、クライアント100のソースコード登録装置130は、サーバ200のソースコード管理装置220へソースコード222と関数仕様情報223とを送付する(ステップS10)。ソースコード管理装置220のソースコード記憶部221は、ソースコード登録装置130から受信されたソースコード222と関数仕様情報223とを記憶する(ステップS20)。
図4は、本実施形態におけるソースコード222の例を示す図である。ソースコード222は、「fileA」と「fileB」とを備える。「fileA」は、関数A〜Cを含み、「fileB」は、関数D、Eを含む。file及び関数の横軸の長さは、それぞれの規模を示している。ここで、規模とは、ソースコードの行数を指す。
図3に戻り、変換装置230のスタブ変換部231は、ソースコード記憶部221にソースコード222と関数仕様情報223とが記憶されると、ソースコード記憶部221からソースコード222と関数仕様情報223とを取得する。スタブ変換部231は、ソースコード222と関数仕様情報223を取得すると、ソースコード222内の全ての関数をスタブ化して、変換後ソースコード225を生成する(ステップS30)。このとき、スタブ変換部231は、関数仕様情報223に基づいて、スタブ内に関数仕様違反コードを埋め込む。関数仕様違反とは、想定されていない値が関数の引数として渡される場合を示す。
ここで、図5A、図5Bを用いて、スタブ変換部231によるスタブ化処理の例を説明する。図5Aは、本実施形態におけるスタブ化される前のソースコード222内の関数Bの例を示す図である。図5Bは、本実施形態におけるスタブ化された変換後ソースコード225内のスタブBの例を示す図である。スタブ変換部231は、図5Aに示すような関数Bをスタブ化する。図5Bを参照すると、スタブ化によって関数Bが圧縮されていることが確認できる。この時、スタブ変換部231は、図5Bに示すように、関数仕様情報に基づいて関数仕様違反コードをスタブへ挿入する。図5Bに示す「alert」は、解析装置211が理解可能な関数仕様違反コードである。図5Bの例では、変数「part」が「NULL」であった場合に関数仕様違反を検出する。このようにして、スタブ変換部231は、ソースコード222内の関数Bをスタブ化してスタブBへと変換する。
再び、図3に戻り、スタブ変換部231は、変換後ソースコード225をソースコード管理装置220の変換後ソースコード記憶部224へ出力する。変換後ソースコード記憶部224は、スタブ変換部231から入力された変換後ソースコード225を記憶する(ステップS40)。
図6は、本実施形態における変換後ソースコード225の例を示す図である。図6を参照すると、図4に示した関数A〜Eがスタブ化されてスタブA〜Eへ変換されていることがわかる。
再び、図3に戻り、合成装置240のソースコード合成部241は、変換後ソースコード記憶部224に変換後ソースコード225が記憶されると、ソースコード記憶部221に記憶されたソースコード222と変換後ソースコード記憶部224に記憶された変換後ソースコード225とを取得する。ソースコード合成部241は、ソースコード222と変換後ソースコード225とを合成して合成後ソースコード227を生成する(ステップS50)。具体的には、ソースコード合成部241は、予め記憶されたソースコード合成ルール242に基づいて、ソースコード222内の関数を変換後ソースコード225内のスタブに置き換えて合成後ソースコード227を生成する。
ソースコード合成ルール242は、ユーザによって予めサーバ200に登録されているものとする。本実施形態におけるソースコード合成ルール242は、ソースコード222内の関数において一定の行数以上で構成される関数を、当該関数に対応するスタブへ置き換えるように規定されている。なお、一定の行数の値は、ユーザによって予め決定される。また、ソースコード合成ルール242は、関数をスタブへ変換する基準が関数を構成する行数に基づいて決定される例には限定せず、他の基準に基づいて変換が決定されてもよい。
ソースコード合成部241は、合成後ソースコード227をソースコード管理装置220へ出力する。ソースコード管理装置220の合成後ソースコード記憶部226は、ソースコード合成部241から入力された合成後ソースコード227を記憶する(ステップS60)。
図7は、本実施形態における合成後ソースコード227の例を示す図である。図7を参照すると、図4に示したソースコード222内の関数A〜Eのうち関数B、EがスタブB、Eへ置き換えられている。これは、関数B、Eが、ソースコード合成ルール242に定められた一定の行数以上で構成されていることによる。このように、規模が大きい関数B、EをスタブB、Eへ置き換えることにより、ソースコード222の規模を圧縮することができる。
再び、図3に戻り、事前処理装置212の事前処理解析部213は、合成後ソースコード記憶部226に合成後ソースコード227が記憶されると、合成後ソースコード記憶部226から合成後ソースコード227を取得する。また、事前処理解析部213は、ルール管理装置215のルール記憶部216から事前処理ルール218を取得する。事前処理解析部213は、合成後ソースコード227に対して事前処理ルール218に基づいて事前処理を行う(ステップS70)。事前処理解析部213は、事前処理の結果として事前処理解析情報214を生成する。事前処理解析部213は、事前処理解析情報214を記憶する。
事前処理解析部213は、例えば、特許文献1に開示された事前処理と同様の処理を行うことが可能である。以下、特許文献1における事前処理を特許文献1における符号を用いて説明する。特許文献1では、ペアで行われなければ解析ルール241の違反となる処理がソースコード内の複数の関数に渡って格納されている例が開示されている(特許文献1の図4)。このような場合、事前処理によって、特定の関数が実行された場合にペアで実行されるべき処理を含んでおり、当該関数の実行のみではペアとなる両関数が実行されない(すなわち、解析ルール241違反となる)関数のリストである事前処理解析情報222を作成する。特許文献1ではこの事前処理解析情報222を用いて、後に静的解析を実行する。以上が特許文献1に開示された事前処理の説明である。本実施形態の事前処理解析部213は、上述のような事前処理を行って事前処理解析情報214を生成する。
再び、図3へ戻り、解析装置211は、事前処理解析部213による事前処理が完了すると、事前処理解析部213から事前処理解析情報214と合成後ソースコード227とを取得する。また、解析装置211は、ルール管理装置216のルール記憶部216から解析ルール217を取得する。解析装置211は、解析ルール217に基づいて事前処理解析情報214を用いて合成後ソースコード227に静的解析を実行する(ステップS80)。解析装置211は、静的解析の結果として解析結果を生成する。
解析装置211は、解析結果においてスタブに関数仕様違反の発生が無いかを判定する(ステップS90)。解析結果にスタブの関数仕様違反が無い場合(ステップS90のNo)、フローはステップS130へ進む。一方、解析結果にスタブの関数仕様違反がある場合(ステップS90のYes)、フローはステップS100へ進む。例えば、前述の図5Bで説明を行ったように、合成後ソースコード227のスタブBにおいて変数「part」が「NULL」となる場合には関数仕様違反となり、解析装置211は、関数仕様違反を検出する。
解析装置211は、スタブに関数仕様違反の発生を検出すると、関数仕様違反のあったスタブのスタブ化前のソースコードをソースコード管理装置220に要求する(ステップS100)。この要求は、事前処理装置212を介して行われても良いし、ソースコード管理装置220へ直接行われても良い。ソースコード管理装置220のソースコード記憶部223は、解析装置211から要求の合ったスタブに対応するソースコード222を事前処理装置212へ出力する。
事前処理装置212の事前処理解析部213は、ソースコード管理装置221から入力されたソースコード222に対して事前処理を行う(S110)。事前処理解析部213は、事前処理の結果として事前処理解析情報214を生成する。事前処理解析部213は、事前処理解析情報214を記憶する。
解析装置211は、関数仕様違反のあったスタブのスタブ化前のソースコード222に対する事前処理が完了すると、事前処理解析部213から事前処理解析情報214と関数仕様違反のあったスタブのスタブ化前のソースコード222とを取得する。解析装置211は、解析ルール217に基づいて、事前処理解析情報214を用いて、関数仕様違反のあったスタブのスタブ化前のソースコード222のうち関数仕様違反のあったスタブの部分にのみ静的解析を実行する(ステップS120)。つまり、事前処理解析部213及び解析装置211は、図7に示したスタブBにおいて関数仕様違反が発生したとすると、図4に示した。スタブBに対応する関数Bに対して、それぞれ、事前処理及び静的解析を行うことになる。
解析装置211は、静的解析が完了すると、解析結果をクライアントのソースコード編集装置110へ送信する(ステップS130)。これにより、本動作フローは終了となる。なお、この後、ソースコード編集装置110の解析結果表示装置120は、ユーザが確認可能な形で解析結果を表示する。以上が、本実施形態における静的解析処理システムの動作方法の説明である。
このように本発明によれば、ソースコード合成部241が、ソースコード222内の関数において所定の行数より多い行数で構成される関数をスタブ化する。これにより、合成後ソースコード227は、ソースコード222より規模(行数)が圧縮されているため、解析装置221により静的解析に要する時間を短縮することができる。
また、スタブ変換部231は、ソースコード222内の関数をスタブ化する際に、関数仕様情報223に基づいてスタブ内に関数仕様違反コードを埋め込む。そのため、解析装置211が、ソースコード222内の関数がスタブ化された合成後ソースコード227を用いて静的解析を行ったとしても、ソースコード内のバグの見逃しを回避することができ、解析精度の低下を防ぐことができる。
さらに、解析装置211は、静的解析の解析結果において、スタブに関数仕様違反の発生を検出すると、関数仕様違反のあったスタブのスタブ化前のソースコード222において、関数仕様違反のあったスタブに対応する部分のみに対して、再度、静的解析を行う。これにより関数仕様違反の発生時においても検証時間の短縮を図ることができる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
10 処理部
20 記憶部
30 通信部
40 表示部
50 入力部
60 インタフェース部
70 システムバス
80 ネットワーク
100 クライアント
110 ソースコード編集装置
120 解析結果表示部
130 ソースコード登録部
200 サーバ
210 静的解析処理装置
211 解析装置
212 事前処理装置
213 事前処理解析部
214 事前処理解析情報
215 ルール管理装置
216 ルール記憶部
217 解析ルール
218 事前処理ルール
220 ソースコード管理装置
221 ソースコード記憶部
222 ソースコード
223 関数仕様情報
224 変換後ソースコード記憶部
225 変換後ソースコード
226 合成後ソースコード記憶部
227 合成後ソースコード
230 変換装置
231 スタブ変換部
240 合成装置
241 ソースコード合成部
242 ソースコード合成ルール

Claims (8)

  1. ソースコードに含まれる関数を前記関数の規模が圧縮されたスタブに変換して変換後ソースコードを生成する変換処理部と、
    前記ソースコードの関数を前記変換後ソースコードの前記スタブへ置き換えて合成後ソースコードを生成する合成処理部と、
    前記合成後ソースコードに対して静的解析を実行する静的解析処理部と
    を備え、
    前記変換処理部は、前記関数をスタブに変換するときに、前記関数の仕様情報に基づいて前記関数の仕様違反を検出するための仕様違反検出コードを前記スタブへ挿入し、
    前記静的解析処理部は、静的解析の実行時に、前記仕様違反検出コードに基づいて前記関数の仕様違反を検出する
    静的解析処理システム。
  2. 請求項1に記載の静的解析処理システムであって、
    前記静的解析処理部は、前記静的解析において前記合成後ソースコードに含まれた前記スタブに前記仕様違反を検出すると、前記仕様違反が検出されたスタブに対応する関数を含む前記ソースコードを用いて前記静的解析を再度実行する
    静的解析処理システム。
  3. 請求項2に記載の静的解析処理システムであって、
    前記静的解析処理部は、前記仕様違反が検出されたスタブに対応する関数を含む前記ソースコードを用いて前記仕様違反の検出されたスタブに対応する関数のみに前記静的解析を再度実行する
    静的解析処理システム。
  4. 請求項1から請求項3までのいずれかに記載の静的解析処理システムであって、
    前記合成処理部は、前記ソースコードにおいて、所定の条件を満たす前記関数のみを前記スタブに置き換えて前記合成ソースコードを生成する
    静的解析処理システム。
  5. 請求項4に記載の静的解析処理システムであって、
    合成処理部は、予め定められた行数以上で構成される前記関数を前記所定の条件を満たす前記関数とする
    静的解析処理システム。
  6. 請求項1から請求項5までのいずれかに記載の静的解析処理システムであって、
    前記静的解析処理部は、
    前記合成後ソースコードに含まれる前記関数及び前記スタブにおける処理の関連性を示す事前処理解析情報を生成する事前処理部と、
    前記事前処理解析情報を用いて、前記合成ソースコードに対する前記静的解析を実行する静的解析実行部と
    を備える静的解析処理システム。
  7. 変換処理部が、ソースコードに含まれる関数を前記関数の規模が圧縮されたスタブに変換して変換後ソースコードを生成するステップと、
    合成処理部が、前記ソースコードの関数を前記変換後ソースコードの前記スタブへ置き換えて合成後ソースコードを生成するステップと、
    静的解析処理部が前記合成後ソースコードに対して静的解析を実行するステップと、
    前記変換処理部が、前記関数をスタブに変換するときに、前記関数の仕様情報に基づいて前記関数の仕様違反を検出するための仕様違反検出コードを前記スタブへ挿入するステップと、
    前記静的解析処理部が、静的解析の実行時に前記仕様違反検出コードに基づいて前記関数の仕様違反を検出するステップと
    を備える静的解析処理方法。
  8. ソースコードに含まれる関数を前記関数の規模が圧縮されたスタブに変換して変換後ソースコードを生成するステップと、
    前記ソースコードの関数を前記変換後ソースコードの前記スタブへ置き換えて合成後ソースコードを生成するステップと、
    前記合成後ソースコードに対して静的解析を実行するステップと、
    前記関数をスタブに変換するときに、前記関数の仕様情報に基づいて前記関数の仕様違反を検出するための仕様違反検出コードを前記スタブへ挿入するステップと、
    静的解析の実行時に前記仕様違反検出コードに基づいて前記関数の仕様違反を検出するステップと
    コンピュータに実現させるための静的解析処理プログラム。
JP2010192716A 2010-08-30 2010-08-30 静的解析処理システム、方法、およびプログラム Expired - Fee Related JP5545133B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010192716A JP5545133B2 (ja) 2010-08-30 2010-08-30 静的解析処理システム、方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010192716A JP5545133B2 (ja) 2010-08-30 2010-08-30 静的解析処理システム、方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2012048660A JP2012048660A (ja) 2012-03-08
JP5545133B2 true JP5545133B2 (ja) 2014-07-09

Family

ID=45903410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010192716A Expired - Fee Related JP5545133B2 (ja) 2010-08-30 2010-08-30 静的解析処理システム、方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP5545133B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799520B (zh) * 2012-06-27 2016-03-23 清华大学 用于源代码配对的静态检查方法及装置
CN102819489A (zh) * 2012-07-05 2012-12-12 北京航空航天大学 一种缺陷驱动的软件可靠性设计方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4957521B2 (ja) * 2007-11-22 2012-06-20 日本電気株式会社 ソフトウェア部分テストシステム、それに用いる方法およびプログラム
JP4888790B2 (ja) * 2008-03-06 2012-02-29 日本電気株式会社 契約定義関数検証装置、その方法及びそのプログラム
JP2010079525A (ja) * 2008-09-25 2010-04-08 Nec Corp プログラム検証支援装置、プログラム検証支援方法、及び、プログラム検証支援プログラム

Also Published As

Publication number Publication date
JP2012048660A (ja) 2012-03-08

Similar Documents

Publication Publication Date Title
KR101645052B1 (ko) 디버깅 파이프라인
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
US8549478B2 (en) Graphical user interface input element identification
US11038947B2 (en) Automated constraint-based deployment of microservices to cloud-based server sets
JP5988444B2 (ja) 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム
US20140372985A1 (en) API Rules Verification Platform
US20140331209A1 (en) Program Testing Service
US9715440B2 (en) Test scope determination based on code change(s)
US8875064B2 (en) Automated design rule checking (DRC) test case generation
US10977108B2 (en) Influence range specifying method, influence range specifying apparatus, and storage medium
JP6283096B2 (ja) プログラム試験サービス
US10572247B2 (en) Prototype management system
US20140331205A1 (en) Program Testing Service
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
JP5545133B2 (ja) 静的解析処理システム、方法、およびプログラム
US20110224939A1 (en) Integrated tool for persisting development environment test scenario information
JP5170555B2 (ja) エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム
JP6142878B2 (ja) 情報システムの性能評価装置、方法およびプログラム
CN114968751A (zh) 一种无代码开发平台的程序调试方法和程序调试装置
US20100077383A1 (en) Simulation method and storage medium for storing program
JP5093508B2 (ja) ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム
US20170123959A1 (en) Optimized instrumentation based on functional coverage
US10534691B2 (en) Apparatus and method to improve accuracy of performance measurement for loop processing in a program code
JP6818568B2 (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム
JP4575252B2 (ja) メモリリーク検出プログラム、メモリリーク検出装置およびメモリリーク検出方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130704

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140428

R150 Certificate of patent or registration of utility model

Ref document number: 5545133

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees