JP2016091138A - ソースコード検証システム - Google Patents

ソースコード検証システム Download PDF

Info

Publication number
JP2016091138A
JP2016091138A JP2014222207A JP2014222207A JP2016091138A JP 2016091138 A JP2016091138 A JP 2016091138A JP 2014222207 A JP2014222207 A JP 2014222207A JP 2014222207 A JP2014222207 A JP 2014222207A JP 2016091138 A JP2016091138 A JP 2016091138A
Authority
JP
Japan
Prior art keywords
evaluation
variable
source code
data
evaluation score
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.)
Granted
Application number
JP2014222207A
Other languages
English (en)
Other versions
JP6416588B2 (ja
Inventor
正裕 松原
Masahiro Matsubara
正裕 松原
義男 山根
Yoshio Yamane
義男 山根
敦寛 大野
Atsuhiro Oono
敦寛 大野
守 根本
Mamoru Nemoto
守 根本
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems 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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2014222207A priority Critical patent/JP6416588B2/ja
Publication of JP2016091138A publication Critical patent/JP2016091138A/ja
Application granted granted Critical
Publication of JP6416588B2 publication Critical patent/JP6416588B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

【課題】本発明は、検証者に対して有用な情報を適切に提供することができるソースコード検証システムを提供することを目的とする。【解決手段】本発明は、プログラムに含まれる変数の依存関係に関する変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係を有する箇所を不具合要因の可能性のある箇所として検出する不具合要因検出手段と、前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段と、前記評価点を表示する評価点表示手段とを備えることを特徴とする。【選択図】図2

Description

本発明はソフトウェアのソースコードを検査する装置、ツールに関する。
情報制御システムでは、プログラムの処理の実行タイミングにより発生する不具合が存在することがある。不具合の例として、プログラムの1変数に対して、プログラムに並列または並行に実行される複数の実行単位(プロセス、スレッド、タスクなど)があり、それらの読み書きが重なるデータ競合がある。このような不具合は発見が難しく、発生しても再現性がないことで原因究明が難しい場合が多い。
このような処理のタイミングに依存した不具合を発見する方法の1つに、ソースコードの静的解析がある。解析によりプログラムに存在する不具合可能性を検出する。例えば異なる実行単位の実行パス上にある同一変数への書き込みを探し出すことでデータ競合の可能性を検出する。
しかしタイミング依存の不具合はデータ競合以外の原因でも発生するため、静的解析により検出できるタイミング依存の不具合は種類が限定されている。また静的解析により検出された不具合可能性は、必ずしも不具合を発生させず、逆に不具合でないもの(偽陽性)を多々検出することがある。これらの問題を解決するために、形式手法の1つであるモデル検査が適用されうる。モデル検査では、設計のモデル記述言語による表現にて抽象化が適切であれば偽陽性は発生しない。またプログラムの振る舞いを網羅的に検査するため、タイミングに依存した不具合も検出することができる。特許文献1では、モデル検査を用いて割込みに起因する不具合を検出している。
一方でモデル検査には、網羅的な検査を行うがための課題も存在する。それは計算量が大きくなることで、計算機のメモリ等のリソースが不足したり、計算時間が長大になり、検証が未完了となる問題である。この対策として、上記の抽象化や、検査範囲の絞込みなどの方法が取られる。特許文献2では、検査対象であるプログラムのソースコードにおける変数間の依存関係(変数依存関係)を解析することで、着目された変数に関連のあるコードを絞り込む。また変数依存関係を表示して、ユーザが検証モデルに変換するコードをさらに絞り込むための範囲指定を可能としている。
ただし検証範囲を絞り込む場合、プログラムを広く検証するにはプログラムを分割して複数の検証を実行する必要が生じる。この分割と複数の検証実行は、検証に要する労力と時間を増大させる。このため、限られた人手と時間の下では、不具合の可能性の高い箇所から優先的に検証を実施することが必要な場合が出てくる。特に再現性のない不具合が発見されその原因を探索している状況下では、プログラム全体を検証して不具合のないことを示す場合と異なり、まずは1つの不具合を早期に検出しその原因を解析できるようにすることが求められるため、検証対象に優先順位を付ける考え方は重要となる。よって、検証対象の箇所ごとの不具合の可能性が評価され、その評価に基いた検証対象の優先順位を示す情報、または検証者による優先順位の付与に利用できる情報が検証者に提供されると、その情報は有用である。
検証対象の箇所ごとの不具合の可能性を評価する技術として、特許文献3では、変数依存関係上である実行単位Aに属する変数aが、異なる実行単位Bに属する変数bと、異なる実行単位Cに属する変数cとの間に依存関係を持つときに、実行単位A,B,Cの実行優先順位を比較し、整合性を評価している。例えば、実行単位B,Cの優先度が異なる場合には整合性が無いと評価し、優先度が一致する場合には整合性があると評価する。
特開2011−191843号公報 特開2013−156786号公報 特開2013−254371号公報
しかし、タイミングに依存する不具合は、実行単位の実行優先順位に整合性がある場合でも発生しうる。このため、上記の従来技術では、実行単位の実行優先順位が同じ場合には不具合の可能性を検出することができず、検証者に対して有用な情報を適切に提供することができないという問題がある。
そこで、本発明は、検証者に対して有用な情報を適切に提供することができるソースコード検証システムを提供することを目的とする。
本発明は、プログラムに含まれる変数の依存関係に関する変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係を有する箇所を不具合要因の可能性のある箇所として検出する不具合要因検出手段と、前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段と、前記評価点を表示する評価点表示手段とを備えることを特徴とする。
本発明によれば、検証者に対して有用な情報を適切に提供することができる。
本発明の実施形態に係るシステム構成。 ソースコード検証システムの機能と関連するプログラムの構成。 ソースコード検証システムと関連するプログラムの処理フロー。 変数依存関係探索部の処理フロー。 サンプルコード。 サンプルコードの変数依存関係のグラフ。 サンプルコードの評価データ。 サンプルコードの評価結果の表示。 修正したサンプルコードの評価結果の表示。
以下、図面を用いて本発明の実施形態について説明を行う。
図1は、本実施形態に係るソースコード検証システムの構成図である。このソースコード検証システムは、ソフトウェアツールとして実現されている。各機能はソフトウェアとして実装されており、表示画面、主演算装置、主記憶装置(メインメモリ)、ハードディスク等の記憶媒体、キーボードやポインティングデバイス等の入力装置を備えるコンピュータ上で実行される。
ソースコード検証システムを実現するソフトウェアは、ソースコード評価プログラム120として、コンピュータ110のROM113に格納されており、CPU111により読み出されて実行される。コンピュータ110はソースコード評価プログラム120によって規定された処理を実行する。検査対象であるオブジェクトコードの元になるソースコードのファイルや、そのソースコードを元に作成された検証モデルのファイルは、コンピュータ110上のハードディスク114に格納されている。ソースコード評価プログラム120に対するユーザ操作は、キーボードなどの入力装置130から行うことができる。ソースコード評価プログラム120による出力は、ディスプレイなどの表示装置140への表示や、ハードディスク114へデータファイル生成として成されるが、図示しない外部コンピュータへのネットワークを介した出力、CD−ROMなどの外部記憶媒体へのデータファイル形式での書き込みによる出力であってもよい。また他のプログラムもソースコード評価プログラム120と同様に入力と出力し、操作される。
図2は、ROM113に格納されたプログラムの構成を示している。プログラムには、検証モデル生成プログラム210と、ソースコード評価プログラム120がある。
検証モデル生成プログラム210は、ソースコード200を入力とし、検証モデル240を出力する。検証モデル生成プログラム210は、コード解析部220、変数依存関係抽出部225、コード抽出部230、変換部235からなる。コード解析部220は、ソースコード220の変数依存関係を解析する。変数依存関係抽出部225は、コード解析部220から変数依存関係データを受け取り、ユーザが指定した変数について、変数依存関係を抽出する。コード抽出部230は、ソースコード200から、変数依存関係抽出部225により抽出された変数依存関係データに関係するコードを抽出する。変換部235は、コード抽出部230が抽出したコードを、所定の変換ルールに沿ってモデル記述言語に変換することで、検証モデル240を生成し、出力する。
ソースコード評価プログラム120は、入力部250、検出部260、評価点算出部270、評価データベース280、表示部290とからなる。入力部250は、変数依存関係抽出部225により抽出された変数依存関係データを入力として読み込む。検出部260は、入力部250により読み込まれた変数依存関係データに対して解析を行い、異なる実行単位にまたがる依存関係を不具合要因の可能性のある箇所として検出し、評価データベース280に記録する。評価点算出部270は、入力部250により読み込まれた変数依存関係データと、検出部260による不具合要因の可能性の検出結果とから、変数依存関係上の各変数について、すなわちプログラムの各箇所について不具合可能性の評価点を算出し、評価データベース280に記録する。表示部290は、評価点算出部270により算出された評価点を評価データベース280から取得し、表示装置290にて表示する。表示部290は、評価点を変数依存関係データと共に表示することもある。
図3は、検証モデル生成プログラム210とソースコード評価プログラム120とが実行する処理フローである。ステップ300で処理が開始される。このとき、評価データベース280は初期化される。ステップ310にてコード解析部220は、ソースコード200を解析して変数依存関係データを生成する。ステップ320にて変数依存関係抽出部225は、コード解析部220の解析した変数依存関係データから、ユーザが指定した変数に関連する変数依存関係データを抽出する。ステップ330にて入力部250は、変数依存関係抽出部225により抽出された変数依存関係データを入力として読み込む。ステップ340にて検出部260は、変数依存関係データに対して解析を行い、異なる実行単位にまたがる依存関係を検出し、評価データとして評価データベース280に記録する。ステップ350にて評価点算出部270は、変数依存関係上の各変数について不具合可能性の評価点を算出し、評価データとして評価データベース280に記録する。ステップ360にて表示部290は、評価点算出部270により算出された評価点を評価データベース280から取得し、表示装置290にて表示する。ステップ390で処理を終了する。
図4は、評価点算出部270によるステップ350の処理を詳細化したフローである。この処理は、ツリー形式に抽出された変数依存関係データの各ノードにおいて実行されるものであり、かつルートノードから下位ノードに向かって再帰的に実行される。ステップ400で処理が開始される。ステップ410からステップ450は、各下位ノードについて実行される。ステップ410では、各下位ノードに対して本フローの処理が実行される。ステップ420からステップ450は、1つの下位ノードが評価対象としている各変数について実行される。ステップ420では、1変数についての当該下位ノードにおける評価データが評価データベース280から取得される。この評価データはカテゴリ1とカテゴリ2に区別されている。カテゴリ2はデータ競合の可能性を示し、カテゴリ1はそれ以外の可能性を示す。カテゴリ2がデータ競合の可能性を示す理由は、変数ツリーの下位に同一の変数へのアクセスが出現していることを意味しているためである。
ステップ430では、ステップ420で対象とした変数が、現ノードにおいて評価対象とされているかを評価データベース280から判定する。当該変数に関する評価データが評価データベース280にない、すなわち評価対象とされておらず、かつ下位ノードでの当該変数の評価データがカテゴリ1であれば、ステップ440へ進む。それ以外、すなわち評価データがあり評価対象とされているか、または下位ノードでの評価データがカテゴリ2であれば、ステップ450へ進む。ステップ440では、当該変数に関する下位ノードでの評価データを、当該ノードのカテゴリ1の評価データとして評価データベース280に記録する。ステップ450では、当該変数に関する下位ノードでの評価データを、現ノードのカテゴリ2の評価データに追加する。さらに現ノードでの当該変数に関するカテゴリ1の評価データをクリアしてカテゴリ2に追加し、評価データベース280に記録する。全ての評価対象変数と下位ノードについて処理を実施した後、ステップ490にて本フローを終了する。
図4の処理フローのように、下位ノードにおける不具合要因の検出結果を、上位ノードで集計することにより、上位ノードにおける不具合リスク、コード抽出部230が抽出するコードに含まれる不具合リスクを評価することができる。
図5は検証対象となるサンプルプログラムのソースコードの一部を示している。本実施例では、ソースコードはC言語で記述されているものとする。ソースファイル510,520,530からなるプログラムの構成を以下に説明する。主処理は関数funcである。関数inputは割込みにより実行される設定となっており、レジスタ変数DI0に入力される値を変数aに代入する。レジスタ変数DI0の値はいつでも変化しうる。関数funcでは、変数aを2倍する処理を関数calc1,calc2で冗長に行い、2つの計算結果x1,x2を比較して、一致していれば計算結果を確定させて変数xに代入し、一致していなければエラー対処を関数err_handleで行なう。
図6は、図5のサンプルソースコードをコード解析部220が解析し、変数依存関係抽出部225が変数x(016行目)をルートノードとしてツリー形式に抽出した変数依存関係データをグラフ化した変数ツリー600である。変数依存関係データや変数ツリー600にて、ノードは変数を示しており、変数は記述位置や属する実行単位で区別されている。例えばx@016は、016行目の変数xを意味している。各変数が属する実行単位や関数は図には示されていないが、データには含まれる。変数ツリー600では、if文のような制御構文もノードとして扱っている。斜め線のついている変数ノードは、当該ノードが変数ツリーの他の箇所に既出であり(以下「既出ノード」を呼ぶ)、下位ノードを省略していることを意味している。矢印が依存関係を示しており、矢印の元が依存元つまり変数値に影響を与える方、矢印の先が依存先つまり影響を受ける方である。また実線の矢印は依存先と依存元の変数が同一の実行単位に含まれることを意味し、破線の矢印は異なる依存先と依存元の変数が異なる実行単位に属することを意味する。
検出部260はステップ340にて、変数ツリー600を探索し、破線の矢印で表現される依存関係を発見、抽出する。変数ツリー600では、a@205からa@104への依存関係と、a@205からa@109への依存関係が該当する。これらは異なる実行単位にまたがる依存関係であり、処理タイミングに依存する不具合要因の可能性のある箇所として認識される。
図7は、図5のサンプルソースコードに関する評価データベース280の内容を示している。評価データ700では、変数ツリー600のノードごと、すなわち記述位置(ここでは行で表現)で区別された変数ごとに、カテゴリ1とカテゴリ2それぞれの評価データが記録されている。「a(2)」は、変数aが評価対象として、不具合要因の可能性のある箇所が当該ノードから下位に2箇所存在していることを示している。この数値が評価点となる。なお図7では評価データが空のノードなど、一部データの図示を省略している。
なお、評価点は、上述のように不具合要因の可能性のある箇所の個数の値に限定されるものではなく、種々のものが考えられる。例えば、評価点は、不具合要因の可能性のある箇所の個数に対応させてA、B、C、…といったように不具合要因の可能性の程度を表すものであってもよい。この場合には、不具合要因の可能性のある箇所が1箇所であれば評価点をAとし、2箇所であれば評価点をBとするといった方法を採ることもでき、不具合要因の可能性のある箇所が1〜2箇所であれば評価点をAとし、3〜4箇所であれば評価点をBとするといったように、一つの評価点が所定の幅を有するものであってもよい。
検出部260が抽出した2箇所の依存関係は、a(104行目)とa(109行目)のカテゴリ1の欄に、「a(1)」として記録されている。つまり検出部260が抽出した依存関係は、依存先の変数に関するデータとして評価データベース280に記録される。ステップ340が終了した時点では、評価データ700に記録されたデータはこの2つのみである。その次に、評価点算出部270がステップ350にて、図4の処理フローを変数ツリー600と評価データ700を入力として実行する。x1@104は下位にa@104があり、a@104はカテゴリ1に「a(1)」の評価データがある。x1@104には変数aについての評価がないため、ステップ430からはステップ440に進み、評価データ700のカテゴリ1に「a(1)」が入る。同様にx1@016のカテゴリ1にも「a(1)」が入る。変数ツリー600にて、斜め線のついた変数ノードであるx1@104では、図4の処理は実施せず、評価データは空とする。これにより、x1@012も評価データが空になる。
x2@109の下位にはa@109があり、x2@109には変数aについての評価がないため、評価データ700のカテゴリ1に「a(1)」が入る。同様にx2@012、if@012のカテゴリ1にも「a(1)」が入る。x@016の下位にはx1@016とif@012がある。まずx1@016の評価データを取得すると、カテゴリ1に「a(1)」の評価データがあり、x@016には変数aについての評価がないため、カテゴリ1に「a(1)」が入る。次にif@012の評価データを取得すると、やはりカテゴリ1に「a(1)」の評価データがあるが、ここでx@016のカテゴリ1には既に変数aについての評価データが存在するため、ステップ430からはステップ450に進み、既に記録されたカテゴリ1の「a(1)」をクリアしつつ、if@012の「a(1)」と合算し、カテゴリ2に「a(2)」を記録する。以上でステップ350の処理は終了する。
図7で評価データ710は、評価データ700とは異なる形式での評価データの記録方法を示している。評価データ710では、検出部260が抽出した依存関係の依存先が記録される。ステップ440やステップ450でも、検出部260が抽出した情報を保持して記録がされる。このためx@016には、カテゴリ2の要因としてa@104,a@109が記録される。評価点は各カテゴリに記録された変数の数をカウントして付けられる。a@104,a@109はそれぞれカテゴリ1に自身を含んでいるため、不具合要因の存在箇所であることがわかる。評価データ710の形式では、不具合要因の重複は排除することができるため、既出ノードであるx1@104でも図4の処理を実施してよい。実施した場合、x1@012はカテゴリ1に「a@104」が入る。if@012ではカテゴリ1に「a@104」と「a@109」が入る。x@016にて、x1@016の「a@104」と、if@012の「a@104」が重複していることがステップ450にて判定され、片方だけがカテゴリ2に記録される。
図8は、表示部290によるステップ360での表示内容を示している。評価点テーブル800は、評価データ700または710の内容を集計したものである。x@016はカテゴリ2の評価点が2、a@104とa@109はカテゴリ1の評価点が1であることが示されている。なお評価点テーブル800は、変数ツリー600の各ノードのうち、下位ノードと評価点が異なるノードのみを表示している。プログラムの他の箇所や、x@016の依存先を変数依存関係のルートとして同様に評価点を算出し、評価点の高い順に評価点テーブル800と同様の表示を行なうことで、ユーザは検証対象に優先順位を付けることができる。またカテゴリ1,2と区別して評価点が表示されているため、ユーザは不具合要因がデータ競合なのかそれ以外なのかを認識することができ、検証対象を選定する際の参考情報とすることができる。例えばデータ競合について優先的に検証するという方針があるときは、カテゴリ2の数値が高い箇所を選べばよい。但し、評価点がカテゴリ1,2の数値を合算した値で表示されるものであってもよい。また、特定のカテゴリの優先度が高い場合には、そのカテゴリに関する評価点のみを表示するものであってもよい。
評価点テーブル800では変数ごとに評価点を表示したが、表示部290がソースコード200を入力として、変数の記述位置情報を利用して、変数が記述された箇所のコードを評価点と共に表示してもよい。
変数ツリー810は、変数ツリー600の各ノードに、評価データ700のカテゴリ1,2の数値を付与して表示したグラフである。各ノードに付記された数値のうち、左側がカテゴリ1、右側がカテゴリ2の数値を示している。このような表示により、ユーザは視覚的に変数ツリーと不具合要因の分布との関係を認識することができる。
検証モデル生成プログラム210のコード抽出部230に対し、ユーザは変数ツリー上で抽出範囲を指定するとしたとき、変数ツリー810のような表示は、検証対象の優先順位を含め、ユーザによる抽出範囲の検討をしやすくする。変数ツリーにて下位ノードを全て抽出すると、コード抽出量が膨大になる場合がある。このため途中で下位ノードの抽出を打ち切ることができれば、コード抽出量は抑えられ、検証モデルのサイズも小さくなる。変数ツリーの下位ノードを抽出する深さは、上位ノードの評価点に影響する。ユーザは段階的に下位ノードを抽出しながら、評価点を観察することで、下位ノードの抽出範囲を適切に選定することができる。
コード抽出部230は、評価データベース280から評価点を取得し、検証範囲を自動的に選定することもできる。例えば変数ツリー600のルートノードの各下位ノードについて、評価点の最も高いノードをルートとするサブツリーを用いてコードを抽出することで、検証対象を分割しつつ、不具合可能性の高い箇所を含む検証モデルを生成することができる。または、プログラムに記述されている変数について1つずつ変数ツリーを抽出させ、評価点を観察し、評価点が指定された閾値以上となる変数について、コード抽出と検証モデルへの変換を実行してもよい。
関数ツリー820は、変数ツリー810の各ノードを属する関数を単位として集約し、その関数をノードとして表現したものである。変数ツリー810と同様に評価データ700の評価点が関数ノードに付与されているが、1つの関数内でもっとも評価点の高い変数ノードの数値が付与されている。関数ツリー820は、変数ツリー810より表示が簡素化されるので、ユーザの認識がしやすい。ユーザは評価結果を詳細に把握したいときには変数ツリー810を、概要を把握したいときには関数ツリー820を表示させるといったように使い分ければよい。
なお図8に示されるような評価点の情報は、モデル検査だけでなく、ソフトウェアの検証手法全般での対象の優先順位付けや、不具合の可能性がある箇所の抽出に利用できる情報である。
ところで、図8では、プログラム中の変数依存関係を有する全ての箇所に対して評価点を表示するものであるが、これに限定されるものではない。例えば、評価点が0である点には評価点を表示しないものであってもよく、また、評価点が一定以上(例えば、2点以上)の箇所のみを表示するものであってもよい。さらには、複数の変数の中でも特に不具合を生じさせやすい特定の変数に関係する箇所のみを表示するものであってもよく、例えば図8の例では、カテゴリー1に関する評価点のみを表示することが考えられる。 図9は、ユーザが図8の評価結果や、さらにその評価結果から検証モデル240を生成させて検証実行した結果から、不具合要因を把握してソースコード510を修正したソースコード910、およびソースコード910,520,530について図3の処理を実行し、変数ツリー810と同様に評価結果を表示させた変数ツリー920を示している。ソースコード910では、関数inputを割込みで実行する設定をやめ、関数funcの冒頭で呼び出すように修正している。これにより、変数aの値が関数funcの以降の実行中に変化することがなくなる。この修正により変数ツリー920では、全ての評価点が0となり、ユーザは不具合要因が除去されたことを認識することができる。
以上のように、本実施形態に係るソースコード検証システムによれば、タイミングに依存する不具合を良好に検出することができ、検証者に対して有用な情報を適切に提供することができる。具体的には、検証対象の箇所ごとの不具合の可能性を評価し、その評価に基いた評価点を検証対象の箇所ごとに付与し、その評価点が表示されるため、検証者は、検証対象の優先順位を容易に把握することができる。従って、検証者は前記評価点から、プログラムの各箇所について検証実施の優先順位を決めることができ、限られた人手と時間の中で費用対効果の高い検証を実施することができる。
120…ソースコード評価プログラム、140…表示装置、200…ソースコード、210…検証モデル生成プログラム、220…コード解析部、225…変数依存関係抽出部、230…コード抽出部、235…変換部、240…検証モデル、250…入力部、260…検出部、270…評価点算出部、280…評価データベース、290…表示部

Claims (6)

  1. プログラムに含まれる変数の依存関係に関する変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係を有する箇所を不具合要因の可能性のある箇所として検出する不具合要因検出手段と、
    前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段と、
    前記評価点を表示する評価点表示手段とを備えることを特徴とする、ソースコード検証システム。
  2. 前記評価点算出手段に入力される前記変数依存関係データはツリー形式であり、前記評価点算出手段は前記不具合要因検出手段による検出結果を前記変数依存関係データの上位ノードで集計することにより前記評価点を算出することを特徴とする、請求項1に記載のソースコード検証システム。
  3. 前記評価点算出手段は、データ競合の可能性を示す評価点と、それ以外の可能性を示す評価点とを区別して算出することを特徴とする、請求項1に記載のソースコード検証システム。
  4. 前記評価点表示手段は、前記評価点が付けられたプログラムの箇所と前記評価点とを対応付けて表示し、かつ前記評価点の高低順に表示することを特徴とする、請求項1に記載のソースコード検証システム。
  5. 前記評価点表示手段は、前記変数依存関係データのグラフにおいて、前記評価点が付けられた変数と前記評価点とを対応付けて表示することを特徴とする、請求項1に記載のソースコード検証システム。
  6. プログラムのソースコードから変数依存関係データを解析するコード解析部と、
    前記変数依存関係データからユーザ指定の変数に関係する部分を抽出する変数依存関係抽出部と、
    前記ソースコードから前記抽出された依存関係データに対応するコードを抽出するコード抽出部と、
    前記変数依存関係データに基づいて、異なる実行単位にまたがる変数依存関係から不具合要因の可能性のある箇所を検出する不具合要因検出手段と、
    前記変数依存関係に基づいて、前記箇所に関する不具合可能性の評価点を算出する評価点算出手段とを備え、
    前記コード抽出部は、前記評価点に基づき、コードの抽出範囲を選定することを特徴とする、ソースコード検証システム。
JP2014222207A 2014-10-31 2014-10-31 ソースコード検証システム Active JP6416588B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014222207A JP6416588B2 (ja) 2014-10-31 2014-10-31 ソースコード検証システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014222207A JP6416588B2 (ja) 2014-10-31 2014-10-31 ソースコード検証システム

Publications (2)

Publication Number Publication Date
JP2016091138A true JP2016091138A (ja) 2016-05-23
JP6416588B2 JP6416588B2 (ja) 2018-10-31

Family

ID=56016872

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014222207A Active JP6416588B2 (ja) 2014-10-31 2014-10-31 ソースコード検証システム

Country Status (1)

Country Link
JP (1) JP6416588B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019215607A (ja) * 2018-06-11 2019-12-19 三菱電機株式会社 違反依存検出装置および違反依存検出プログラム
WO2022091651A1 (ja) * 2020-10-28 2022-05-05 日立Astemo株式会社 演算装置及び検査方法
JP7404839B2 (ja) 2018-12-21 2023-12-26 富士通株式会社 ソフトウェアプログラム不良位置の識別

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2013254371A (ja) * 2012-06-07 2013-12-19 Toyota Motor Corp ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラム
WO2014141352A1 (ja) * 2013-03-11 2014-09-18 株式会社 日立製作所 システム制御装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2013254371A (ja) * 2012-06-07 2013-12-19 Toyota Motor Corp ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラム
WO2014141352A1 (ja) * 2013-03-11 2014-09-18 株式会社 日立製作所 システム制御装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YAN CHEN ET AL.: "A Race Condition Graph for Concurrent Program Behavior", PROCEEDINGS OF 2008 3RD INTERNATIONAL CONFERENCE ON INTELLIGENT SYSTEM AND KNOWLEDGE ENGINEERING, JPN6018020538, 30 December 2008 (2008-12-30), pages 662 - 667, ISSN: 0003811056 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019215607A (ja) * 2018-06-11 2019-12-19 三菱電機株式会社 違反依存検出装置および違反依存検出プログラム
JP7050587B2 (ja) 2018-06-11 2022-04-08 三菱電機株式会社 違反依存検出装置および違反依存検出プログラム
JP7404839B2 (ja) 2018-12-21 2023-12-26 富士通株式会社 ソフトウェアプログラム不良位置の識別
WO2022091651A1 (ja) * 2020-10-28 2022-05-05 日立Astemo株式会社 演算装置及び検査方法
JP7454700B2 (ja) 2020-10-28 2024-03-22 日立Astemo株式会社 演算装置及び検査方法

Also Published As

Publication number Publication date
JP6416588B2 (ja) 2018-10-31

Similar Documents

Publication Publication Date Title
US8397104B2 (en) Creation of test plans
Alrubaye et al. On the use of information retrieval to automate the detection of third-party java library migration at the method level
US20140033174A1 (en) Software bug predicting
US10162739B2 (en) Test case generation system and recording medium wherein test case is recorded
US8006138B2 (en) Software quality assessment based on semantic similarities
CN104090798A (zh) 动静态结合的中断驱动程序数据竞争检测方法
US20120185669A1 (en) Program inspection method and non-transitory, computer readable storage medium storing inspection program
JP6245006B2 (ja) テストケース生成装置、方法、及びプログラム
JP6416588B2 (ja) ソースコード検証システム
Lavalle et al. An approach to automatically detect and visualize bias in data analytics
CN112214768A (zh) 一种恶意进程的检测方法及装置
Muthusamy et al. Effectiveness of test case prioritization techniques based on regression testing
Chakraborty et al. Entropy guided spectrum based bug localization using statistical language model
JP2020135171A (ja) 機械学習プログラム検証装置および機械学習プログラム検証方法
JP2020067697A (ja) デッドコード解析プログラム、デッドコード解析方法及びデッドコード解析装置
JP2012181666A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Ngo et al. Ranking warnings of static analysis tools using representation learning
JP7190246B2 (ja) ソフトウェア不具合予測装置
JP2019003333A (ja) バグ混入確率計算プログラム及びバグ混入確率計算方法
JP2013077124A (ja) ソフトウェアテストケース生成装置
JP2017224185A (ja) バグ混入確率計算プログラム及びバグ混入確率計算方法
JP7331681B2 (ja) テスト実行プログラム、テスト実行方法、およびテスト実行装置
CN110309054B (zh) 代码有效性测试方法、计算设备及存储介质
KR102217092B1 (ko) 애플리케이션의 품질 정보 제공 방법 및 장치
JP2014059805A (ja) モデルベースの制御装置用のテストケース生成装置およびテストケース生成方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170117

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170825

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180711

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181004

R150 Certificate of patent or registration of utility model

Ref document number: 6416588

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