PL/SQL のコード カバレッジに関するツールや経験を持っている人はいますか。これは DBMS_PROFILER を使用して可能だと思いますか?
6 に答える
http://www.toadworld.com/BLOGS/tabid/67/EntryID/267/Default.aspxには、PL/SQL プロファイラーを使用したコード カバレッジのチェックに関する情報があります。
9i または 10g でのプロファイリングに関する役立つ情報は、Metalink の記事 243755.1「PL/SQL プロファイラーの実装と使用」に含まれており、コードのプロファイリングに関する情報が記載されています。記事の最後にある prof.zip を入手してください。プロファイリングの実行後に結果を適切にフォーマットする profiler.sql が含まれています。
MetaLinka アカウントなしで、10g のドキュメントをさらに入手できます: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_profil.htm
11g を実行している場合は、ここに文書化された新しい階層プロファイラーがあります: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_profiler.htm
SD テスト カバレッジ ツールを参照してください。他のツールと同じ機能を備えた PLSQL テスト カバレッジ ツールをリリースしようとしています。これには、ソース コードの上に結果を表示する GUI や、個々の関数の詳細とロールアップを収集する生成されたカバレッジ レポートが含まれます。パッケージ。
EDIT 2/15/2011: PLSQL テスト カバレッジ生成ツールが利用可能です。
インストールできるDBMS_profilerというパッケージがあります。これにより、プロファイルを開始でき、Oracleはデータを特別なテーブルに格納します。次に、プロファイルを停止し、それらのテーブルからレポートします。
http://www.databasejournal.com/features/oracle/article.php/10893_2197231_3ページで役立つものを見つけました。
select exec.cnt/total.cnt * 100 "Code% coverage"
from (select count(1) cnt
from plsql_profiler_data d, plsql_profiler_units u
where d.runid = &&runid
and u.runid = d.runid
and u.unit_number = d.unit_number
and u.unit_name = upper('&&name')
and u.unit_owner = upper('&&owner')
) total,
(select count(1) cnt
from plsql_profiler_data d, plsql_profiler_units u
where d.runid = &&runid
and u.runid = d.runid
and u.unit_number = d.unit_number
and u.unit_name = upper('&&name')
and u.unit_owner = upper('&&owner')
and d.total_occur > 0) exec;
これがあなたの求めているものかどうかはわかりませんが、10g 以降では、静的 PL/SQL コード分析を行うためのツールがあります。
情報はこちら... http://www.psoug.org/reference/plsql_warnings.html
セッションまたはデータベース レベルで有効にできることに注意してください。
私の経験では、これまでのところかなりの数の偽陰性が発生しています。
Oracle 12.2c では、 DBMS_PLSQL_CODE_COVERAGEパッケージを使用できるようになりました。実際、これは基本ブロック レベルのカバレッジを提供します。
基本ブロックは最小の実行可能コードです。
これらは、より多くの情報を見つけるための参考資料です。