JP1/Advanced Shell

[目次][用語][索引][前へ][次へ]


3.8.4 カバレージ情報の表示

ジョブ定義スクリプトを実行し,カバレージ情報を表示するまでの流れを次の図に示します。

図3-4 カバレージ情報の表示の流れ

[図データ]

なお,開発環境のエディタでもカバレージ情報を表示できます。エディタを使用してカバレージ情報を表示する方法の詳細については,「4.4.7 カバレージ情報を表示する」を参照してください。

<この項の構成>
(1) 表示方法とコマンドの形式
(2) カバレージ情報の表示形式
(3) C0情報とC1情報の表示方法
(4) メモリ上に採取しているカバレージ情報の表示【UNIX限定】
(5) C1実行比率100%とならないケース

(1) 表示方法とコマンドの形式

カバレージ情報は,カバレージ情報を表示するコマンド(adshcvshowコマンド)で表示します。コマンドに指定したascファイルの内容を表示します。-lオプションのオプション値としてジョブ定義スクリプトの範囲を指定することで,指定した範囲内のカバレージ情報を表示できます。

-sオプションを指定した場合,バックアップされているジョブ定義スクリプトの内容だけを表示します。-sオプションはascファイルのバックアップされているジョブ定義スクリプトの内容の確認やジョブ定義スクリプトとの差分を確認したいときに使用します。-sオプションを指定した場合,-lオプションによる範囲指定はできません。

カバレージ情報表示コマンドの形式を次に示します。

 
adshcvshow {[-l n1[-[n2]][,n3[-[n4]]]...]|-s} ascファイルのパス名
 

行指定の形式は,","で複数指定し"-"で範囲を指定します。例えば,1行目〜10行目と15行目と21行目〜30行目を指定したい場合,次のように指定します。

 
adshcvshow -l 1-10,15,21-30 ascファイルのパス名
 

"-"の後ろに数字を指定しなければ,前の値から最終行までの範囲を意味します。例えば,21行目から最終行まで指定したい場合,次のように指定します。

 
adshcvshow -l 21- ascファイルのパス名
 

(2) カバレージ情報の表示形式

カバレージ情報の表示形式の説明を,次の表に示します。

表3-8 カバレージ情報の表示形式の説明

項目 説明
JP1/Advanced Shell カバレージ情報(JP1/Advanced Shell Coverage Information) JP1/Advanced Shellで取得したカバレージ情報を示します。
日時(右上の部分) adshcvshowコマンドを実行した日時をyyyy-mm-dd hh:mm:ssの形式で表示します。月,日,時,分,秒が1桁の場合は,先頭に0を付加します。
見出し情報(Header Information) 見出しを示します。
ジョブ定義スクリプト名(Shellscript Name) ジョブ定義スクリプトの絶対パス名を表示します。
ascファイルのバージョン(Asc version) ascファイルのバージョン番号を表示します。
カバレージ情報の採取開始時刻(Coverage Start Time) カバレージ情報の採取開始時刻を表示します。形式は,日時と同じです。
カバレージ情報の採取終了時刻(Coverage End Time) カバレージ情報の採取終了時刻を表示します。形式は,日時と同じです。
カバレージ情報の採取回数(Test Count) カバレージ情報を採取した回数を表示します。
カバレージ情報の採取回数が9999を超えた場合,「9999+」と表示します。
バッチジョブを実行するコマンド(adshexecコマンド)のオプションの指定によって採取回数の数え方が変わります。
adshexecコマンド(-tと-dを指定)
  • メモリ上のカバレージ情報の場合
    ・初期値
    ascファイルがあるときは,ascファイルのカバレージ情報の採取回数となります。
    ascファイルがないときは,0となります。
    ・更新
    デバッガのrunコマンドの実行ごとにカバレージ情報の採取回数を1増やします。
  • ascファイルの場合
    adshexecコマンドの終了時にデバッガのrunコマンドの実行回数だけカバレージ情報の採取回数を増やします。
adshexecコマンド(-tを指定)
 adshexecコマンドの終了時にカバレージ情報の採取回数を1増やします。
adshexecコマンド(-dを指定)
  • メモリ上のカバレージ情報の場合
    ・初期値
    カバレージ情報の採取回数の初期値は0になります。
    ・更新
    デバッガのrunコマンドの実行ごとにカバレージ情報の採取回数を1増やします。
  • ascファイルの場合
    ascファイルは更新されません。
