【问题标题】:Code coverage for PL/SQLPL/SQL 的代码覆盖率
【发布时间】:2008-09-30 09:55:14
【问题描述】:

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

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    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

    【讨论】:

    • 更新:在本周使用 Hierarchical Profiler 之后,它对代码覆盖率不再那么有用 - 它主要收集每个函数调用的入口点的数据,而不是像原始代码那样收集所有代码行的数据探查器。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            基本块是最小的可执行代码。

            这些是查找更多信息的几个参考。

            Oracle documentation

            Tutorial

            Youtube Video

            【讨论】:

              猜你喜欢
              • 2012-06-30
              • 2018-01-11
              • 1970-01-01
              • 1970-01-01
              • 2016-11-29
              • 2017-05-03
              • 2012-05-04
              • 2018-07-10
              • 1970-01-01
              相关资源
              最近更新 更多