问题 PL / SQL的代码覆盖率


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


11044
2017-09-30 09:55


起源



答案:


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,可以在分析运行后很好地格式化您的结果。

没有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


6
2017-10-05 13:22



更新:在本周使用Hierarchical Profiler之后,对于代码整合而言它并不是那么有用 - 它主要收集每个函数调用的入口点的数据,而不是像原始分析器那样在所有代码行上收集数据。 - David Mann


答案:


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,可以在分析运行后很好地格式化您的结果。

没有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


6
2017-10-05 13:22



更新:在本周使用Hierarchical Profiler之后,对于代码整合而言它并不是那么有用 - 它主要收集每个函数调用的入口点的数据,而不是像原始分析器那样在所有代码行上收集数据。 - David Mann


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

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


3
2017-07-09 11:24





不确定这是否是您所追求的,但在10g以后,有一个工具可以进行静态PL / SQL代码分析。

信息在这里...... http://www.psoug.org/reference/plsql_warnings.html

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

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


1
2017-09-30 11:35





我找到了一些有用的东西 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;

1
2017-10-17 22:13





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


1
2017-10-03 00:46