JP2021086399A - プログラムエラー統合プログラム及び情報処理装置 - Google Patents

プログラムエラー統合プログラム及び情報処理装置 Download PDF

Info

Publication number
JP2021086399A
JP2021086399A JP2019215004A JP2019215004A JP2021086399A JP 2021086399 A JP2021086399 A JP 2021086399A JP 2019215004 A JP2019215004 A JP 2019215004A JP 2019215004 A JP2019215004 A JP 2019215004A JP 2021086399 A JP2021086399 A JP 2021086399A
Authority
JP
Japan
Prior art keywords
error
message
information
integration
messages
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
JP2019215004A
Other languages
English (en)
Inventor
孝次 佐々木
Koji Sasaki
孝次 佐々木
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019215004A priority Critical patent/JP2021086399A/ja
Publication of JP2021086399A publication Critical patent/JP2021086399A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】ユーザによるプログラム検証の効率を向上させること。【解決手段】構文解析部11が、ソースコード2の構文解析を行い、構文情報4を作成する。そして、指摘抽出部12が、構文情報4に基づいて違反を抽出し、自装置指摘メッセージ3を作成する。そして、検出部21が、自装置指摘メッセージ3と構文情報4から作成されたNG判定情報付き指摘メッセージ5と他装置指摘メッセージ7から原因が同一であるメッセージを検出する。そして、生成部22が、検出部21により原因が同一であることが検出された2つのメッセージを統合したメッセージを作成し、作成したメッセージを統合指摘メッセージ8に含める。【選択図】図5

Description

