PL / SQL的代码覆盖率

时间:2008-09-30 09:55:14

标签: oracle plsql

是否有人拥有PL / SQL代码覆盖的工具或经验。我相信这可以使用DBMS_PROFILER?

6 个答案:

答案 0 :(得分:6)

http://www.toadworld.com/BLOGS/tabid/67/EntryID/267/Default.aspx有关于使用PL / SQL分析器检查代码覆盖率的信息。

有关9i或10g分析的一些有用信息包含在Metalink文章243755.1“实现和使用PL / SQL Profiler”中,以获取有关分析代码的信息。从文章底部获取prof.zip,它有一个profiler.sql,可以在分析运行后很好地格式化您的结果。

此处有更多10g文档,没有MetaLinka帐户:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_profil.htm

如果您运行11g,则会在此处记录一个新的Hierarchical Profiler: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_profiler.htm

答案 1 :(得分:3)

SD Test Coverage Tools。我们即将发布一个PLSQL测试覆盖率工具,其功能与我们的其他工具相同,包括用于在源代码之上显示结果的GUI,以及生成的覆盖率报告,该报告收集有关各个功能的详细信息以及汇总包。

EDIT 2/15/2011:PLSQL测试覆盖率生产工具可用。

答案 2 :(得分:1)

不确定这是不是你想要的,但在10g以后,有一个工具可以进行静态PL / SQL代码分析。

此处的信息... http://www.psoug.org/reference/plsql_warnings.html

请注意,它可以在会话或数据库级别启用。

根据我的经验,到目前为止它已经引起了很多误报。

答案 3 :(得分:1)

我在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;

答案 4 :(得分:1)

您可以安装名为DBMS_profiler的软件包。有了这个,您可以启动配置文件,Oracle将数据存储在特殊表中。然后停止配置文件并从这些表中报告。

答案 5 :(得分:0)

现在有了 Oracle 12.2c,您可以使用 DBMS_PLSQL_CODE_COVERAGE 包。事实上,这提供了基本块级别的覆盖。

Basic-block 是最小的可执行代码。

这些是一些可以找到更多信息的参考资料。

Oracle documentation

Tutorial

Youtube Video