Покрытие кода для PL / SQL - PullRequest
       13

Покрытие кода для PL / SQL

11 голосов
/ 30 сентября 2008

У кого-нибудь есть инструменты или опыт работы с покрытием кода для PL / SQL. Я полагаю, что это возможно с использованием DBMS_PROFILER?

Ответы [ 5 ]

6 голосов
/ 05 октября 2009

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, который хорошо отформатирует ваши результаты после запуска профилирования.

Более 10 г документации доступно здесь без учетной записи MetaLinka: 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

3 голосов
/ 09 июля 2010

См. Инструменты тестирования покрытия SD . Мы собираемся выпустить инструмент тестирования покрытия PLSQL с теми же возможностями, что и другие наши инструменты, включая графический интерфейс для отображения результатов поверх вашего исходного кода и сгенерированный отчет покрытия, который собирает сведения об отдельных функциях, а также сводки для пакеты.

РЕДАКТИРОВАНИЕ 15.02.2011: Доступен инструмент создания тестового покрытия PLSQL.

1 голос
/ 18 октября 2008

На странице 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 голос
/ 03 октября 2009

Существует пакет, который вы можете установить под названием DBMS_profiler . При этом вы можете запустить профиль, и Oracle будет хранить данные в специальных таблицах. Затем остановите профиль и сообщите из этих таблиц.

1 голос
/ 30 сентября 2008

Не уверен, что это именно то, что вам нужно, но в 10g и далее есть инструмент для статического анализа кода PL / SQL.

Информация здесь ... http://www.psoug.org/reference/plsql_warnings.html

Обратите внимание, что его можно включить на уровне сеанса или базы данных.

По моему опыту, к настоящему времени выброшено немало ложных негативов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...