本発明は、プログラムエラー統合プログラム及び情報処理装置に関する。
近年、様々な機器がネットワークに繋がれることから、各機器のセキュリティ対策が重要になっている。機器のセキュリティ対策の1つとして、機器に内蔵されたコンピュータにより実行されるプログラムをコーディング規約に基づいて作成することがあげられる。コーディング規約としては、例えばCERT(Computer Emergency Response Team)の標準セキュアコーディング規約がある。
コーディング規約に基づいてソースプログラムが作成されているかは、静的解析ツールにより検査される。ここで、静的解析ツールとは、対象プログラムを実行することなく解析することにより対象プログラムを検査するプログラムである。
なお、静的解析ツールに関する従来技術として、複数種の静的解析ツールを使用した場合における、品質検証者の作業負担を軽減する解析結果出力装置がある。この解析結果出力装置は、マージ処理実行部とマージ結果表示部とを装備する。マージ処理実行部は、複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの問題点が指摘された解析結果から、指摘問題内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に基づいて、同一指摘部分を検出する。マージ結果表示部は、マージ処理実行部による検出結果に基づいて、同一指摘部分を整理して解析結果を表示する。
また、従来技術として、ソフトウェアコードが実際に欠陥を含むかどうかを正確に評価する品質分析方法がある。この品質分析方法は、複数の分析ツールからなる分析ツールセットの性能統計を計算するステップと、分析ツールセットに含まれる1つ又は複数の分析ツールを用いて、コードベースを分析するステップとを含む。また、この品質分析方法は、分析ツールセットに含まれる1つ又は複数の分析ツールのそれぞれについて、対応する分析ツールによって特定される誤り及び正しさを示す分析結果を生成するステップを含む。また、この品質分析方法は、分析ツールセットに含まれる1つ又は複数の分析ツールのそれぞれと関連付けられた分析結果と性能統計とに基づいて、コードベースにおける欠陥のリスクを推定するステップを含む。
特開2009−169573号公報 特開2016−4569号公報
全てのコーディング規約を検査する静的解析ツールはなく、静的解析ツールにより検査するコーディング規約が異なることから、ソースプログラムの検査には複数の静的解析ツールが用いられる。例えば、性能を重視した解析を行う静的解析ツール、セキュリティを重視した解析を行う静的解析ツールなどがある。
ただし、複数の静的解析ツールには、検査するコーディング規約が重なる部分もある。また、検査結果として出力される違反メッセージは、同一コーディング規約に関して静的解析ツールによって異なる。このため、複数の静的解析ツールを用いるユーザは1つのコーディング規約違反に対して複数の異なる違反メッセージを検証することになり、検証効率が悪いという問題がある。
なお、複数の静的解析ツールによりソースプログラムの同一箇所(ファイルと行番号が同じ)で検出された違反メッセージをまとめるツールはあるが、違反メッセージの箇所は異なるが原因箇所が同じ違反メッセージをまとめるツールはない。図10は、静的解析ツールにより違反が指摘された指摘箇所と違反の原因箇所との関係を説明するための図である。図10は、静的解析ツールAの指摘箇所の集合91と静的解析ツールBの指摘箇所の集合92を示す。指摘箇所の集合91と指摘箇所の集合92が重なる部分は、2つのツールで指摘箇所が同じ場合を示す。MSGは、違反メッセージを表す。
図10に示すように、2つのツールで指摘箇所が同じ場合でも、原因箇所が異なる場合がある。また、2つのツールで指摘箇所が異なる場合でも、原因箇所が同じ場合がある。また、同一ツールで指摘箇所が異なっていても、原因箇所が同じ場合がある。
本発明は、1つの側面では、原因箇所が同じである違反メッセージをまとめることで、ユーザによるプログラム検証の効率を向上させることを目的とする。
1つの態様では、プログラムエラー統合プログラムは、コンピュータに、第1エラー情報、第2エラー情報、構文情報に基づいて、同じループに対する同じ要因のエラーメッセージを前記第1エラー情報と前記第2エラー情報からそれぞれ検出する処理を実行させる。前記第1エラー情報は、ユーザーソースコードを基に第1エラー検出プログラムが生成した情報である。前記第2エラー情報は、前記ユーザーソースコードを基に第2エラー検出プログラムが生成した情報である。前記構文情報は、前記ユーザーソースコードを基に前記第2エラー検出プログラムが生成した情報である。そして、前記プログラムエラー統合プログラムは、前記コンピュータに、前記第1エラー情報から検出したエラーメッセージ、及び前記第2エラー情報から検出したエラーメッセージを基に統合エラーメッセージを生成する処理を実行させる。
他の態様では、プログラムエラー統合プログラムは、コンピュータに、第1エラー情報、第2エラー情報、構文情報に基づいて、同じ変数に対する同じ要因のエラーメッセージを前記第1エラー情報と前記第2エラー情報からそれぞれ検出する処理を実行させる。前記第1エラー情報は、ユーザーソースコードを基に第1エラー検出プログラムが生成した情報である。前記第2エラー情報は、前記ユーザーソースコードを基に第2エラー検出プログラムが生成した情報である。前記構文情報は、前記ユーザーソースコードを基に前記第2エラー検出プログラムが生成した情報である。そして、前記プログラムエラー統合プログラムは、前記コンピュータに、前記第1エラー情報から検出したエラーメッセージ、及び前記第2エラー情報から検出したエラーメッセージを基に統合エラーメッセージを生成する処理を実行させる。
他の態様では、プログラムエラー統合プログラムは、コンピュータに、エラー情報に含まれる2つのメッセージと、構文情報に基づいて、前記2つのメッセージが同じ変数に対する同じ要因により生成されたか否かを判定する処理を実行させる。前記エラー情報と前記構文情報は、ユーザーソースコードを基に生成される。そして、前記プログラムエラー統合プログラムは、前記2つのメッセージが同じ変数に対する同じ要因により生成されたと判定すると、前記コンピュータに、前記2つのメッセージを統合した統合メッセージを生成する処理を実行させる。
1つの側面では、本発明は、ユーザによるプログラム検証の効率を向上させることができる。
図1Aは、静的解析装置が入出力する情報を示す図である。 図1Bは、NG判定情報付加を説明するための図である。 図1Cは、メッセージ統合を説明するための図である。 図1Dは、メッセージ統合の詳細を説明するための第1の図である。 図1Eは、メッセージ統合の詳細を説明するための第2の図である。 図1Fは、メッセージ統合の詳細を説明するための第3の図である。 図2Aは、静的解析装置が入出力する情報を示す図である。 図2Bは、メッセージ統合を説明するための第1の図である。 図2Cは、メッセージ統合を説明するための第2の図である。 図3は、統合結果の見直しを説明するための図である。 図4は、他装置指摘メッセージの自装置指摘メッセージへの統合状態を示す図である。 図5は、静的解析装置の機能構成を示す図である。 図6は、NG判定情報付加部による処理のフローを示すフローチャートである。 図7は、メッセージ統合部による処理のフローを示すフローチャートである。 図8Aは、実施例2に係る静的解析装置が入出力する情報を示す図である。 図8Bは、メッセージ統合を説明するための図である。 図9は、実施例に係る静的解析プログラムを実行するコンピュータのハードウェア構成を示す図である。 図10は、静的解析ツールにより違反が指摘された指摘箇所と違反の原因箇所との関係を説明するための図である。
以下に、本願の開示するプログラムエラー統合プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
まず、実施例1に係る静的解析装置による違反(エラー)メッセージ統合例について説明する。図1A〜図3は、実施例1に係る静的解析装置1による違反メッセージ統合例を説明するための図である。図1A〜図1Fは、ループにおいて実施例1に係る静的解析装置と他の静的解析装置が同一原因箇所に関して指摘箇所が異なる場合の違反メッセージの統合の例を示す。
図1Aは、静的解析装置1が入出力する情報を示す図である。図1Aに示すように、静的解析装置1は、ソースコード2を入力して構文解析を行い、自装置指摘メッセージ3と構文情報4を出力する。ここで、自装置指摘メッセージ3は、静的解析装置1が指摘した違反を示す1つ以上のメッセージである。
そして、静的解析装置1は、自装置指摘メッセージ3と構文情報4を用いてNG判定情報付加(1)を行うことで、NG判定情報付き指摘メッセージ5を出力する。ここで、NG判定情報とは、違反と判定した根拠となる情報であり、構文情報4に含まれる情報である。
そして、静的解析装置1は、NG判定情報付き指摘メッセージ5と他装置指摘メッセージ7を用いてメッセージ統合(2)を行うことで、統合指摘メッセージ8を出力する。ここで、他装置指摘メッセージ7は、他の静的解析装置が指摘した違反を示す1つ以上のメッセージである。以下に、図1B〜図1Fを用いて統合指摘メッセージ8の作成手順について説明する。
図1Bは、NG判定情報付加を説明するための図である。図1Bに示すように、静的解析装置1は、自装置指摘メッセージ3の各メッセージに、構文情報4の中で違反の根拠とした字句を結合してNG判定情報付き指摘メッセージ5を出力する。
自装置指摘メッセージ3に含まれるメッセージは、ソースコード2のファイル名、ソースコード2の行番号、指摘ID及びメッセージテキストを含む。ここで、指摘IDは、指摘の種別を識別する識別子である。図1Bにおいて、例えば、「a.c」がソースコード2のファイル名であり、「(2)」がソースコード2の行番号であり、「pgr0772」が指摘IDであり、「ループ内に複数のbreak文があります。」がメッセージテキストである。
静的解析装置1は、構文情報4から「pgr0772」の条件に該当する箇所を検索する(t1)。ここで、「pgr0772」の条件は、「ループ文の直下に複数の脱出文が存在」である。構文情報4において、2行目のループ文(while文)41には、直下に脱出文(break文)42と脱出文(break文)43がある。したがって、2行目のループ文41には条件に該当する箇所があり、静的解析装置1は、メッセージ「a.c(2) pgr0772 ループ内に複数のbreak文があります。」を生成して出力する(t2)。
静的解析装置1は、違反検出時に根拠とした構文情報部分を生成したメッセージに結合し(t3)、NG判定情報付き指摘メッセージ5の1つのメッセージとして、構文情報付きメッセージを出力する(t4)。指摘根拠とした構文情報部分には、構文を構成するNG根拠字句と出現箇所が含まれる。例えば、メッセージ「a.c(2) pgr0772 ループ内に複数のbreak文があります。」には、「ループ文(while) a.c(2)」と「脱出文(break) a.c(5)」と「脱出文(break) a.c(13)」が結合される。ここで、「ループ文」、「while」、「脱出文」、「break」がNG根拠字句の例であり、「a.c(2)」、「a.c(5)」、「a.c(13)」が出現箇所の例である。なお、NG判定情報付き指摘メッセージ5において、「+」は結合を示す。
同様に、構文情報4において、7行目のループ文(while文)44には、直下に脱出文(break文)45と脱出文(break文)46がある。したがって、メッセージ「a.c(7) pgr0772 ループ内に複数のbreak文があります。」には、「ループ文(while) a.c(7)」と「脱出文(break) a.c(8)」と「脱出文(break) a.c(9)」が結合される。
図1Cは、メッセージ統合を説明するための図である。図1Cに示すように、静的解析装置1は、他装置指摘メッセージ7とNG判定情報付き指摘メッセージ5を用いてメッセージ統合を行い、統合指摘メッセージ8を出力する。図1D〜図1Fは、メッセージ統合の詳細を説明するための図である。
図1Dに示すように、ファイルa.cの2行目で「pgr0772」を指摘し、この指摘の根拠となった記述は、ファイルa.cの2行目、5行目及び13行目の記述であることを、静的解析装置1は、NG判定情報付き指摘メッセージ5から特定する(t11)。そして、静的解析装置1は、他装置指摘メッセージ7から、ファイルa.cの2行目、5行目及び13行目の位置のメッセージを探す(t12)。
他の静的解析装置6はファイルa.cの5行目で「ID0001」の指摘を行っているため、静的解析装置1は、以下のt14の判定を行う(t13)。すなわち、静的解析装置1は、「ID0001」のメッセージテキスト中に、NG判定情報付き指摘メッセージ5から得られるNG根拠字句(ループ文、break)が含まれているため、「ID0001」は同一の原因による指摘と判定する(t14)。
そして、静的解析装置1は、他装置指摘メッセージ7でファイルa.cの5行目に関する「ID0001」の指摘はt14にて同一原因で行われたと判定したので、メッセージを統合する(t15)。すなわち、「a.c(2) pgr0772 ループ内に複数のbreak文があります。」と「a.c(5) ID0001 ループ文に複数のbreakが存在します。」が統合される。
また、静的解析装置1は、メッセージを統合したら、統合対象メッセージと統合後メッセージの指摘種別ごとの出現回数を記録する(t16)。ここで、統合対象メッセージとは、NG判定情報付き指摘メッセージ5のメッセージであり、統合後メッセージは、統合指摘メッセージ8のメッセージである。図1Dでは、「pgr0772」が統合対象メッセージの指摘種別を示し、出現回数として「1」が記録される。また、「pgr0772−ID0001」が統合後メッセージの指摘種別を示し、出現回数として「1」が記録される。なお、出現回数は、後述するように、統合指摘メッセージ8の見直しに用いられる。
そして、他の静的解析装置6はファイルa.cの8行目と9行目で「ID0001」の指摘を行っているが静的解析装置1と指摘箇所が異なるため、静的解析装置1は、これらの指摘の原因は同一でないとする(t17、t18)。
また、図1Eに示すように、他装置指摘メッセージ7でファイルa.cの13行目に関する「ID0001」は指摘箇所が同じである(t19)。また、メッセージテキスト中に、NG判定情報付き指摘メッセージ5から得られるNG根拠字句(ループ文、break)が含まれている。このため、静的解析装置1は、同一の原因により出力されたメッセージと判定する(t20)。
そして、静的解析装置1は、他装置指摘メッセージ7でファイルa.cの13行目に関する「ID0001」のメッセージはt20にて同一原因で出力されたと判定したので、メッセージを統合する(t21)。すなわち、「a.c(2) pgr0772 ループ内に複数のbreak文があります。」に「a.c(13) ID0001 ループ文に複数のbreakが存在します。」がさらに統合される。
そして、静的解析装置1は、メッセージを統合したら、統合対象メッセージと統合後メッセージの指摘種別ごとの出現回数を記録する(t22)。ただし、静的解析装置1は、統合済のメッセージがある場合は、出現回数としてカウントしない。この例では、「a.c (2) pgr0772」と「ID0001」は統合済であり、統合済のメッセージがあるので、静的解析装置1は、出現回数としてカウントしない。したがって、「pgr0772」及び「pgr0772−ID0001」の出現回数は「1」のままである。
また、他装置指摘メッセージ7でファイルa.cの13行目に関する「ID0002」は指摘箇所が同じである(t23)。ただし、メッセージテキスト中に、NG判定情報付き指摘メッセージ5から得られるNG根拠字句(while、ループ文、break、脱出文)が含まれていない。このため、静的解析装置1は、異なる原因により出力されたメッセージと判定する(t24)。
そして、図1Fに示すように、静的解析装置1は、同様に、「a.c(7) pgt0772」の統合処理を行う(t25)。その結果、NG判定情報付き指摘メッセージ5の「a.c(7) pgr0772 ループ内に複数のbreak文があります。」と他装置指摘メッセージ7の「a.c(8) ID0001 ループ文に複数のbreakが存在します。」が統合される。また、NG判定情報付き指摘メッセージ5の「a.c(7) pgr0772 ループ内に複数のbreak文があります。」に他装置指摘メッセージ7の「a.c(9) ID0001 ループ文に複数のbreakが存在します。」がさらに統合される。
そして、静的解析装置1は、メッセージを統合したら、統合対象メッセージと統合後メッセージの指摘種別ごとの出現回数を記録する(t26)。すなわち、「pgr0772」及び「pgr0772−ID0001」の出現回数が「2」に更新される。
図2A〜図2Cは、変数未初期化において静的解析装置1と他の静的解析装置が同一原因箇所に関して指摘箇所が異なる場合の違反メッセージ統合の例を示す。
図2Aは、静的解析装置1が入出力する情報を示す図である。入出力情報としては、図1Aと同様に、ソースコード2、自装置指摘メッセージ3、構文情報4、NG判定情報付き指摘メッセージ5、他装置指摘メッセージ7及び統合指摘メッセージ8がある。ただし、図2Aに示すように、ソースコード2のファイル名は「b.c」である。また、静的解析装置1は、NG判定情報付き指摘メッセージ5の出力に、変数に関する構文情報4を用いる。
NG判定情報付加では、静的解析装置1は、変数に関する構文情報4を参照して、自装置指摘メッセージ3に含まれる変数に、型、識別子、初期値の設定、定義箇所、出現箇所の情報を付加する。例えば、図2Aでは、変数xについて、構文情報4から、「変数定義(型 int,識別子 x,未設定,初期値なし) b.c (3)」と「出現(更新) b.c(5)」と「出現(参照) b.c(7)」が付加される。
図2B及び図2Cは、メッセージ統合を説明するための図である。なお、図2Aの統合指摘メッセージ8にはメッセージ統合による誤りがある。誤り箇所には削除線が付されている。すなわち、他装置指摘メッセージ7の「b.c(7) ID0007 変数‘x’はint型からchar型へ変換されます。」は、変数未初期化とは関係ない。この誤りの訂正処理については、図3を用いて後述する。
図2Bに示すように、ファイルb.cの7行目で「pgr0000」を指摘し、この指摘の根拠となった記述は、ファイルb.cの3行目、5行目及び7行目の記述であることを、静的解析装置1は、NG判定情報付き指摘メッセージ5から特定する(t31)。そして、静的解析装置1は、他装置指摘メッセージ7から、ファイルb.cの3行目、5行目及び7行目の位置のメッセージを探す(t32)。
他の静的解析装置6はファイルb.cの3行目で「ID0005」の指摘を行っているため、静的解析装置1は、以下のt34の判定を行う(t33)。すなわち、静的解析装置1は、「ID0005」のメッセージテキスト中に、NG判定情報付き指摘メッセージ5から得られるNG根拠字句(x)が含まれているため、「ID0005」は同一の原因による指摘と判定する(t34)。
そして、静的解析装置1は、他装置指摘メッセージ7でファイルb.cの3行目に関する「ID0005」の指摘はt34にて同一原因で行われたと判定したので、メッセージを統合する(t35)。すなわち、「b.c(7) pgr0000 変数“x”は参照の前に値の設定がない可能性があります。」と「b.c(3) ID0005 変数‘x’には、値が設定されていません。」が統合される。
また、静的解析装置1は、メッセージを統合したら、統合対象メッセージと統合後メッセージの指摘種別ごとの出現回数を記録する(t36)。図2Bでは、「pgr0000」が統合対象メッセージの指摘種別を示し、出現回数として「1」が記録される。また、「pgr0000−ID0005」が統合後メッセージの指摘種別を示し、出現回数として「1」が記録される。
そして、他の静的解析装置6はファイルb.cの3行目に関して「ID0005」の指摘を行っているが、NG根拠字句が異なるため、静的解析装置1は、この指摘の原因は同一でないとする。
そして、図2Cに示すように、他の静的解析装置6はファイルb.cの7行目に関して「ID0007」の指摘を行っており、「ID0007」のメッセージテキスト中に、NG判定情報付き指摘メッセージ5から得られるNG根拠字句(x)が含まれている。このため、静的解析装置1は、指摘の原因が同一であると判定し、メッセージを統合する。
すなわち、「b.c(7) ID0007 変数‘x’はint型からchar型へ変換されます。」が、「b.c(7) pgr0000 変数“x”は参照の前に値の設定がない可能性があります。」に統合される。ただし、この統合は間違いであるので、図3に示すように、後に修正される。また、静的解析装置1は、「pgr0000−ID0007」の出現回数として「1」を記録する。
そして、静的解析装置1は、b.cファイルの7行目の変数yに関するメッセージに対して、同様の統合判定を実施する。その結果、「b.c(7) pgr0000 変数“y”は参照の前に値の設定がない可能性があります。」と「b.c(3) ID0005 変数‘y’には、値が設定されていません。」が統合される。また、静的解析装置1は、「pgr0000」の出現回数を「2」とし、「pgr0000−ID0005」の出現回数を「2」とする。
図3は、統合結果の見直しを説明するための図である。統合指摘メッセージ(見直し前)8aには、「b.c(7) ID0007 変数‘x’はint型からchar型へ変換されます。」が「b.c(7) pgr0000 変数“x”は参照の前に値の設定がない可能性があります。」に統合されている。この統合は誤りである。
このような誤りを除くため、静的解析装置1は、出現回数を用いて統合結果を見直す。具体的には、静的解析装置1は、全てのメッセージの統合が完了したら、統合度を計算する(t41)。ここで、統合度は、統合後メッセージの出現回数を統合対象メッセージの出現回数で割った値を%で表現したものである。そして、静的解析装置1は、統合度が所定の閾値以下である場合には、統合を解除する。
図3では、「pgr0000−ID0005」と「pgr0772−ID0001」の統合度は100%であるが、「pgr0000−ID0007」の統合度は50%である。したがって、所定の閾値を、例えば、50%とすると、静的解析装置1は、「ID0007」のメッセージの統合を解除し、「ID0007」のメッセージを他の静的解析装置の固有メッセージとする(t42)。その結果、統合指摘メッセージ(見直し後)8bでは、「b.c(7) ID0007 変数‘x’はint型からchar型へ変換されます。」が統合から解除されている。
図4は、他装置指摘メッセージ7の自装置指摘メッセージ3への統合状態を示す図である。図4に示すように、「a.c(13) ID0002 if文に括弧がありません。」以外のメッセージは統合されている。ただし、「b.c(7) ID0007 変数‘x’はint型からchar型へ変換されます。」は統合後に見直しが行われ、固有のメッセージに戻されている。
このように、静的解析装置1は、他装置指摘メッセージ7と自装置指摘メッセージ3を分析し、原因が同一であるメッセージを統合して統合指摘メッセージ8を出力するので、プログラムの検証効率を向上することができる。また、静的解析装置1は、統合結果の見直しを行うことによって、誤って統合されたメッセージを固有メッセージに戻すことができる。
次に、静的解析装置1の機能構成について説明する。図5は、静的解析装置1の機能構成を示す図である。図5に示すように、静的解析装置1は、違反検出部10とメッセージ統合部20とを有する。
違反検出部10は、ソースコード2を読み込んで構文情報4と自装置指摘メッセージ3とNG判定情報付き指摘メッセージ5を作成する。
違反検出部10は、例えば、ユーザがキーボードやマウスを用いて指定した解析指示及びファイル名を受け付けて、指定されたファイルからソースコード2を読み込む。また、違反検出部10は、例えば、ユーザがキーボードやマウスを用いて指定したファイル名を3つ受け付ける。そして、違反検出部10は、指定されたファイルの1つに構文情報4を書き込み、指定されたファイルの他の1つに自装置指摘メッセージ3を書き込み、指定されたファイルの残りの1つにNG判定情報付き指摘メッセージ5を書き込む。
メッセージ統合部20は、NG判定情報付き指摘メッセージ5と、他の静的解析装置6がソースコード2から作成した他装置指摘メッセージ7と、構文情報4とを用いて統合指摘メッセージ8を作成する。メッセージ統合部20は、例えば、他装置指摘メッセージ7と統合指摘メッセージ8をファイルから読み込む。また、メッセージ統合部20は、例えば、ユーザがキーボードやマウスを用いて指定したファイル名を受け付け、指定されたファイルに統合指摘メッセージ8を書き込む。あるいは、メッセージ統合部20は、統合指摘メッセージ8を表示装置や印刷装置に出力してもよい。
違反検出部10は、構文解析部11と、指摘抽出部12と、NG判定情報付加部13とを有する。メッセージ統合部20は、検出部21と、生成部22と、見直し部23とを有する。
構文解析部11は、ソースコード2の構文解析を行い、構文情報4を作成する。構文解析部11は、例えば、構文規則を記憶装置に記憶し、記憶した構文規則を用いて構文情報4を作成する。指摘抽出部12は、構文情報4に基づいてソースコード2の違反を抽出し、自装置指摘メッセージ3を作成する。NG判定情報付加部13は、構文情報4と自装置指摘メッセージ3を用いてNG判定情報付き指摘メッセージ5を作成する。
NG判定情報付加部13は、自装置指摘メッセージ3に含まれる各メッセージについて、構文情報4から指摘の根拠となる構文情報部分を抽出し、抽出した構文情報部分をメッセージに結合することで、NG判定情報付き指摘メッセージ5を作成する。
検出部21は、NG判定情報付き指摘メッセージ5と他装置指摘メッセージ7から原因同一条件を満たすメッセージを抽出する。ここで、原因同一条件を満たすとは、次の2つの条件を満たすことである。
・他装置指摘メッセージ7から読み込んだメッセージの検出箇所がNG判定情報の出現箇所に含まれる。
・NG判定情報に含まれるNG根拠字句が他装置指摘メッセージ7から読み込んだメッセージのメッセージテキストに全て含まれる。ただし、変数については、NG判定情報に含まれるNG根拠字句の一部が他装置指摘メッセージ7から読み込んだメッセージのメッセジテキストに含まれればよい。
検出部21は、NG判定情報付き指摘メッセージ5に含まれるメッセージを統合対象メッセージとして、統合対象メッセージに含まれる出現箇所に基づいて他装置指摘メッセージ7からメッセージを抽出する。そして、検出部21は、抽出したメッセージのメッセージテキストに、統合対象メッセージに含まれるNG根拠字句が全て(変数については一部)含まれるか否かを判定することで、抽出したメッセージと統合対象メッセージの原因が同一であるか否かを判定する。
生成部22は、検出部21により原因同一条件を満たすと判定された2つのメッセージを統合したメッセージを作成し、作成したメッセージを統合指摘メッセージ8に含める。生成部22は、統合対象メッセージに他装置指摘メッセージ7から抽出されたメッセージを結合することで2つのメッセージを統合する。
また、生成部22は、2つのメッセージを統合すると、統合対象メッセージ及び統合後メッセージの指摘種別ごとの出現回数を記録する。ただし、生成部22は、1つの統合対象メッセージに他装置指摘メッセージ7から複数のメッセージが結合された場合には、出現回数を「1」とカウントする。
見直し部23は、統合後メッセージの指摘種別ごとの出現回数を統合対象メッセージの指摘種別ごとの出現回数で割った結果を%で表示する統合度に基づいて統合指摘メッセージ8を見直す。見直し部23は、統合度が所定の閾値以下の場合には、統合を解除し、統合指摘メッセージ8を更新する。
次に、NG判定情報付加部13によるNG判定情報付加処理のフローについて説明する。図6は、NG判定情報付加部13による処理のフローを示すフローチャートである。図6に示すように、NG判定情報付加部13は、構文情報4の読み込みを行う(ステップS1)。NG判定情報付加部13は、例えばファイルから構文情報4を読み込み、メモリに展開する。
そして、NG判定情報付加部13は、検査する指摘IDを選択する(ステップS2)。NG判定情報付加部13は、「pgr0000」〜「pgr9999」から順番に1つずつ指摘IDを選択する。そして、NG判定情報付加部13は、最後の指摘IDまで検査したか否かを判定し(ステップS3)、最後の指摘IDまで検査した場合には、NG判定情報付加処理を終了する。
一方、検査していない指摘IDがある場合には、NG判定情報付加部13は、自装置指摘メッセージ3から、選択した指摘IDを含むメッセージを1つ選択する(ステップS4)。そして、NG判定情報付加部13は、選択した指摘IDを含む全メッセージを検査したか否かを判定し(ステップS5)、選択した指摘IDを含む全メッセージを検査した場合にはステップS2へ戻る。
一方、選択した指摘IDを含むメッセージに検査していないメッセージがある場合には、NG判定情報付加部13は、検査対象指摘IDの条件に該当する箇所を構文情報4から検索する(ステップS6)。そして、NG判定情報付加部13は、条件に該当する箇所を構文情報4から検索したか否かを判定し(ステップS7)、検索しなかった場合には、ステップS4へ戻る。
一方、条件に該当する箇所を構文情報4から検索した場合には、NG判定情報付加部13は、選択したメッセージを出力し(ステップS8)、該当箇所のNG根拠字句と出現箇所を該当個数分出力する(ステップS9)。そして、NG判定情報付加部13は、ステップS4へ戻る。
このように、NG判定情報付加部13が検査対象指摘IDの条件に該当する箇所を構文情報4から検索し、メッセージを出力した後に、該当箇所のNG根拠字句と出現箇所を該当個数分出力するので、メッセージ統合部20がメッセージ統合を行うことができる。
次に、メッセージ統合部20によるメッセージ統合処理のフローについて説明する。図7は、メッセージ統合部20による処理のフローを示すフローチャートである。図7に示すように、メッセージ統合部20は、NG判定情報付き指摘メッセージ5からNG判定情報が付加されたメッセージを読み込む(ステップS11)。
そして、メッセージ統合部20は、NG判定情報付き指摘メッセージ5を最後まで読み込んだか否かを判定し(ステップS12)、最後まで読み込んでいない場合には、他装置指摘メッセージ7の読み込み位置を先頭に設定する(ステップS13)。そして、メッセージ統合部20は、他装置指摘メッセージ7からメッセージを1つ読み込み(ステップS14)、他装置指摘メッセージ7を最後まで読み込んだか否かを判定する(ステップS15)。そして、他装置指摘メッセージ7を最後まで読み込んだ場合には、メッセージ統合部20は、ステップS11に戻る。
一方、他装置指摘メッセージ7を最後まで読み込んでいない場合には、メッセージ統合部20は、2つのメッセージを比較し(ステップS16)、原因同一条件を満たすか否かを判定する(ステップS17)。ここで、2つのメッセージは、NG判定情報付き指摘メッセージ5と他装置指摘メッセージ7からそれぞれ読み込まれたメッセージである。
そして、原因同一条件を満たす場合には、メッセージ統合部20は、統合指摘メッセージ8に2つのメッセージを統合して出力する(ステップS18)。ただし、メッセージ統合部20は、NG判定情報付き指摘メッセージ5のメッセージに含まれるNG判定情報は削除する。また、メッセージ統合部20は、NG判定情報付き指摘メッセージ5から読み込んだメッセージが同じ場合には、他装置指摘メッセージ7のメッセージだけを統合指摘メッセージ8に追加する。
そして、メッセージ統合部20は、出現回数を記録し(ステップS19)、ステップS14に戻る。また、メッセージ統合部20は、ステップS17において、原因同一条件を満たさない場合には、ステップS14に戻る。
また、ステップS12において、NG判定情報付き指摘メッセージ5を最後まで読み込んだ場合には、メッセージ統合部20は、統合度を計算し(ステップS20)、統合後メッセージを読み込む(ステップS21)。そして、メッセージ統合部20は、統合後メッセージを最後まで読み込んだか否かを判定し(ステップS22)、統合後メッセージを最後まで読み込んだ場合には、メッセージ統合処理を終了する。
一方、統合後メッセージを最後まで読み込んでいない場合には、メッセージ統合部20は、読み込んだ統合後メッセージが統合度が所定値以下のメッセージか否かを判定し(ステップS23)、統合度が所定値以下のメッセージでない場合は、ステップS21に戻る。一方、統合度が所定値以下のメッセージでない場合は、メッセージ統合部20は、統合後メッセージを削除し(ステップS24)、ステップS21に戻る。なお、統合後メッセージが他装置指摘メッセージ7から読み込まれたメッセージを複数含む場合には、メッセージ統合部20は、他装置指摘メッセージ7から読み込まれたメッセージごとに統合度の判定と削除を行う。
このように、メッセージ統合部20が原因同一条件を満たすメッセージを統合するので、ユーザによるプログラム検証の効率を向上させることができる。
上述してきたように、実施例1では、構文解析部11が、ソースコード2の構文解析を行い、構文情報4を作成する。そして、指摘抽出部12が、構文情報4に基づいて違反を抽出し、自装置指摘メッセージ3を作成する。そして、NG判定情報付加部13が、構文情報4と自装置指摘メッセージ3を用いてNG判定情報付き指摘メッセージ5を作成する。そして、検出部21が、NG判定情報付き指摘メッセージ5と他装置指摘メッセージ7から原因が同一であるメッセージを検出する。そして、生成部22が、検出部21により原因が同一であることが検出された2つのメッセージを統合したメッセージを作成し、作成したメッセージを統合指摘メッセージ8に含める。したがって、静的解析装置1は、ユーザによるプログラム検証の効率を向上させることができる。
また、実施例1では、見直し部23は、統合対象メッセージと統合後メッセージの指摘種別ごとの出現回数を用いて、統合後メッセージの指摘種別ごとの統合度を計算し、計算した統合度に基づいて統合指摘メッセージ8を見直す。したがって、メッセージ統合部20は、正確にメッセージを統合することができる。
また、実施例1では、検出部21は、NG判定情報付き指摘メッセージ5と他装置指摘メッセージ7から、原因同一条件を満たすメッセージをそれぞれ抽出するので、原因が同一である2つのメッセージを正確に抽出することができる。
なお、実施例1では、静的解析装置1が自装置指摘メッセージ3と他装置指摘メッセージ7から原因が同一であるメッセージを統合する場合について説明したが、静的解析装置1及び他の静的解析装置6以外の装置が原因が同一であるメッセージを統合してもよい。すなわち、NG判定情報付加部13と、メッセージ統合部20を備えた装置が、構文情報4と静的解析装置1及び他の静的解析装置6がそれぞれ出力した指摘メッセージとを用いて、原因が同一であるメッセージを統合してもよい。
また、実施例1では、自装置と他の1つの静的解析装置のメッセージを統合する場合について説明したが、静的解析装置1は、自装置と他の2つ以上の静的解析装置のメッセージを統合してもよい。
上記実施例1では、複数の静的解析装置が出力した違反メッセージを統合する場合について説明したが、実施例2では、1つの静的解析装置が出力した複数の違反メッセージを統合する場合について説明する。実施例2では、変数のサイズが不足する場合を例として、複数の違反メッセージを統合する場合について説明する。
図8Aは、実施例2に係る静的解析装置1aが入出力する情報を示す図である。図8Aに示すように、静的解析装置1aは、ソースコード2を入力して構文解析を行い、指摘メッセージ3aと構文情報4を出力する。そして、静的解析装置1aは、指摘メッセージ3aと構文情報4を用いてNG判定情報付加(1)を行うことで、NG判定情報付き指摘メッセージ5を出力する。そして、静的解析装置1aは、NG判定情報付き指摘メッセージ5と指摘メッセージ3aを用いてメッセージ統合(2)を行うことで統合指摘メッセージ8を出力する。
図8Aにおいて、ソースコード2のファイル名はc.cである。また、NG判定情報付加では、構文情報4として、変数に関する情報と、違反が検出された文の構文に関する情報が用いられる。具体的には、違反が検出された7行目、9行目、14行目を含む6行目のIF文の構文の情報がNG判定情報付加で用いられる。
図8Bは、メッセージ統合を説明するための図である。図8Bに示すように、静的解析装置1aは、ファイルc.cの7行目で「pgr0548」を指摘する。そして、静的解析装置1aは、この指摘の根拠となった記述はファイルc.cの2行目、7行目、9行目及び14行目の記述であることを、NG判定情報付き指摘メッセージ5から特定する(t51)。
そして、静的解析装置1aは、指摘メッセージ3aから、7行目の指摘の根拠と同じ2行目、7行目、9行目及び14行目の位置で指摘されているメッセージを探す(t52)。その結果、9行目と14行目が特定される。静的解析装置1aは、9行目の指摘は、同じ変数(date)の同じ「ACCESS_SIZE_OVER」の指摘であるため、同一原因によるメッセージと判定する(t53)。
そして、静的解析装置1aは、t53において7行目と9行目のメッセージは同一原因により出力されたと判定したので、メッセージを統合する(t54)。静的解析装置1aは、番号が大きな指摘IDを番号が小さな指摘IDにぶら下げる。そして、静的解析装置1aは、統合対象メッセージと統合後メッセージの指摘種別ごとの出現回数を記録する(t55)。ただし、ここでは、統合された2つのメッセージが統合対象メッセージである。したがって、「pgr0548」と「pgr0570」に「1」が記録され、「pgr0548−pgr0570」に「1」が記録される。
そして、静的解析装置1aは、14行目についても同一原因によるメッセージかを判定する(t56)。14行目については、NG根拠字句に「ACCESS_SIZE_OVER」がないため、静的解析装置1aは、別の原因による指摘と判定する。そして、静的解析装置1aは、統合対象メッセージと統合後メッセージの指摘種別ごとの出現回数を記録する(t57)。ただし、ここでは、統合が行われなかったので、「pgr0039」に「1」が記録さる。
なお、静的解析装置1aの機能構成は、図5に示した静的解析装置1の機能構成から他の静的解析装置6及び他装置指摘メッセージ7を取り除くことで示される。また、静的解析装置1aによるNG判定情報付加処理のフローは、図6に示したフローチャートと同じである。また、静的解析装置1aによるメッセージ統合処理のフローは、図7において、他装置指摘メッセージ7を自装置指摘メッセージ3に置き換えたものである。
上述してきたように、実施例2では、静的解析装置1aは、自身が出力した指摘メッセージ3aについて、原因箇所が同一の複数のメッセージを関連付けてまとめて出力するので、プログラムの検証効率を向上することができる。
なお、実施例では、静的解析装置1及び1aについて説明したが、静的解析装置1及び1aが有する構成をソフトウェアによって実現することで、同様の機能を有する静的解析プログラムを得ることができる。そこで、静的解析プログラムを実行するコンピュータについて説明する。
図9は、実施例に係る静的解析プログラムを実行するコンピュータのハードウェア構成を示す図である。図9に示すように、コンピュータ50は、メインメモリ51と、CPU(Central Processing Unit)52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
メインメモリ51は、プログラムやプログラムの実行途中結果等を記憶するメモリである。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置であり、スーパーIO55は、マウスやキーボード等の入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVDの読み書きを行う装置である。
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
そして、コンピュータ50において実行される静的解析プログラムは、コンピュータ50により読み出し可能な記録媒体の一例であるDVDに記憶され、ODD57によってDVDから読み出されてコンピュータ50にインストールされる。あるいは、静的解析プログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベース等に記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされた静的解析プログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
1,1a 静的解析装置
2 ソースコード
3 自装置指摘メッセージ
3a 指摘メッセージ
4 構文情報
5 NG判定情報付き指摘メッセージ
6 他の静的解析装置
7 他装置指摘メッセージ
8,8a,8b 統合指摘メッセージ
10 違反検出部
11 構文解析部
12 指摘抽出部
13 NG判定情報付加部
20 メッセージ統合部
21 検出部
22 生成部
23 見直し部
41,44 ループ文
42,43,45,46 脱出文
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD
91,92 指摘箇所の集合

