149 DBMS_PLSQL_CODE_COVERAGE
DBMS_PLSQL_CODE_COVERAGEパッケージは、基本ブロック・レベルでPL/SQLアプリケーションのコード・カバレッジ・データを収集するためのインタフェースを提供します。
149.1 DBMS_PLSQL_CODE_COVERAGEの概要
DBMS_PLSQL_CODE_COVERAGEパッケージは、基本ブロック・レベルでPL/SQLアプリケーションのコード・カバレッジ情報を収集するためのインタフェースを提供します。 基本ブロックとは、PL/SQLコードの入口が1箇所で出口が1箇所のブロックのことです。 PL/SQLの開発者は、テスト・インフラストラクチャでコードがどの程度実行されるか確認する必要があります。 カバレッジ表は、CREATE_COVERAGE_TABLESプロシージャを使用して作成します。
一般的なコード・カバレッジは、次へのコールを含むセッションで実行されます。
-
START_COVERAGE -
PL/SQLコードの実行
-
STOP_COVERAGE
GET_BLOCK_MAPファンクションは、合計カバレッジの計算に役立ちます。
参照:
-
PL/SQL基本ブロック・カバレッジを使用した品質維持の詳細は、Oracle Database開発ガイドを参照してください
-
COVERAGE PRAGMAの構文およびセマンティクスについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。 -
PLSQL_OPTIMIZE_LEVELコンパイル・パラメータの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
149.2 DBMS_PLSQL_CODE_COVERAGEのセキュリティ・モデル
ユーザーは、DBMS_PLSQL_CODE_COVERAGEパッケージに対するEXECUTE権限を持っている必要があります。
ユーザーは、このユニットに関するカバレッジ情報を収集するユニットに対するCREATE権限を持っている必要があります。
PL/SQL基本ブロック・カバレッジ・データは、プログラム・ユニットでINTERPRETEDコンパイル(パラメータ・セットPLSQL_CODE_TYPE =INTERPRETED)が使用されるときに収集されます。 PL/SQL基本ブロック・カバレッジ・データは、プログラム・ユニットでNATIVEコンパイルが使用されるときは収集されません。 NATIVEコンパイラは、パラメータPLSQL_OPTIMIZE_LEVEL <= 1を設定することにより無効にできます。 コンパイル・モードに関係なく、ラップされたユニットのカバレッジ・データは収集されません。
149.3 DBMS_PLSQL_CODE_COVERAGEの定数
DBMS_PLSQL_CODE_COVERAGEパッケージは、GET_BLOCK_MAPファンクションのnamespaceパラメータで使用される定数を提供します。
これらの定数を、次の表に示します。
表149-1 DBMS_PLSQL_CODE_COVERAGE定数
| 名前 | タイプ | 値 | 説明 |
|---|---|---|---|
|
|
|
|
ファンクション・ネームスペースを指定します |
|
|
|
|
パッケージ仕様ネームスペースを指定します |
|
|
|
|
パッケージ定義(本体)ネームスペースを指定します |
|
|
|
|
プロシージャ・ネームスペースを指定します |
|
|
|
3 |
トリガー・ネームスペースを指定します |
|
|
|
|
タイプ仕様ネームスペースを指定します |
|
|
|
|
タイプ定義(本体)ネームスペースを指定します |
149.4 DBMS_PLSQL_CODE_COVERAGEのデータ構造
レコード・タイプ
表タイプ
149.4.1 MAP_RECレコード・タイプ
MAP_RECレコード・タイプは、ソース・コード内のPL/SQL基本ブロックの場所を定義します。
構文
TYPE map_rec IS RECORD (
procedure_name VARCHAR2(32767),
block_num NUMBER,
line NUMBER,
col NUMBER,
not_feasible NUMBER);
フィールド
表149-2 MAP_RECフィールド
| フィールド | 説明 |
|---|---|
|
|
基本ブロックを含むプロシージャの名前 |
|
|
基本ブロックを識別します |
|
|
基本ブロックの先頭行 |
col |
基本ブロックの先頭列 |
|
|
基本ブロックのNot_feasibleマーキング |
149.5 DBMS_PLSQL_CODE_COVERAGEサブプログラムの要約
この表は、DBMS_PLSQL_CODE_COVERAGEサブプログラムを示し、簡単に説明しています。
表149-3 DBMS_PLSQL_CODE_COVERAGEパッケージ・サブプログラム
| サブプログラム | 説明 | |
|---|---|---|
|
カバレッジ表を作成します。 |
||
| GET_BLOCK_MAPファンクション | 基本ブロックとPL/SQLソースのマッピングを取得します | |
|
ユーザーのセッションでカバレッジ・データの収集を開始し、RUN_IDを戻します。 |
||
|
現在のカバレッジの実行を終了します。 |
149.5.1 CREATE_COVERAGE_TABLESプロシージャ
このプロシージャは、カバレッジ・データの収集に使用する表を作成します。
構文
DBMS_PLSQL_CODE_COVERAGE.CREATE_COVERAGE_TABLES ( FORCE_IT IN BOOLEAN DEFAULT FALSE);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
デフォルトでは、カバレッジ表がすでに存在する場合、エラーになります。 TRUEに設定すると、表がすでに存在する場合、表はサイレントに削除され、新しい表が作成されます。 |
例外
表149-4 CREATE_COVERAGE_TABLES例外
| 例外 | 説明 |
|---|---|
COVERAGE_ERROR |
|
149.5.2 GET_BLOCK_MAPファンクション
このファンクションは、基本ブロックとPL/SQLソースのマッピングを取得します。
構文
DBMS_PLSQL_CODE_COVERAGE.GET_BLOCK_MAP(
unit_owner IN VARCHAR2,
unit_name IN VARCHAR2,
namespace IN POSITIVE)
RETURN T_MAP_REC;表149-5 パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ユニットの所有者。 ユニットの所有者では、大文字と小文字は区別されません。 unit_ownerが空またはNULLの場合、デフォルトは現在のスキーマです。 |
|
|
マッピングを取得するユニット。 unit_nameでは、大文字と小文字は区別されません。 |
|
|
このunit_nameが解決されるネームスペース。 有効なネームスペース値のリストは、DBMS_PLSQL_CODE_COVERAGEの定数を参照してください。 |