JP6574151B2 - プログラム解析装置、プログラム解析方法およびプログラム解析プログラム - Google Patents
プログラム解析装置、プログラム解析方法およびプログラム解析プログラム Download PDFInfo
- Publication number
- JP6574151B2 JP6574151B2 JP2016161559A JP2016161559A JP6574151B2 JP 6574151 B2 JP6574151 B2 JP 6574151B2 JP 2016161559 A JP2016161559 A JP 2016161559A JP 2016161559 A JP2016161559 A JP 2016161559A JP 6574151 B2 JP6574151 B2 JP 6574151B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- execution path
- resource
- loop
- variable
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
リソースを捕捉した後に解放漏れ(初期化誤り)が発生する例として、アプリケーションプログラムがリソースを管理して動的に捕捉および解放を行うような仕組みの場合が考えられる。例としては、システムと一定数のFAXボードが接続されている場合に、アプリケーションプログラムがFAXボードを操作するためにリソースを設けるような仕組みのプログラムを作成する場合が挙げられる。
図1は、本実施の形態に係るプログラム解析処理の概要について説明するための図である。本実施の形態に係るプログラム解析装置は、ソースコードを解析して、ソースコードの中からリソース捕捉関数とリソース解放関数のペアを抽出する。具体的には、プログラム解析装置は、ソースコードの解析結果に基づき、所定の出現パタンに合致する関数のペアをリソース捕捉関数とリソース解放関数のペアとして抽出する。また、本実施形態に係るプログラム解析装置は、ソースコードに分岐やループが含まれることを前提として、ソースコード解析を実行した上で、リソース捕捉関数とリソース解放関数のペアを抽出する。
(2)func(r)
(3)g(r)
つまり、関数ペア(f,g)がリソース捕捉関数とリソース解放関数のペアであれば、(1)のように関数fが出現すれば、その後常に(2)(3)が出現すると考えられる。なお以下、説明の便宜上、適宜(1)に対応するコードを「ALLOC」(略して「A」)、(2)に対応するコードを「USE」(略して「U」)、(3)に対応するコードを「FREE」(略して「F」)と呼ぶ。なお、以下の説明中、(2)のfunc(r)はsome_func(r)とも表記する。
図3は、本実施の形態に係るプログラム解析装置1の構成の一例を示すブロック図である。
(1)1−2−3−4−11
(2)1−2−5−6−11
(3)1−2−7−8−11
(4)1−2−9−10−11
(1)A
(2)A
(3)A−U−F
(4)A−U
次に、本実施の形態におけるプログラム解析装置1の動作について説明する。
次に、ソースコード解析処理(図4のステップS2に対応)について説明する。なお、以下に説明する本実施の形態におけるソースコード解析処理は、特願2015−156945号に記載の解析処理と同様である。ただし、本実施の形態では、解析部21は関数一覧(全関数集合Fと同様)に代えて、全関数集合Fおよび全関数ペア集合F×Fを作成する点が異なる。
次に、生成部22による実行パス生成処理(図4のステップS3に対応)について説明する。
図9に示すような分岐とループ構造を含むソースコードから非決定的実行パスを作成する場合を考える。図9の例を、ループ内を1回実行すると仮定して展開すると、以下の非決定的実行パスが得られる。
(1)1−2−3−4−11
(2)1−2−5−6−11
(3)1−2−7−8−11
(4)1−2−9−10−11
(5)1−2−3−4−2−3−4−11
(6)1−2−3−4−2−5−6−11
(7)1−2−3−4−2−7−8−11
(8)1−2−3−4−2−9−10−11
ループ内を2回実行する場合、上の(5)〜(8)に加え、分岐内の処理順序によってさらに12通りの非決定的実行パスが得られる。
しかし、本実施の形態に係るプログラム解析装置1では、リソース捕捉関数とリソース解放関数のペアの抽出を目的とするため、ペア抽出に関連しない情報の生成は省略することができる。たとえば、分岐とループ構造を含むソースコードから非決定的実行パスを作成した結果、図10に示す非決定的実行パスが得られたとする。図10は、実行パス生成処理を説明するための、非決定的実行パスのセットの一例を示す図である。
(1)r=f()
(2)some_func(r)
(3)g(r)
とすると、非決定的実行パスに基づきリソース捕捉関数とリソース解放関数のペアを抽出するためには、非決定的実行パスに含まれる上記(1)、(2)、(3)の情報があればよい。
しかし、ラベルパスを生成しただけでは、非決定的実行パスを短縮することはできるが、判定対象の実行パスが無限に増加するという問題は解消されない。そこで、生成部22は、次に、ラベルパスを所定の条件に基づき縮約すなわち短くする。本実施の形態では、以下の3つを縮約のための所定の条件、縮約ルールとする。
(1)「F」が3回以上出現する場合、2回目の「F」の出現より後のラベルパスは削除する。
(2)「A」の後に「U」が2回以上出現する場合、2回目以降の「U」は削除する。
(3)「F」の後に「U」が2回以上出現する場合、2回目以降の「U」は削除する。
以上のように、実施の形態に係るプログラム解析装置1は、非決定的実行パスからラベルパス、ラベルパスから縮約実行パスを生成する。この処理により、非決定的実行パスの冗長な部分が削除されるため、異なる非決定的実行パスから同じ縮約実行パスが生成される場合が考えられる。そこで、同じ関数(f,g)、変数rについて作成された縮約実行パス中に重複がある場合は重複する縮約実行パスを削除する。
次に、ループの無限展開を防止するための処理について説明する。上記のように非決定的実行パスを、リソース捕捉関数およびリソース解放関数の抽出に必要な情報に還元し、縮約した場合、所定回数ループを繰り返した後は同じ縮約実行パスしか得られなくなる。たとえば、「A,U」という縮約パスのうち、ループ部分が「U」であるとすると、何度ループを繰り返しても上記縮約ルール(2)により、2回目以降の「U」が削除されるため、「A,U」にしかならない。そこで、本実施の形態に係るプログラム解析装置1では、n回ループを繰り返して生成された縮約実行パスから重複を除去した縮約実行パスの組み合わせと、n−1回ループを繰り返して生成された縮約実行パスから重複を除去した縮約実行パスの組み合わせと、が同じになった時点で、ループの繰り返しすなわち実行パス生成処理を終了する。
次に、図12乃至図17を参照し、実行パス生成処理についてさらに具体的に説明する。図12乃至図17は各々、実行パス生成処理においてループを1回乃至6回実行して縮約実行パスを生成する場合について説明するための図である。
まず、プログラム制御装置1は、図12の(A)に示すループ構造を有するソースコードについて非決定的実行パスを生成する。処理対象とする関数ペアは(f,g)、リソース格納変数はrである。図12の(A)において、処理「1」は関数f()を呼び出して変数に格納する処理(「A」)であり、処理「3」は捕捉したリソースrを使用する処理(「U」)であり、処理「5」は捕捉したリソースrを引数とする関数g()(「F」)である。処理「1」「3」「5」以外に、「A」「U」「F」に該当する処理はないとする。
(1)1−2−3−4−7
(2)1−2−5−6−7
(1)AU
(2)AF
次に、生成部22は、ループを2回実行する。この場合、非決定的実行パスは以下のようになる。
(1)1−2−3−4−2−3−4−7
(2)1−2−3−4−2−5−6−7
(3)1−2−5−6−2−3−4−7
(4)1−2−5−6−2−5−6−7
(1)AUU
(2)AUF
(3)AFU
(4)AFF
(1)AU
(2)AUF
(3)AFU
(4)AFF
次に、生成部22は、ループを3回実行した場合のラベルパスを生成する(図14の(A))。
(1)AUU
(2)AUF
(3)AUFU
(4)AUFF
(5)AFUU
(6)AFUF
(7)AFFU
(8)AFFF
(1)AUU→AU
(2)AUF
(3)AUFU
(4)AUFF
(5)AFUU→AFU
(6)AFUF
(7)AFFU
(8)AFFF→AFF
次に、生成部22は、ループを4回実行した場合のラベルパスを生成する(図15の(A))。
(1)AUU (2)AUF
(3)AUFU (4)AUFF
(5)AUFUU (6)AUFUF
(7)AUFFU (8)AUFFF
(9)AFUU (10)AFUF
(11)AFUFU (12)AFUFF
(13)AFFUU (14)AFFUF
(15)AFFU (16)AFFF
(1)AUU→AU (2)AUF
(3)AUFU (4)AUFF
(5)AUFUU→AUFU (6)AUFUF
(7)AUFFU (8)AUFFF→AUFF
(9)AFUU→AFU (10)AFUF
(11)AFUFU (12)AFUFF→AFUF
(13)AFFUU→AFFU (14)AFFUF→AFF
(15)AFFU (16)AFFF→AFF
次に、生成部22は、ループを5回実行した場合のラベルパスを生成する(図16の(A))。
(1)AUU (2)AUF
(3)AUFU (4)AUFF
(5)AUFUU (6)AUFUF
(7)AUFFU (8)AUFFF
(9)AUFUFU(10)AUFUFF
(11)AUFFUU(12)AUFFUF
(13)AFUU (14)AFUF
(15)AFUFU (16)AFUFF
(17)AFUFUU(18)AFUFUF
(19)AFFUU(20)AFFUF
(21)AFFU (22)AFFF
(1)AUU→AU (2)AUF
(3)AUFU (4)AUFF
(5)AUFUU→AUFU (6)AUFUF
(7)AUFFU (8)AUFFF→AUFF
(9)AUFUFU (10)AUFUFF→AUFUF
(11)AUFFUU→AUFFU (12)AUFFUF→AUFF
(13)AFUU→AFU (14)AFUF
(15)AFUFU (16)AFUFF→AFUF
(17)AFUFUU→AFUFU (18)AFUFUF→AFUF
(19)AFFUU→AFFU (20)AFFUF→AFF
(21)AFFU (22)AFFF→AFF
(1)AU
(2)AUF
(4)AUFF
(5)AUFU
(6)AUFUF
(7)AUFFU
(9)AUFUFU
(13)AFU
(14)AFUF
(15)AFUFU
(19)AFFU
(22)AFF
次に、生成部22は、ループを6回実行した場合のラベルパスを生成する(図17の(A))。
(1)AUU (2)AUF
(3)AUFUU (4)AUFUF
(5)AUFUFUU (6)AUFUFUF
(7)AFUU (8)AFUF
(9)AUFU (10)AUFF
(11)AUFFU (12)AUFFF
(13)AUFUFU (14)AUFUFF
(15)AUFFUU (16)AUFFUF
(17)AFUFU (18)AFUFF
(19)AFUFUU (20)AFUFUF
(21)AFFUU (22)AFFUF
(23)AFFU (24)AFFF
(1)AUU→AU (2)AUF
(3)AUFUU→AUFU (4)AUFUF
(5)AUFUFUU→AUFUFU (6)AUFUFUF→AUFUF
(7)AFUU→AFU (8)AFUF
(9)AUFU (10)AUFF
(11)AUFFU (12)AUFFF→AUFF
(13)AUFUFU (14)AUFUFF→AUFUF
(15)AUFFUU→AUFFU (16)AUFFUF→AUFF
(17)AFUFU (18)AFUFF→AFUF
(19)AFUFUU→AFUFU (20)AFUFUF→AFUF
(21)AFFUU→AFFU (22)AFFUF→AFF
(23)AFFU (24)AFFF→AFF
(1)AU
(2)AUF
(7)AFU
(9)AUFU
(12)AUFF
(13)AUFUFU
(14)AUFUF
(15)AUFFU
(19)AFUFU
(20)AFUF
(23)AFFU
(24)AFF
図19は、実施の形態に係る実行パス生成処理の流れの一例を示すフローチャートである。生成部22は、まず、n=1の設定を受け付ける(ステップS1801)。ここで、nはループ内の実行回数を設定するための自然数である。次に、生成部22は、ループ内をn回実行して得られる非決定的実行パスを作成する(ステップS1802)。そして、生成部22は、関数記憶部33に記憶される全関数ペア集合F×Fの中から一つの関数ペア(f,g)を選択する(ステップS1803)。生成部22は、さらに、リソース捕捉変数であるrを選択する(ステップS1803)。生成部22は、選択した関数ペア(f,g)と変数rに基づき、非決定的実行パスの各処理要素のうち「A」「U」「F」のラベルに該当する処理要素を抽出し、ラベルパスを生成する(ステップS1804)。さらに、生成部22は、生成したラベルパスに対して縮約ルール(1)、(2)、(3)を適用し、縮約実行パスを生成する(ステップS1805)。そして、生成部22は、生成した縮約実行パスに重複がないか判定し、重複がある場合は重複する縮約実行パスを削除する(ステップS1806)。そして、生成部22は、ループをn回実行したときの縮約実行パスと、ループをn−1回実行したときの縮約実行パスとが一致するか否かを判定する(ステップS1807)。一致すると判定した場合(ステップS1807、Yes)、生成部22は、実行パス生成処理を終了する。他方、一致しないと判定した場合(ステップS1807、No)、生成部22は、n=n+1と設定し(S1808)、ループの実行回数を増やしてステップS1802からS1807を繰り返す。これにより関数ペア(f,g)および変数rについての実行パス生成処理が終了する。
次に、抽出部23による関数ペア抽出処理について説明する。図21は、実施の形態に係る関数ペア抽出処理の流れの一例を示すフローチャートである。抽出部23は、生成部22による縮約実行パスの生成が完了し、生成された縮約実行パスの情報が実行パス記憶部34に記憶されると、関数ペア抽出処理を実行する。
上記のように、本実施の形態に係るプログラム解析装置においては、ソースコード中、第1の関数(関数f)が呼び出された位置から処理が辿る可能性のある実行パスにループが含まれる場合に対処する。プログラム解析装置は、当該ループを1回からn回(nは2以上の自然数)まで繰り返して実行した場合のそれぞれについて、処理が辿る可能性のある実行パスを生成する。そして、プログラム解析装置は、生成した実行パスにおいて、第1の関数(関数f)と、第1の関数の戻り値を格納する変数(r)と、第1の関数とは異なり該第1の関数の戻り値を格納する変数を引数とする第2の関数(関数g)と、の出現パタンが、リソース捕捉関数とリソース解放関数の出現パタンに合致する場合、第1の関数と第2の関数とをリソース捕捉関数とリソース解放関数のペアとして抽出する。このため、実施形態のプログラム解析装置は、ソースコード中にループが含まれる場合に、所定回数ループを繰り返して実行した場合を考慮して、リソース捕捉関数とリソース解放関数とのペアを抽出することができる。
(1)第3の処理を3以上含む場合、2回目の第3の処理の出現より後の処理を削除し、
(2)第1の処理の後、第2の処理を2以上含む場合、2回目以降の第2の処理を削除し、
(3)第3の処理の後、第2の処理を2以上含む場合、2回目以降の第2の処理を削除する、
ことにより、実行パスを短くする。このため、実施の形態に係るプログラム解析装置は、明らかにリソース捕捉関数とリソース解放関数の出現パタンに合致しないパタンを含む実行パスについて簡易に判定をすることができる。
また、上記実施形態において説明したプログラム解析装置1が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係るプログラム解析装置1が実行する処理をコンピュータが実行可能な言語で記述したプログラム解析プログラムを作成することもできる。この場合、コンピュータがプログラム解析プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラム解析プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラム解析プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
10 入力部
20 制御部
21 解析部
22 生成部
23 抽出部
30 記憶部
31 ソースコード記憶部
32 サブルーチン展開コード記憶部
33 関数記憶部
34 実行パス記憶部
35 関数ペア集合記憶部
40 出力部
Claims (8)
- ソースコード中、第1の関数が呼び出された位置から処理が辿る可能性のある実行パスにループが含まれる場合に、当該ループを1回からn回(nは2以上の自然数)まで繰り返して実行した場合のそれぞれについて、処理が辿る可能性のある実行パスを生成する生成部と、
生成した前記実行パスにおいて、前記第1の関数と、前記第1の関数の戻り値を格納する変数と、前記第1の関数とは異なり該第1の関数の戻り値を格納する前記変数を引数とする第2の関数と、の出現パタンが、リソース捕捉関数とリソース解放関数の出現パタンに合致する場合、前記第1の関数と前記第2の関数とをリソース捕捉関数とリソース解放関数のペアとして抽出する抽出部と、
を備え、
前記生成部は、前記第1の関数の戻り値を前記変数に格納する第1の処理と、当該変数を引数とし、前記第1および第2の関数と異なる第3の関数を呼び出す第2の処理と、前記変数を引数とする前記第2の関数を呼び出す第3の処理と、の出現順序のみを示す実行パスを生成することを特徴とするプログラム解析装置。 - 前記生成部は、生成した前記実行パスに、前記第1および第2の関数がリソース捕捉関数とリソース解放関数であるとした場合に、リソース捕捉関数とリソース解放関数の出現パタンに合致しない箇所がある場合、合致しない箇所を一部を残して削除することにより、前記実行パスを短くすることを特徴とする請求項1に記載のプログラム解析装置。
- 前記生成部は、生成した前記実行パスが、
(1)前記第3の処理を3以上含む場合、2回目の前記第3の処理の出現より後の処理を削除し、
(2)前記第1の処理の後、前記第2の処理を2以上含む場合、2回目以降の前記第2の処理を削除し、
(3)前記第3の処理の後、前記第2の処理を2以上含む場合、2回目以降の前記第2の処理を削除する、
ことにより、前記実行パスを短くすることを特徴とする請求項2に記載のプログラム解析装置。 - ソースコード中、第1の関数が呼び出された位置から処理が辿る可能性のある実行パスにループが含まれる場合に、当該ループを1回からn回(nは2以上の自然数)まで繰り返して実行した場合のそれぞれについて、処理が辿る可能性のある実行パスを生成する生成部と、
生成した前記実行パスにおいて、前記第1の関数と、前記第1の関数の戻り値を格納する変数と、前記第1の関数とは異なり該第1の関数の戻り値を格納する前記変数を引数とする第2の関数と、の出現パタンが、リソース捕捉関数とリソース解放関数の出現パタンに合致する場合、前記第1の関数と前記第2の関数とをリソース捕捉関数とリソース解放関数のペアとして抽出する抽出部と、
を備え、
前記生成部は、前記ループをn回実行した場合に得られる実行パスと、前記ループを(n−1)回実行した場合に得られる実行パスと、が等しくなった場合に、前記実行パスの生成を終了することを特徴とするプログラム解析装置。 - 前記抽出部は、前記ソースコード中に、前記第1の関数を呼び出して戻り値を変数に格納する位置が複数ある場合に、各位置から辿ることができる1以上の実行パスのうち、前記出現パタンに合致する実行パスが少なくとも一つ存在することを条件として、前記第1の関数と前記第2の関数とを抽出することを特徴とする請求項1から4のいずれか1項に記載のプログラム解析装置。
- ソースコード中、第1の関数が呼び出された位置から処理が辿る可能性のある実行パスにループが含まれる場合に、当該ループを1回からn回(nは2以上の自然数)まで繰り返して実行した場合のそれぞれについて、処理が辿る可能性のある実行パスを生成する生成工程と、
生成した前記実行パスにおいて、前記第1の関数と、前記第1の関数の戻り値を格納する変数と、前記第1の関数とは異なり前記変数を引数とする第2の関数と、の出現パタンが、リソース捕捉関数とリソース解放関数の出現パタンに合致する場合、前記第1の関数と前記第2の関数とをリソース捕捉関数とリソース解放関数のペアとして抽出する抽出工程と、
をコンピュータが実行し、
前記生成工程は、前記第1の関数の戻り値を前記変数に格納する第1の処理と、当該変数を引数とし、前記第1および第2の関数と異なる第3の関数を呼び出す第2の処理と、前記変数を引数とする前記第2の関数を呼び出す第3の処理と、の出現順序のみを示す実行パスを生成することを特徴とするプログラム解析方法。 - ソースコード中、第1の関数が呼び出された位置から処理が辿る可能性のある実行パスにループが含まれる場合に、当該ループを1回からn回(nは2以上の自然数)まで繰り返して実行した場合のそれぞれについて、処理が辿る可能性のある実行パスを生成する生成工程と、
生成した前記実行パスにおいて、前記第1の関数と、前記第1の関数の戻り値を格納する変数と、前記第1の関数とは異なり前記変数を引数とする第2の関数と、の出現パタンが、リソース捕捉関数とリソース解放関数の出現パタンに合致する場合、前記第1の関数と前記第2の関数とをリソース捕捉関数とリソース解放関数のペアとして抽出する抽出工程と、
をコンピュータが実行し、
前記生成工程は、前記ループをn回実行した場合に得られる実行パスと、前記ループを(n−1)回実行した場合に得られる実行パスと、が等しくなった場合に、前記実行パスの生成を終了することを特徴とするプログラム解析方法。 - コンピュータを請求項1〜5のいずれか1項に記載のプログラム解析装置として機能させるためのプログラム解析プログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016161559A JP6574151B2 (ja) | 2016-08-19 | 2016-08-19 | プログラム解析装置、プログラム解析方法およびプログラム解析プログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2016161559A JP6574151B2 (ja) | 2016-08-19 | 2016-08-19 | プログラム解析装置、プログラム解析方法およびプログラム解析プログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2018028879A JP2018028879A (ja) | 2018-02-22 |
| JP6574151B2 true JP6574151B2 (ja) | 2019-09-11 |
Family
ID=61248499
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2016161559A Active JP6574151B2 (ja) | 2016-08-19 | 2016-08-19 | プログラム解析装置、プログラム解析方法およびプログラム解析プログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6574151B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10996906B2 (en) | 2018-02-21 | 2021-05-04 | Canon Kabushiki Kaisha | Image processing apparatus that is connectable with information processing apparatus providing service to image processing apparatus, control method therefor, and storage medium storing control program therefor |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62121553A (ja) * | 1985-11-22 | 1987-06-02 | Fujitsu Ltd | パス解析処理方式 |
| JPH0926897A (ja) * | 1995-05-08 | 1997-01-28 | Toshiba Corp | プログラム解析装置及びプログラム解析方法 |
| JP3418544B2 (ja) * | 1998-03-24 | 2003-06-23 | 日立ソフトウエアエンジニアリング株式会社 | プログラムのテストデータ自動生成装置 |
| JP4257096B2 (ja) * | 2002-10-21 | 2009-04-22 | 株式会社日立製作所 | ソースプログラムの静的解析装置 |
| JP2006127496A (ja) * | 2004-10-01 | 2006-05-18 | Matsushita Electric Ind Co Ltd | Api仕様検証装置及び方法、当該方法を実行させるプログラム、当該プログラムを格納する記憶媒体 |
| JP5440287B2 (ja) * | 2010-03-15 | 2014-03-12 | 富士通株式会社 | シンボリック実行支援プログラム、方法及び装置 |
| US9811441B2 (en) * | 2011-03-23 | 2017-11-07 | Infosys Limited | Method and system for detecting memory leaks in a program |
| JP2013065258A (ja) * | 2011-09-20 | 2013-04-11 | Nec Corp | 情報処理装置、情報処理方法及び情報処理プログラム |
-
2016
- 2016-08-19 JP JP2016161559A patent/JP6574151B2/ja active Active
Also Published As
| Publication number | Publication date |
|---|---|
| JP2018028879A (ja) | 2018-02-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8291399B2 (en) | Off-line program analysis and run-time instrumentation | |
| JPWO2006038394A1 (ja) | ソースコード検査器、方法、プログラム及び記憶媒体 | |
| JP5450840B2 (ja) | プログラムの実行性能評価のためのテストデータ生成方法 | |
| JP2009176246A (ja) | システムの動作を検証するシステムおよび方法 | |
| JP2016115175A (ja) | ソフトウェアテスト装置およびソフトウェアテストプログラム | |
| CN109961150B (zh) | 一种应对退相干的量子程序变换方法及系统 | |
| US8752007B2 (en) | Automatic generation of run-time instrumenter | |
| JP6574151B2 (ja) | プログラム解析装置、プログラム解析方法およびプログラム解析プログラム | |
| Rodatz et al. | Fault Tolerance by Construction | |
| US12282412B2 (en) | Coverage-guided fuzzing via dynamic instrumentation | |
| Amalfitano et al. | Improving code coverage in android apps testing by exploiting patterns and automatic test case generation | |
| JP5163172B2 (ja) | ソフトウェアテスト項目編集支援装置およびソフトウェアテスト項目編集支援方法 | |
| JP5207314B2 (ja) | テストパタン圧縮方法およびテストパタン圧縮システム | |
| JP2019148874A (ja) | プロジェクト分析装置及びプログラム | |
| JP7211228B2 (ja) | 解析装置、解析方法、及びプログラム | |
| Akimoto et al. | Test case selection technique for regression testing using differential control flow graphs | |
| JP6301851B2 (ja) | プログラム解析装置、誤り検出装置、プログラム解析方法、誤り検出方法、プログラム解析プログラム及び誤り検出プログラム | |
| US8930759B2 (en) | Stream generation | |
| Dhatchayani et al. | Test Case Generation and Reusing Test Cases for GUI Designed with HTML. | |
| JP7244756B2 (ja) | 分析プログラム、プログラム分析方法およびプログラム分析装置 | |
| JP5578625B2 (ja) | プログラム分析装置、プログラム分析方法、及びプログラム | |
| JP2011100420A (ja) | テストプログラム作成装置 | |
| JP5918102B2 (ja) | 解析システム、解析装置、解析方法及び解析プログラム | |
| CN117520191B (zh) | 一种基于程序路径的测试完备性检查方法、设备及存储介质 | |
| JP6437396B2 (ja) | トレース情報管理システム、方法、及びプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180830 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190530 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190611 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190726 |
|
| 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: 20190813 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190815 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6574151 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |