JP2003316615A - 演算順序チェック装置およびその方法 - Google Patents

演算順序チェック装置およびその方法

Info

Publication number
JP2003316615A
JP2003316615A JP2002126515A JP2002126515A JP2003316615A JP 2003316615 A JP2003316615 A JP 2003316615A JP 2002126515 A JP2002126515 A JP 2002126515A JP 2002126515 A JP2002126515 A JP 2002126515A JP 2003316615 A JP2003316615 A JP 2003316615A
Authority
JP
Japan
Prior art keywords
function
operation order
order
variable
global 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.)
Pending
Application number
JP2002126515A
Other languages
English (en)
Inventor
Mitsuhiko Kikuchi
光彦 菊池
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.)
Nissan Motor Co Ltd
Original Assignee
Nissan Motor Co 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 Nissan Motor Co Ltd filed Critical Nissan Motor Co Ltd
Priority to JP2002126515A priority Critical patent/JP2003316615A/ja
Publication of JP2003316615A publication Critical patent/JP2003316615A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 プログラムの関数の演算順序が問題を起こす
可能性のある箇所を容易に発見可能とする。 【解決手段】 変数抽出部2でプログラムの各関数が書
き込みまたは読み込むグローバル変数を抽出し、この変
数ごとに関数抽出部3でその変数を書き込みまたは読み
込む関数を抽出する。処理判別部4は、抽出した関数が
上記変数を読み込むのか書き込むのかを判別する。演算
順序識別部5は、抽出した関数のプログラム中の演算順
序を識別し、演算順序チェック部6では、処理判別部4
の結果にしたがって関数に大小による関係付けを行い、
演算順序結果と比較して問題を起こす可能性のある箇所
を抽出する。この比較結果は表示部7に表示される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラム中の関
数がその演算順序で問題を起こす可能性のある箇所を発
見する演算順序チェック装置およびその方法に関する。
【0002】
【従来の技術】電子制御装置では、これに内蔵するプロ
グラムが複数のモジュールから組み立てられて、モジュ
ールが周期的に実行されることがよく行われる。このモ
ジュールの周期的な実行は、ワンチップ・マイクロコン
ピュータに内蔵してあるタイマ、あるいは外付けしたタ
イマのクロック信号を利用して周期的に割り込みを発生
させ、その割り込みをトリガとしてモジュールを起動さ
せるようにして行なわれている。この場合、プログラム
の実行にリアルタイム・オペレーティング・システムを
用いるものでは、オペレーティング・システムが上記周
期時間を管理するとともに、周期的にモジュールを実行
させるようになっている。
【0003】
【発明が解決しようとする課題】上記各モジュールは、
複数のサブモジュールから成り立っていることが多いの
で、モジュールの実行では多くのサブモジュールが周期
的に順を追って実行される。この場合、サブモジュール
の演算順序をどうプログラミングするかによっては、以
下の問題が生じる。
【0004】すなわち、車両におけるテールランプの点
灯制御とその球切れの検出を行う電子制御装置を例に挙
げれば、図9に示すように、ドライバの手動によるスイ
ッチ101の操作に応じてスイッチ端子102がON
(Hレベル)またはOFF(Lレベル)の値をとる。こ
の値は、マイクロコンピュータ103へ入力される。マ
イクロコンピュータ103は、その入力されたスイッチ
端子102の値に応じて、テールランプ105制御用の
トランジスタ106のベースに接続された制御端子10
4をON(Hレベル)状態あるいはOFF(Lレベル)
状態とする。
【0005】すなわち、ドライバがテールランプ105
を点灯しようとスイッチ101をON操作すると、制御
端子104がON状態となってトランジスタ106をO
Nさせ、テールランプ105へ電流を流すことによりこ
れを点灯する。スイッチ101をOFF操作すれば、制
御端子104がOFF状態となり、トランジスタ106
をOFFとしてテールランプ105へ電流が流れず、テ
ールランプ105は消灯状態となる。
【0006】一方、マイクロコンピュータ103は、テ
ールランプ105とトランジスタ106との間に接続さ
れたモニタ端子107をモニタしており、テールランプ
105が点灯していればOFF(Lレベル)を検出し、
テールランプ105が点灯していなければON(Hレベ
ル)を検出する。したがって、テールランプ105が球
切れしていない状態では、スイッチ端子102がONの
ときは、制御端子104がONレベルで、モニタ端子1
07がOFFレベルとなる。これに対し、テールランプ
105が球切れしている状態では、スイッチ端子102
がONのときは、制御端子104がONレベルで、モニ
タ端子107がONレベルとなる。
【0007】上記モニタ端子の信号の検出結果に応じ
て、マイクロコンピュータ103は、前者の状態では警
告灯端子108をOFF(Lレベル)とすることにより
警告灯トランジスタ109をOFF状態に保つので、警
告灯110を点灯させることはない。これに対し、後者
の状態では、警告灯端子108をON(Hレベル)にす
ることにより警告灯トランジスタ109をONさせ、警
告灯110を点灯する。
【0008】図10は、上記制御を実現するためのモジ
ュールの構成例を、変数および関数との関係で示す。こ
こでは、上記制御を実行するモジュールは、3つのサブ
モジュール(関数)から実現されるように構成されてい
る。すなわち、スイッチ端子102をマイクロコンピュ
ータ103の入力ポート変数Pに割り付け、この入力ポ
ート変数Pの値を関数Aで読み込み、グローバル変数X
に保存する。また、モニタ端子107をマイクロコンピ
ュータ103の入力ポート変数Qに割り付け、この入力
ポート変数Qの値を関数Bで読み込み、グローバル変数
Yに保存する。
【0009】関数Cはグローバル変数Xの値を読み込
み、制御端子104に割り当てた出力ポート変数Sへそ
の値を書き込むことにより、スイッチ端子102がON
であれば制御端子104をONレベルとしてテールラン
プ105を点灯させ、スイッチ端子102がOFFであ
れば逆にテールランプ105を消灯させる。また関数C
は、グローバル変数Yの値をも読み込んでテールランプ
105の球切れの判定を行い、警告灯端子108に割り
付けた出力ポート変数Rへその値を書き込むことによ
り、判定の結果が球切れであれば警告灯109を点灯さ
せ、球切れしていなければ警告灯を非点灯とする。
【0010】ここで、上記サブモジュールの演算順序
が、たとえば図11に示すように関数A→関数C→関数
Bといった順となるようにプログラミングされたとす
る。なお、これらの関数は、上記順序で周期的な割り込
みごとに実行される。この場合、周期t−3、t−2、
t−1(ただし、周期t−3、t−2は、周期t−1よ
り前の周期であるが、図11では省略してある)のとき
は、スイッチ101がOFFであったとすると、周期t
−1におけるグローバル変数Xの値はOFFである。ま
た、このときテールランプ105の球切れが生じていな
ければ、グローバル変数Yの値はONである。
【0011】上記演算にあっては、まず関数Aがスイッ
チ端子102に対応する入力ポート変数Pを読み込んで
グローバルグローバル変数Xとして保存し、次に関数C
がグローバル変数X、Yを読み込み、その後で関数Bが
入力ポート変数Qを読み込んでグローバルグローバル変
数Yとして保存するといった順序で関数が実行される。
このため、周期t−1と周期tとの間でスイッチ101
がOFFからONに切り替えられた場合、周期tに関数
Cが読み込むグローバル変数X、Yの値は、グローバル
変数XではOFFからONに変わっているが、グローバ
ル変数Yでは関数Bで読み込んだ入力ポート変数Qが周
期t−1のときにおける値のままでONであり、OFF
になっていない。
【0012】したがって、周期tにおいて、関数Cは、
スイッチ101がONでテールランプ105が点灯して
いるにもかかわらず、テールランプ105が点灯してい
ないと誤判断する。この結果、テールランプ105が球
切れしていないにもかかわらず、警告灯110を点灯さ
せてしまうといった不具合が生じる。これに対し、上記
関数の演算順序が上記の順序と異なり、関数A→関数B
→関数Cの順でプログラミングされていれば、周期tに
おいて関数Cは、グローバル変数XがONであり、かつ
グローバル変数YがOFFであると認識するので、上記
のような誤判断をすることはない。
【0013】以上の説明から明らかなように、関数の演
算順序によっては不具合が発生する場合があり得る。そ
こで、プログラムの開発者は、問題が生じるおそれのあ
る演算順序で作成してしまったプログラムの不具合箇所
があるか否かを確かめなければならず、従来は電子制御
装置を試作して実験しながら関数の演算順序をチェック
していた。このため、演算順序が問題が生じない順序か
ら逆転している可能性のある箇所を発見するには、非常
な困難を伴い、多数の工数を必要としていた。したがっ
て本発明は、演算順序が逆転する可能性のある箇所を自
動的に抽出可能な演算順序チェック装置およびその方法
を提供することを目的とする。
【0014】
【課題を解決するための手段】このため、本発明では、
プログラム中の各関数が書き込み処理または読み込み処
理を行うグローバル変数を抽出し、このグローバル変数
ごとにその書き込み処理または読み込み処理を行う関数
を抽出して、これらが書き込み処理または読み込み処理
のいずれを行うのかを判別するものとし、この判別結果
と抽出した関数のプログラムにおける演算順序とに基づ
いて演算順序のチェックを行うものとした。
【0015】
【発明の効果】本発明は、抽出した関数が書き込み処理
するのか読みとり処理をするのかを判別した結果とプロ
グラム中の当該関数の演算順序とを比較してチェックを
行うようにしたので、プログラム中、演算順序が逆転し
ている可能性のある箇所を自動的に抽出することが可能
となる。
【0016】
【発明の実施の形態】以下、本発明の実施の形態につい
て説明する。図1は、実施の形態に係る演算順序チェッ
ク装置の構成を示すブロック図である。演算順序チェッ
ク装置1は、グローバル変数を抽出可能な変数抽出部2
と、関数を抽出可能な関数抽出部3と、関数の種類を判
別可能な処理判別部4と、関数の演算順序を識別可能な
演算順序識別部5と、演算順序のチェックが可能な演算
順序チェック部6と、演算順序のチェック結果を表示可
能な表示部7とを備えている。
【0017】変数抽出部2は、プログラムの複数の関数
のそれぞれが書き込み処理または読み込み処理を行うグ
ローバル変数を抽出可能である。関数抽出部3は、変数
抽出部2で抽出されたグローバル変数をもとに、グロー
バル変数ごとにこれらのグローバル変数を書き込み処理
または読み込み処理を行う関数を抽出する。処理判別部
4は、関数抽出部3で抽出した関数をもとに、グローバ
ル変数ごとにそれらの関数がグローバル変数の書き込み
処理をするのか、読み込み処理をするのかを判別する。
【0018】演算順序識別部5は、関数抽出部3で抽出
した関数をもとに、それらの関数の演算順序を識別す
る。この識別にあたっては、プログラム中における関数
が記述された行数を参照して演算順序を識別する。演算
順序チェック部6は、処理判別部4で得た判別結果と演
算順序識別部5で得た演算順序とを比較して演算順序の
チェックを行う。
【0019】この演算順序のチェックにおいては、まず
関数抽出部3で抽出した関数につき変数ごとに処理判別
部4で判別した書き込み処理を行う関数か読み込み処理
を行う関数かに応じて、書き込み処理を行う関数が読み
込み処理を行う関数よりも小さくなるような大小による
関係付けを行う一方、演算順序識別部5で得た演算順序
に基づき演算順序が後になるにしたがって大きくなる数
値を各関数に付与する。続いて、上記関数の大小関係と
上記関数に付与した数値とを比較して、演算順序に問題
のある箇所を抽出する。表示部7は、上記チェック結果
をその画面に表示可能である。
【0020】次に、上記演算順序チェック装置1で解析
される対象のプログラムとして、図2に示すソースリス
トを用いて説明する。このソースリストは、先の図9に
示したテールランプ制御の電子制御装置にかかるもの
で、C言語で作成してある。周期的に実行する一連のモ
ジュールとしては、関数A(図2中、第13行目から第
16行目で定義されたFunc_A)、関数B(同図
中、第18行目から第21行目で定義されたFunc_
B)、および関数C(同図中、第23行目から第42行
目で定義されたFunc_C)の3つの関数からなって
いる。
【0021】図2の第1行目から第4行目では、マイク
ロコンピュータの入出力ポートに接続した各種端子の入
出力ポートのアドレスを定義している。すなわち、スイ
ッチ端子の入力ポートのアドレスは0x0100に、モ
ニタ端子の入力ポートのアドレスは0x0101に、警
告灯端子の出力ポートのアドレスは0x0102に、そ
して制御端子の出力ポートのアドレスは0x0103
に、それぞれ定義してある。
【0022】第6行目から第7行目では、このモジュー
ルの関数で用いるグローバル変数X、Yを定義してい
る。第8行目から第11行目では、上記各種の端子を変
数のように扱うべく別名を割り当てている。すなわち、
スイッチ端子を変数Pに、モニタ端子を変数Qに、警告
灯端子を変数Rに、また制御端子を変数Sにそれぞれ割
り当てている。
【0023】第13行目から第16行目では、関数Aを
定義している。すなわち、第15行目にあるように関数
Aの内部ではスイッチ端子の状態に対応する変数Pをグ
ローバル変数Xに保存するように定義している。また、
第18行目から第21行目では、関数Bを定義してい
る。すなわち、第20行目にあるように関数Bの内部で
はモニタ端子の状態に対応する変数Qをグローバル変数
Yに保存するように定義している。
【0024】第23行目から第42行目では、関数Cを
定義している。すなわち、関数Cでは、第25行目にあ
るようにグローバル変数Xを読み込みこれがONである
か否かを判定し、この判定結果がONであれば第27行
目にあるように変数SにONと書き込んでテールランプ
を点灯させる。一方、この判定結果がOFFであれば、
第40行目にあるように変数SにOFFと書き込むこと
によりテールランプを消灯する。
【0025】また、第28行目にあるようにグローバル
変数YがOFFであるか否かを判定して、この判定結果
がOFFであれば第30行目にあるように変数RにON
と書き込んで警告灯を点灯する。一方、この判定結果が
ONであれば第34行目にあるように変数RにOFFと
書き込むことにより警告灯をOFFにする。なお、第4
6行目から第48行目には、関数の演算の実行順序を関
数A、関数C、関数Bの順序とするように定義してあ
る。
【0026】次に、上記プログラムのソースリストを解
析して演算順序のチェックを行う処理を図3のフローチ
ャートにより説明する。ステップ101では、変数抽出
部2が、ソースリストを読み込んで、関数ごとに、各変
数が書き込み処理、あるいは読み込み処理を行うグロー
バル変数を抽出して、その抽出結果を出力する。
【0027】より詳細には、図2のC言語のソースリス
トの第20行目における代入式の右辺にあるグローバル
変数を“読み込み”として、“関数Bはグローバル変数
Qを読み込む”と処理する。同様に、左辺にあるグロー
バル変数を“書き込み”として、“関数Bはグローバル
変数Yに書き込む”と処理する。また、C言語の場合に
は、図2のソースリストの第28行目のような条件文中
のグローバル変数も“読み込み”として“関数Cはグロ
ーバル関数Yを読み込む”と処理する。
【0028】ステップ102では、上記変数の抽出結果
に基づき、関数別のグローバル変数アクセス表を得る。
このグローバル変数アクセス表は、図4に示すように関
数A、関数B、関数Cごとに書き込み処理される変数と
読み込み処理される変数とを管理するテーブルとして作
成する。
【0029】すなわち、関数Aの書き込み変数の欄には
グローバル変数Xが、また関数Aの読み込み変数の欄に
はグローバル変数Pがそれぞれ記録される。一方、関数
Bの書き込み欄にはグローバル変数Yが、また関数Bの
読み込み変数の欄にはグローバル変数Qがそれぞれ記録
される。さらに、関数Cの書き込み変数の欄には2つの
グローバル変数R、Sが、また関数Cの読み込み変数の
欄には2つのグローバル変数X、Yがそれぞれ記録され
る。
【0030】ステップ103では、関数抽出部3が、図
4のテーブルを読み込み、グローバル変数ごとにその変
数の書き込み処理する関数と読み込み処理する関数とを
検索する。次いで、処理判別部4がその検索した関数が
書き込み処理をする関数であるのか、あるいは読み込み
処理をする関数であるのかを判別する。たとえば、上述
のグローバル変数Qについて説明すれば、図4のテーブ
ルからグローバル変数Qを読み込む関数として関数Bが
検索される。同様に、図4のテーブルからグローバル変
数Yについては、グローバル変数Yに対して値を書き込
む関数として関数Bが、またグローバル変数Yの値を読
み込む関数として関数Cが検出されるといった具合であ
る。
【0031】ステップ104では、上記ステップ103
で得た判別結果に基づき、グローバル変数ごとにその変
数に書き込み処理している関数と読み込み処理をしてい
る関数とを管理するテーブルをアクセス表として作成す
る。このテーブルは、図5に示すように、グローバル変
数Pについては読み込み関数として関数Aを、グローバ
ル変数Qについては読み込み関数として関数Bをそれぞ
れ記録する。さらにグローバル変数Xについては書き込
み関数として関数Aを、また読み込み関数として関数C
を記録し、グローバル変数Yについては読み込み関数と
して関数Cを、また書き込み関数として関数Bをそれぞ
れ記録する。また、グローバル変数Rおよびグローバル
変数Sについては、いずれも書き込み関数として関数C
を記録する。
【0032】ステップ105では、演算順序チェック部
6が、まず図5のアクセス表をもとに、複数の関数で共
有しているグローバル変数を検索する。ここで、上記
「複数の関数で共有しているグローバル変数」とは、関
数からの書き込み、および読み込みの両方に関係があ
り、かつそれらの関数が異なっているグローバル変数を
意味する。図5のアクセス表では、グローバル変数Xと
グローバル変数Yに、書き込み関数と読み込み関数の両
方の関係があるので、これらのグローバル変数X、Yが
共有グローバル変数として処理される。
【0033】ステップ106では、ステップ105で得
た処理結果に基づき、データの流れに着目した関数の演
算順序表を作成する。ここでは、上記共有グローバル変
数ごとに、それらの共有グローバル変数に値を書き込む
関数を“先”、共有グローバル変数の値を読み込む関数
を“後”として演算順序を求める。すなわち、ここで
は、関数の大小による関係付けが、“先”を小、“後”
を大とする関係となるように設定するわけである。そし
て、このようにして求めた演算順序を、「データの流れ
に着目した関数の演算順序」と呼ぶことにする。
【0034】この演算順序表は、図6に示すように、先
に演算すべき関数と後に演算すべき関数の順序関係を表
わすテーブルとして記憶される。すなわち、共有グロー
バル変数Xに着目すると、その値を書き込む関数Aが
“先”の欄に、またその値を読み込む関数Cが“後”の
欄に記述される。一方、共有グローバル変数Yに着目す
ると、その値を書き込む関数Bが“先”の欄に、またそ
の値を読み込む関数Cが“後”の欄に記述される。
【0035】この先後関係は、2つの関数間の相対的な
順序関係を表わしており、1番目、2番目といった絶対
的な順序関係を表わすものではない。したがって、図6
の演算順序表の場合、関数Aと関数Cとの2つの関数間
では、関数Aを関数Cより先に演算すべきであるという
情報を表わしているものの、関数Aが1番目ということ
を表わしているわけではない。同様に、関数Bと関数C
との2つの関数間では、関数Bを関数Cより先に演算す
べきであるという情報だけを表わしている。ここでは、
関数Aと関数Bの演算順序については、一切触れていな
い。
【0036】一方、ステップ107では、演算順序識別
部5が、ソースリストから周期的に実行されるモジュー
ルを構成する一連の関数の演算の実行順序を抽出し、そ
の抽出結果を出力する。すなわち、図2のソースリスト
の第46行目から第48行目に、関数A、関数C、関数
Bを実行順に記載してあるので、各関数の間ではそれが
記載された行の行番号を読みとることにより、演算の実
行順序を抽出することができる。
【0037】ステップ108では、ステップ107で抽
出した結果に基づき、図7に示すように、関数A、B、
Cの実行順序をそれぞれ1、3、2とするテーブルを作
成する。このテーブルは、ステップ106で求めた図6
の関数間の相対順序関係とは異なり、関数Aの実行順序
は1番目、関数Cの実行順序は2番目、関数Bの実行順
序は3番目と絶対的な順序で記録される。
【0038】ステップ109では、演算順序チェック部
6が図6の演算順序表と図7の演算順序のテーブルとを
比較して、異なる順序関係となっている箇所を抽出す
る。ここでは、図6の演算順序表にあっては関数Aが関
数Cより先に、また関数Bが関数Cより先に実行される
と記述されているのに対し、図7のテーブルにあっては
1番目に実行される関数が関数Aで、2番目に実行され
る関数が関数Cで、3番目に実行されるのが関数Bと記
述されていることから、これらの2つのテーブルを比較
すると、関数Bと関数Cの順序が異なることが抽出され
ることになる。
【0039】すなわち、図6の演算順序表の関数に図7
のテーブルの演算順序を代入すると、 1(=関数Aの演算順序)<2(=関数Cの演算順序) 3(=関数Bの演算順序)<2(=関数Cの演算順序) となる。この場合、後者の式から関数Bの演算順序と関
数Cの演算順序とが逆転している可能性があることが分
かり、これらを異なる順序関係となっている箇所として
抽出する。
【0040】ステップ110では、ステップ109で得
たチェック結果を演算順序チェック部6が表示手段とし
ての表示部7へ出力し、表示部7の画面にそのチェック
結果を表示する。この表示部7への表示例を図8に示
す。この表示例をみることにより、共有グローバル変数
Yについての関数の実行順序について関数Cより関数B
が先になっているのに対し、ソースリストの実行順序で
は関数Bより関数Cが先になっており、関数Bと関すC
との間で順序関係が異なっていることが分かる。
【0041】本実施の形態では、上記フローにおけるス
テップ101が発明の変数抽出手段を構成し、ステップ
102、103が関数抽出手段を、ステップ104が処
理判別手段を構成している。また、ステップ107が演
算順序識別手段を構成し、ステップ105、106、1
08および109が演算順序チェック手段を構成してい
る。
【0042】以上のように、本実施の形態では、変数と
この変数の読み込み処理、書き込み処理を実行する関数
とを抽出して、プログラム中の当該関数の演算順序とを
比較してチェックを行うようにしたので、プログラム
中、演算順序が逆転している可能性のある箇所を自動的
に抽出することが可能となる。そして、このチェック結
果を表示部7へ表示すれば、開発者が関数Bと関数Cと
の実行順序について再調査が必要であることを容易かつ
短時間に認識することができ、チェックの作業工数が大
幅に低減し、かつ再調査が必要な箇所の見落としを防止
することができる。
【0043】また、上記演算順序のチェックにあたって
は、処理判別部4で判別した書き込み処理する関数と読
み込み処理する関数とを、書き込み処理を行う関数<読
み込み処理を行う関数、として大小による関係付けを行
い、演算順序識別部5で識別した関数の演算順序に応じ
て関数ごとに大小の数値を付与して、この数値と大小関
係を比較するようにしたので、演算順序に逆転の可能性
がある箇所の抽出を、簡易な方法で実現することが可能
となる。
【0044】そして演算順序識別部5では、関数がプロ
グラム中に記述されている行番号からその関数の演算順
序を識別するようにしたので、識別が簡単である。
【図面の簡単な説明】
【図1】本発明の実施の形態を示すブロック図である。
【図2】プログラムのソースリスト例を示す図である。
【図3】実施の形態における解析の流れを示すフローチ
ャートである。
【図4】関数ごとの書き込み変数と読み込み変数を表わ
したテーブルを示す図である。
【図5】グローバル変数ごとに書き込み関数と読み込み
関数とを表わしたテーブルを示す図である。
【図6】データの流れに着目した関数の演算順序を示す
図である。
【図7】関数ごとに実行順序の値を記述したテーブルを
示す図である。
【図8】関数の実行順序の表示部への表示例を示す図で
ある。
【図9】テールランプの制御装置の構成を示す図であ
る。
【図10】制御モジュール例を示す図である。
【図11】関数の演算順序による不具合を示す説明図で
ある。
【符号の説明】
1 演算順序チェック装置 2 変数抽出部 3 関数抽出部 4 処理判別部 5 演算順序識別部 6 演算順序チェック部 7 表示部

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 複数の関数を有するプログラムから、前
    記各関数が書き込み処理または読み込み処理を行うグロ
    ーバル変数を抽出する変数抽出手段と、該変数抽出手段
    によって抽出したグローバル変数ごとに、該グローバル
    変数の書き込み処理または読み込み処理を行う関数を抽
    出する関数抽出手段と、該関数抽出手段により抽出した
    関数が、前記グローバル変数を書き込み処理するのか、
    あるいは前記グローバル変数を読み込み処理するのかを
    判別する処理判別手段と、前記関数抽出手段によって抽
    出した関数の演算順序を識別する演算順序識別手段と、
    前記処理判別手段で得た関数の処理判別結果と前記演算
    順序識別手段で得た関数の演算順序とに基づいて演算順
    序のチェックを行う演算順序チェック手段とを有してい
    ることを特徴とする演算順序チェック装置。
  2. 【請求項2】 前記演算順序チェック手段は、前記処理
    判別手段により判別した読み込み処理を行う関数と書き
    込み処理を行う関数とを、 書き込み処理を行う関数<読み込み処理を行う関数とし
    て大小による関係付けを行うとともに、前記演算順序識
    別手段により識別した関数の演算順序に基づき、演算を
    行う順序が後になるにしたがって大きくなる数値を各関
    数に付与し、前記関数の大小関係と前記関数に付与した
    数値とに基づいて演算順序のチェックを行うことを特徴
    とする請求項1に記載の演算順序チェック装置。
  3. 【請求項3】 前記演算順序識別手段は、前記関数が前
    記プログラム中に記述された行番号から前記関数の演算
    順序を識別することを特徴とする請求項1または2のい
    ずれかに記載の演算順序チェック装置。
  4. 【請求項4】 前記演算順序チェック手段による演算順
    序のチェック結果を表示する表示手段を有していること
    を特徴とする請求項1から3のいずれか1に記載の演算
    順序チェック装置。
  5. 【請求項5】 複数の関数を有するプログラムから、前
    記各関数が書き込み処理または読み込み処理を行うグロ
    ーバル変数を抽出し、該抽出したグローバル変数ごと
    に、該グローバル変数の書き込み処理または読み込み処
    理を行う関数を抽出し、該抽出した関数が、前記グロー
    バル変数を書き込み処理するのか、あるいは該グローバ
    ル変数を読み込み処理するのかを判別するとともに、前
    記抽出した関数のプログラムにおける演算順序を識別し
    て、前記関数が行う処理の判別結果と前記関数のプログ
    ラムにおける演算順序とに基づいて演算順序のチェック
    を行うようにしたことを特徴とする演算順序チェック方
    法。
  6. 【請求項6】 前記演算順序のチェックにおいては、前
    記判別結果における書き込み処理を行う関数と読み込み
    処理を行う関数とを、 書き込み処理を行う関数<読み込み処理を行う関数とし
    て大小による関係付けを行うとともに、前記プログラム
    における演算順序が後になるにしたがって大きくなる数
    値を各関数に付与して、前記関数の大小関係と前記関数
    に付与した数値とに基づいて演算順序のチェックを行う
    ようにしたことを特徴する請求項5に記載の演算順序チ
    ェック方法。
  7. 【請求項7】 前記プログラムにおける演算順序は、前
    記関数が前記プログラム中に記述された行番号から識別
    するようにしたことを特徴とする請求項5または6に記
    載の演算順序チェック方法。