メイン情報(Main Information) カバレージ情報(C0,C1情報)を表示します。
行番号(Line) 1から始まります。
行番号が9999を超えた場合,「9999+」と表示します。
付加情報(Info) C0,C1情報の見出しです。カバレージ情報は,行単位に表示します。コマンドラインが複数行にまたがっている場合,コマンドが存在する行にC0,C1情報を表示します。
C0,C1情報のどちらも32個以内ならカバレージ情報を記録でき,この項目はスペースとなります。記録できない場合に表示される文字と意味を次に示します。
overC0:C0情報が32を超えています。
overC1:C1情報が32を超えています。
over:C0情報とC1情報の両方が32を超えています。
C0情報(C0) C0情報を表示します。
@:コマンドが実行されました。
-:コマンドは実行されていません。
行に複数のコマンドが存在する場合,行の先頭から最大4個のコマンドまでのC0情報を4文字で表示します。
C1情報(C1) C1情報を表示します。
@:実行パスが実行されました。
-:実行パスは実行されていません。
行に複数の実行パスが存在する場合,行の先頭から最大4個の実行パスまでのC1情報を4文字で表示します。
ジョブ定義スクリプト(<Shellscript Image>) ジョブ定義スクリプトの内容を,行単位に表示します。範囲指定した場合,指定された範囲の行だけを表示します。
合計の情報(Total Information) C0,C1情報の合計を表示します。範囲指定した場合,合計の情報以降は,表示されません。個数が99999999を超えた場合,「99999999+」と表示します。
C0,C1対象の総数(Target Total) <C0>に対象コマンドの総数,<C1>に実行パスの総数を表示します。
<C0> ジョブ定義スクリプト内のすべてのC0対象コマンドの個数を含みます。C0対象のコマンド数が32個を超える行が存在する場合でもすべての個数がカウントされます。
<C1> ジョブ定義スクリプト内のすべてのC1対象実行パスの個数を含みます。C1対象の実行パス数が32個を超える行が存在する場合でもすべての個数がカウントされます。
C0,C1対象の実行した総数(Executed Total) <C0>に実行したコマンドの総数,<C1>に実行した実行パスの総数を表示します。
<C0> カバレージ情報として,実行を記録するのは,各行内で先頭からC0対象である32個のコマンドまでです。この32個のコマンド内の実行したコマンドが,カウントされます。
<C1> カバレージ情報として,実行を記録するのは,各行内で先頭からC1対象である32個の実行パスまでです。この32個の実行パス内の実行した実行パスが,カウントされます。
C0,C1対象の未実行の総数(Unexecuted Total) <C0>に未実行のコマンドの総数,<C1>に未実行の実行パスの総数を表示します。
<C0> 「C0対象の総数(Target Total)−C0対象の実行した総数(Executed Total)」になります。
<C1> 「C1対象の総数(Target Total)−C1対象の実行した総数(Executed Total)」になります。
実行比率(Coverage Rate) C0とC1の実行比率(%)を表示します。小数点第2位以下を切り捨てて小数点第1位までを表示します。
<C0> 「C0対象の実行した総数(Executed Total)/C0対象の総数(Target Total)」になります。
C0対象のコマンド数が32個を超える行が存在した場合,すべてのコマンドを実行しても100%より小さくなります。
<C1> 「C1対象の実行した総数(Executed Total)/C1対象の総数(Target Total)」になります。
C1対象の実行パス数が32個を超える行が存在した場合,すべての実行パスを実行しても100%より小さくなります。

カバレージ情報を表示するコマンドの表示例を,C0,C1に情報を行ごとに1個まで表示した場合と4個まで表示した場合とに分けて示します。

(a) カバレージ情報を表示するコマンドの表示例(C0,C1に情報を行ごとに1個まで表示した場合)

この例では,C0とC1が取得されたことが,Main Informationのところに1個の「@」と「-」で表示されています。

                    * JP1/Advanced Shell Coverage Information *
 
                                                            2011-07-20 20:40:09
****    Header Information    **************************************************
Shellscript Name     : /home/test/sample
Asc version          : 1.0
Coverage Start Time  : 2011-07-20 20:40:09
Coverage End Time    : 2011-07-20 20:40:09
Test Count           :    1
 
****    Main Information      **************************************************
Line   Info   C0   C1   <Shellscript Image>
    1                   
    2         @         echo 1
    3                   
    4         @    @    if true
    5                   then
    6         @           echo 2
    7              -    fi
    8                   
    9         @         echo 3
   10                   
   11         @    -    if false
   12                   then
   13         -           echo 4
   14              @    fi
   15                   
   16         @         echo 5
   17                   
   18         @    @    if true
   19                   then
   20         @           echo 6
   21              -    else
   22         -           echo 7
   23                   fi
   24                   
   25         @         echo 8
   26                   
   27         @    -    if false
   28                   then
   29         -           echo 9
   30              @    else
   31         @           echo 10
   32                   fi
   33                   
   34         @         echo 11
   35                   
   36                   
   37                   
 
****    Total Information     **************************************************
                         <C0>      <C1>
  Target     Total         15         8
  Executed   Total         12         4
  Unexecuted Total          3         4
--------------------------------------------------------------------------------
                         <C0>      <C1>
  Coverage   Rate        80.0 %    50.0 %

(b) カバレージ情報を表示するコマンドの表示例(C0,C1に情報を行ごとに4個まで表示した場合)