Claims (9)

  1. コンピュータに、
    ユーザーソースコードを基に第1エラー検出プログラムが生成した第1エラー情報、前記ユーザーソースコードを基に第2エラー検出プログラムが生成した第2エラー情報、及び前記ユーザーソースコードを基に前記第2エラー検出プログラムが生成した構文情報に基づいて、同じループに対する同じ要因のエラーメッセージを前記第1エラー情報と前記第2エラー情報からそれぞれ検出し、
    前記第1エラー情報から検出したエラーメッセージ、及び前記第2エラー情報から検出したエラーメッセージを基に統合エラーメッセージを生成する
    処理を実行させることを特徴とするプログラムエラー統合プログラム。
  2. コンピュータに、
    ユーザーソースコードを基に第1エラー検出プログラムが生成した第1エラー情報、前記ユーザーソースコードを基に第2エラー検出プログラムが生成した第2エラー情報、及び前記ユーザーソースコードを基に前記第2エラー検出プログラムが生成した構文情報に基づいて、同じ変数に対する同じ要因のエラーメッセージを前記第1エラー情報と前記第2エラー情報からそれぞれ検出し、
    前記第1エラー情報から検出したエラーメッセージ、及び前記第2エラー情報から検出したエラーメッセージを基に統合エラーメッセージを生成する
    処理を実行させることを特徴とするプログラムエラー統合プログラム。
  3. 前記コンピュータに、
    前記統合エラーメッセージを生成した場合に、前記第2エラー情報から検出したエラーメッセージの種別ごとに前記統合エラーメッセージの数を第1出現回数として記録し、
    前記第1エラー情報から検出したエラーメッセージの種別と前記第2エラー情報から検出したエラーメッセージの種別の組ごとに前記統合エラーメッセージの数を第2出現回数として記録し、
    前記第1出現回数と前記第2出現回数に基づいて、前記統合エラーメッセージが正しいか否かを判定する
    処理をさらに実行させることを特徴とする請求項2に記載のプログラムエラー統合プログラム。
  4. 同じ要因のエラーメッセージを前記第1エラー情報と前記第2エラー情報からそれぞれ検出する処理は、
    前記第2エラー情報と前記構文情報に基づいて、エラーの根拠となる根拠情報が前記第2エラー情報に含まれる各メッセージに付加された根拠情報付きエラー情報を生成し、
    同じ要因のエラーメッセージを前記根拠情報付きエラー情報と前記第1エラー情報からそれぞれ検出することを特徴とする請求項1、2又は3に記載のプログラムエラー統合プログラム。
  5. 前記根拠情報は、エラーの位置を示す出現箇所と構文情報の中でエラーの根拠となる根拠字句を含み、
    同じ要因のエラーメッセージを前記根拠情報付きエラー情報と前記第1エラー情報からそれぞれ検出する処理は、
    前記根拠情報付きエラー情報に含まれるメッセージを統合対象メッセージとして、統合対象メッセージに含まれる出現箇所に基づいて前記第1エラー情報からメッセージを抽出し、抽出したメッセージのメッセージテキストに、統合対象メッセージに含まれる根拠字句が含まれるか否かを判定することで、同じ要因のエラー情報を検出することを特徴とする請求項4に記載のプログラムエラー統合プログラム。
  6. コンピュータに、
    ユーザーソースコードを基に生成したエラー情報に含まれる2つのメッセージと、前記ユーザーソースコードを基に生成した構文情報に基づいて、前記2つのメッセージが同じ変数に対する同じ要因により生成されたか否かを判定し、
    前記2つのメッセージが同じ変数に対する同じ要因により生成されたと判定すると、
    前記2つのメッセージを統合した統合メッセージを生成する
    処理を実行させることを特徴とするプログラムエラー統合プログラム。
  7. ユーザーソースコードを基に第1エラー検出装置が生成した第1エラー情報、前記ユーザーソースコードを基に第2エラー検出装置が生成した第2エラー情報、及び前記ユーザーソースコードを基に前記第2エラー検出装置が生成した構文情報に基づいて、同じループに対する同じ要因のエラーメッセージを前記第1エラー情報と前記第2エラー情報からそれぞれ検出する検出部と、
    前記検出部により前記第1エラー情報から検出されたエラーメッセージ、及び前記第2エラー情報から検出されたエラーメッセージを基に統合エラーメッセージを生成する生成部と
    を有することを特徴とする情報処理装置。
  8. ユーザーソースコードを基に第1エラー検出装置が生成した第1エラー情報、前記ユーザーソースコードを基に第2エラー検出装置が生成した第2エラー情報、及び前記ユーザーソースコードを基に前記第2エラー検出装置が生成した構文情報に基づいて、同じ変数に対する同じ要因のエラーメッセージを前記第1エラー情報と前記第2エラー情報からそれぞれ検出する検出部と、
    前記検出部により前記第1エラー情報から検出されたエラーメッセージ、及び前記第2エラー情報から検出されたエラーメッセージを基に統合エラーメッセージを生成する生成部と
    を有することを特徴とする情報処理装置。
  9. ユーザーソースコードを基に生成したエラー情報に含まれる2つのメッセージと、前記ユーザーソースコードを基に生成した構文情報に基づいて、前記2つのメッセージが同じ変数に対する同じ要因により生成されたか否かを判定する判定部と、
    前記判定部により前記2つのメッセージが同じ変数に対する同じ要因により生成されたと判定されると、前記2つのメッセージを統合した統合メッセージを生成する生成部と
    を有することを特徴とする情報処理装置。
