PL / SQL的代码覆盖率

时间:2020-03-06 14:54:56  来源:igfitidea点击:

是否有人在PL / SQL的代码覆盖方面具有工具或者经验。我相信可以使用DBMS_PROFILER吗?

解决方案

不知道这是否符合要求,但是从10g开始,有一个工具可以进行静态PL / SQL代码分析。

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

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

以我的经验,到目前为止,它已经引发了许多误报。

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

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

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

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

没有MetaLinka帐户的更多10g文档可在此处获得: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

请参阅SD测试覆盖率工具。我们即将发布具有与其他工具相同功能的PLSQL测试覆盖率工具,包括在源代码顶部显示结果的GUI,以及生成的覆盖率报告,该报告收集有关各个功能的详细信息以及包。

编辑2011年2月15日:提供了PLSQL测试覆盖率生产工具。