この例では,C0とC1が複数回取得されたことが,Main Informationの13行目と37行目に表示されています。

(3) C0情報とC1情報の表示方法

ジョブ定義スクリプトのスクリプト制御文の実行の仕方でカバレージ情報を採取する個所が変わります。カバレージ情報を表示した場合に実行された個所に「@」が表示されます。実行されなかった個所には,「-」が表示されます。

(a) if文の場合

(b) for文の場合

(c) while文およびuntil文の場合

while文の表示方法を示します。until文も同じ表示になります。

(d) case文の場合

*パターンの有無で,C1情報の表示方法が異なります。*パターンとは,case文でどのパターンにも一致しなかった場合のパターンです。

(e) #-adsh_step_startコマンドの場合

#-adsh_step_startコマンドの次の引数を指定した場合,先行のジョブステップやジョブ定義スクリプト中のスクリプト拡張コマンドの状態によって,そのジョブステップを実行するかどうかが変わります。

[-run {normal|abnormal|always}]

ジョブステップを実行したかどうかを判断できるように,C1情報に次の情報を表示します。

(f) #-adsh_step_errorコマンドの場合

ジョブステップ内でエラーが発生した場合,#-adsh_step_errorコマンドに続くジョブ定義スクリプトを実行します。このエラー処理を実行したかどうかを判断できるように,C1情報に次の情報を表示します。

(g) 関数の場合

関数の実行例を次に示します。

C0   C1    ジョブ定義スクリプト
           funcAAA(){                 →1.
@              echo "start funcAAA"   →2.
     @         if true                →2.
               then                   →2.
@                echo true            →2.
     -         else                   →2.
-                echo false           →2.
               fi                     →2.
           }
             :
@          funcAAA                    →3.
  1. 関数を実行した場合には,関数が定義されているところには,C0情報,C1情報を表示しません。
  2. 関数の本体には,実行したコマンド,実行パスのC0,C1 情報を表示します。
  3. 関数を実行した場合には,関数を呼び出したところにC0情報を表示します。

(h) ( cmd1; cmd 2 )の場合

括弧で囲ったコマンドを別プロセスで実行します。この場合,コマンドグループ全体,コマンドグループ内の各コマンドに対して,カバレージ情報は採取しません。

(i) { cmd1; cmd2 }の場合

中括弧で囲んだコマンドを,adshexecコマンドと同一プロセスで実行します。この場合,コマンドグループ内の各コマンドに対して,カバレージ情報を採取します。

(j) cmd1 &の場合

adshexecコマンドによるジョブ定義スクリプトの実行と並行して,バックグラウンドで別プロセスを生成してコマンドを実行します。バックグラウンドで実行されるジョブ定義スクリプトでは,カバレージ情報は採取しません。

(k) trapのアクションの場合

trapのアクションでは,カバレージ情報を採取しません。

(l) コマンド置換の場合

コマンド置換で実行するコマンド,スクリプト制御文のカバレージ情報は採取しません。

(m) timeコマンドの引数の場合

timeコマンドの引数として実行するコマンドは,カバレージ情報を採取しません。

(n) evalコマンドの引数の場合

evalコマンドの引数として実行するコマンドは,カバレージ情報を採取しません。

(o) パイプ機能の場合

パイプ機能を使用して実行しているコマンドのカバレージ情報は採取しません。

(p) 外部スクリプトの場合

外部スクリプトの呼び出し先では,カバレージ情報を採取しません。外部スクリプトの呼び出し元では,カバレージ情報を採取します。なお,外部スクリプトの呼び出しは,C0の対象ですが,C1については,対象外です。

(4) メモリ上に採取しているカバレージ情報の表示【UNIX限定】

デバッグ用のinfo coverageコマンドを使用した場合,メモリ上に採取している,カバレージ情報を表示できます。

表示するカバレージ情報は,初回蓄積か継続蓄積かどうかで変化します。初回蓄積の場合は,中断点までのカバレージ情報を表示します。継続蓄積の場合は,蓄積されたカバレージ情報に中断点までのカバレージ情報を合わせた結果を表示します。蓄積を指定しなかった場合は,初回蓄積の場合と同様に中断点までのカバレージ情報を表示します。

表示する情報の種類と形式は,カバレージ情報を表示するコマンド(adshcvshowコマンド)の場合と同じです。

(5) C1実行比率100%とならないケース

次の条件に該当する#-adsh_step_startがあると,すべての実行パスを実行してもC1実行比率が100%となりません。

#-adsh_step_start は,次の両方の場合をC1情報として取得します。

  1. 先行するすべてのジョブステップ,コマンドが正常終了している。
  2. 先行するジョブステップ,コマンドで正常終了していないものがある。

しかし,#-adsh_step_startのジョブステップに先行するジョブステップ,またはコマンドがない場合,上記の2.のケースを実行できません。

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.