JP2019215004A 2019-11-28 2019-11-28 プログラムエラー統合プログラム及び情報処理装置 Pending JP2021086399A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019215004A JP2021086399A (ja) 2019-11-28 2019-11-28 プログラムエラー統合プログラム及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019215004A JP2021086399A (ja) 2019-11-28 2019-11-28 プログラムエラー統合プログラム及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2021086399A true JP2021086399A (ja) 2021-06-03

Family

ID=76087836

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019215004A Pending JP2021086399A (ja) 2019-11-28 2019-11-28 プログラムエラー統合プログラム及び情報処理装置

Country Status (1)

Country Link
JP (1) JP2021086399A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006087780A1 (ja) * 2005-02-17 2006-08-24 Fujitsu Limited 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
JP2012248050A (ja) * 2011-05-30 2012-12-13 Nec Commun Syst Ltd 静的解析支援装置、静的解析支援方法、及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006087780A1 (ja) * 2005-02-17 2006-08-24 Fujitsu Limited 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
JP2012248050A (ja) * 2011-05-30 2012-12-13 Nec Commun Syst Ltd 静的解析支援装置、静的解析支援方法、及びプログラム

Similar Documents

Publication Publication Date Title
US9898387B2 (en) Development tools for logging and analyzing software bugs
US8627296B1 (en) Unified unit and integration test with automatic mock creation
US20180267887A1 (en) Method and system for automatic generation of test script
CN110347598B (zh) 一种测试脚本生成方法、装置、服务器及存储介质
CN111090641B (zh) 数据处理方法及装置、电子设备、存储介质
JP6119535B2 (ja) トレース方法、処理プログラム、および情報処理装置
US20150006961A1 (en) Capturing trace information using annotated trace output
CN111752833B (zh) 一种软件质量体系准出方法、装置、服务器及存储介质
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
JP2015011372A (ja) デバッグ支援システム、方法、プログラム及び記録媒体
CN113268427B (zh) 一种针对二进制程序的崩溃分析方法及系统
CN110597704B (zh) 应用程序的压力测试方法、装置、服务器和介质
CN110058962A (zh) 确定虚拟机快照的一致性级别的方法、设备和计算机程序产品
CN115328796A (zh) 一种用于arm架构的软件漏洞辅助定位方法和系统
CN114020432A (zh) 任务异常处理方法、装置及任务异常处理系统
US11924481B2 (en) Automated workflows from media asset differentials
JP2021086399A (ja) プログラムエラー統合プログラム及び情報処理装置
US20110224939A1 (en) Integrated tool for persisting development environment test scenario information
US11960862B2 (en) Source code correction assistance apparatus and source code correction assistance method
US7415560B2 (en) Method of automatically monitoring computer system debugging routine
US11392371B2 (en) Identification of a partial code to be refactored within a source code
US20150161006A1 (en) Information processing apparatus and method for testing same
US8141039B2 (en) Method and system for consolidating machine readable code
CN111427902A (zh) 基于轻量型数据库的元数据管理方法、装置、设备及介质
JP2016126700A (ja) プログラム検証装置、プログラム検証方法及びプログラム検証プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220809

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20231114