JP2002126515A 2002-04-26 2002-04-26 演算順序チェック装置およびその方法 Pending JP2003316615A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002126515A JP2003316615A (ja) 2002-04-26 2002-04-26 演算順序チェック装置およびその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002126515A JP2003316615A (ja) 2002-04-26 2002-04-26 演算順序チェック装置およびその方法

Publications (1)

Publication Number Publication Date
JP2003316615A true JP2003316615A (ja) 2003-11-07

Family

ID=29540909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002126515A Pending JP2003316615A (ja) 2002-04-26 2002-04-26 演算順序チェック装置およびその方法

Country Status (1)

Country Link
JP (1) JP2003316615A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012033017A (ja) * 2010-07-30 2012-02-16 Fujitsu Marketing Ltd 規則検査装置、規則検査方法及び規則検査プログラム
WO2014112304A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 排他制御検査装置、排他制御検査方法、排他制御検査プログラム
WO2014112317A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 変数アクセス一貫性検査装置、変数アクセス一貫性検査方法、変数アクセス一貫性検査プログラム
WO2014112303A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 データ更新漏れ検査装置、データ更新漏れ検査方法、データ更新漏れ検査プログラム
WO2014112316A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 フラグアクセス不具合検査装置、フラグアクセス不具合検査方法、フラグアクセス不具合検査プログラム

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012033017A (ja) * 2010-07-30 2012-02-16 Fujitsu Marketing Ltd 規則検査装置、規則検査方法及び規則検査プログラム
WO2014112304A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 排他制御検査装置、排他制御検査方法、排他制御検査プログラム
WO2014112317A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 変数アクセス一貫性検査装置、変数アクセス一貫性検査方法、変数アクセス一貫性検査プログラム
WO2014112303A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 データ更新漏れ検査装置、データ更新漏れ検査方法、データ更新漏れ検査プログラム
WO2014112316A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 フラグアクセス不具合検査装置、フラグアクセス不具合検査方法、フラグアクセス不具合検査プログラム
CN104885060A (zh) * 2013-01-21 2015-09-02 日产自动车株式会社 数据漏更新检查装置、数据漏更新检查方法、数据漏更新检查程序
CN104937558A (zh) * 2013-01-21 2015-09-23 日产自动车株式会社 变量访问一贯性检查装置、变量访问一贯性检查方法、变量访问一贯性检查程序
CN104937559A (zh) * 2013-01-21 2015-09-23 日产自动车株式会社 标志访问缺陷检查装置、标志访问缺陷检查方法以及标志访问缺陷检查程序
JP5962779B2 (ja) * 2013-01-21 2016-08-03 日産自動車株式会社 フラグアクセス不具合検査装置、フラグアクセス不具合検査方法、フラグアクセス不具合検査プログラム
JP5979250B2 (ja) * 2013-01-21 2016-08-24 日産自動車株式会社 排他制御検査装置、排他制御検査方法、排他制御検査プログラム
JP6015778B2 (ja) * 2013-01-21 2016-10-26 日産自動車株式会社 変数アクセス一貫性検査装置、変数アクセス一貫性検査方法、変数アクセス一貫性検査プログラム
CN104937559B (zh) * 2013-01-21 2016-10-26 日产自动车株式会社 标志访问缺陷检查装置和标志访问缺陷检查方法
CN104937558B (zh) * 2013-01-21 2016-11-09 日产自动车株式会社 变量访问一贯性检查装置、变量访问一贯性检查方法

