Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

http://www.toadworld.com/BLOGS/tabid/67/EntryID/267/Default.aspx содержит информацию о проверке покрытия кода с использованием профилировщика PL/SQL.

Некоторая полезная информация о профилировании на 9i или 10g включена в статью Metalink 243755.1 "Реализация и использование профилировщика PL/SQL" для получения информации о профилировании кода. Возьмите 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

Ответ 2

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

РЕДАКТИРОВАНИЕ 2/15/2011: доступен PLSQL инструмент для тестирования покрытия.

Ответ 3

Не уверен, что это совсем то, что вам нужно, но в 10-м году есть инструмент для статического анализа кода 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 будет хранить данные в специальных таблицах. Затем остановите профиль и отправьте отчет из этих таблиц.