Тестирование покрытия
Edebug предоставляет базовые возможности тестирования покрытия и отображения частоты выполнения.
Тестирование покрытия работает путем сравнения результата каждого выражения с предыдущим результатом; каждая форма в программе считается покрытой, если она возвращала два разных значения с момента начала тестирования покрытия в текущем сеансе Emacs. Таким образом, для проведения тестирования покрытия вашей программы выполните ее в различных условиях и обратите внимание на корректность ее поведения; Edebug сообщит вам, когда вы испробовали достаточно различных условий, чтобы каждая форма вернула два разных значения.
Тестирование покрытия замедляет выполнение, поэтому оно выполняется только в том случае, если edebug-test-coverage не nil. Подсчет частоты выполняется для всех запусков инструментированной функции, даже если режим выполнения — Go-nonstop, и независимо от того, включено ли тестирование покрытия.
Используйте C-x X = (edebug-display-freq-count) для отображения информации о покрытии и частоты вызовов для определения. Просто = (edebug-temp-display-freq-count) отображает ту же информацию временно, только до тех пор, пока вы не нажмете другую клавишу.
- Команда: edebug-display-freq-count
-
Эта команда отображает данные о частоте вызовов для каждой строки текущего определения.
Она вставляет подсчеты частоты в виде комментариев после каждой строки кода. Вы можете отменить все вставки с помощью одной
undoкоманды. Подсчеты отображаются под ‘(’ перед выражением или ‘)’ после выражения, или на последнем символе переменной. Для упрощения отображения подсчет не отображается, если он равен подсчету предыдущего выражения в той же строке.Символ ‘=’ после подсчета выражения означает, что выражение возвращало одно и то же значение каждый раз, когда оно вычислялось. Другими словами, оно еще не покрыто для целей тестирования покрытия.
Чтобы очистить данные о частоте вызовов и покрытии для определения, просто переинструментируйте его с помощью
eval-defun.
Например, после вычисления (fac 5) с точкой останова в исходном коде и установки edebug-test-coverage на t, когда достигается точка останова, данные о частоте выглядят следующим образом:
(defun fac (n)
(if (= n 0) (edebug))
;#6 1 = =5
(if (< 0 n)
;#5 =
(* n (fac (1- n)))
;# 5 0
1))
;# 0
Строки комментариев показывают, что fac был вызван 6 раз. Первое if утверждение возвращало 5 раз одно и то же значение; то же самое относится к условию во втором if. Рекурсивный вызов fac не возвращал значения вообще.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Coverage-Testing.html