Similar Documents

Publication Publication Date Title
CN112100072A (zh) 应用程序代码的静态检测方法、装置、设备及介质
JP2003316615A (ja) 演算順序チェック装置およびその方法
CN115495745B (zh) 一种基于风险函数的工业软件源代码静态检测方法及系统
CN216561763U (zh) 一种mcu兼容性检测装置
CN112000374A (zh) 应用于安卓系统的usb触摸屏更换方法、装置、设备及介质
JPH07210683A (ja) 画像処理装置
JPH0561509A (ja) シーケンスプログラムの検索方法及びプログラマブルコントローラとプログラミング装置
JP3309418B2 (ja) 宣言解析処理装置
JPH0416809B2 (ja)
JPH05297911A (ja) シーケンスコントローラ用シーケンス制御回路
KR100234321B1 (ko) 리미트 신호 처리 방법
KR20230004133A (ko) 펌웨어 메모리 맵 정보 추출 장치 및 방법
JP2926590B1 (ja) プログラムデバッガ,プログラムデバッグ方法および記録媒体
JPH07281924A (ja) トレース装置及びこれを備えたエミュレータ
JPH103411A (ja) リアルタイムトレース時の情報保存方法およびその方法を実施する開発支援装置
JP2764358B2 (ja) データ駆動型情報処理装置
JP2000057012A (ja) トレース装置
JP2006039799A (ja) 制御装置
CN117743266A (zh) 一种边缘控制器的数据存储方法及装置
JP2000305808A (ja) マイクロコンピュータ組み込みシステムにおけるイベント検出方法ならびに装置
JPH0353333A (ja) アセンブラのアセンブル処理方式
JPH05342064A (ja) トレーサ回路
JPH0495139A (ja) 言語処理プログラムのクロスリファレンス出力方式
JPH06222950A (ja) 例外原因メッセージ出力装置
JP2010266939A (ja) 逆アセンブルシステム、逆アセンブルプログラム、及び逆アセンブル方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041027

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070402

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070703

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070807

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070911