GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Coverage-Testing.html ・ emacs-doc.conao3.com

19.2.13 カバレッジテスト

Edebugは、簡易的なカバレッジテストと実行頻度の表示機能を提供します。

カバレッジテストは、各式の結果を直前の結果と比較することで行われます。現在のEmacsセッションでカバレッジテストを開始して以来、各フォームが2つの異なる値を返した場合、そのフォームはカバレッジ済みとみなされます。したがって、プログラムのカバレッジテストを行うには、さまざまな条件下でプログラムを実行し、正しく動作するかどうかを確認してください。十分な数の異なる条件を試し、各フォームが2つの異なる値を返すようになった時点で、Edebugが通知します。

カバレッジテストは実行速度を低下させるため、edebug-test-coverage が nil でない場合にのみ実行されます(Edebug Options を参照)。頻度カウントは、実行モードが Go-nonstop である場合や、カバレッジテストが有効であるかどうかにかかわらず、インストルメンテーション対象関数のすべての実行に対して行われます。

定義のカバレッジ情報と出現回数の両方を表示するには、C-x X = (edebug-display-freq-count) を使用してください。= (edebug-temp-display-freq-count) では、別のキーを入力するまでの間だけ、同じ情報が一時的に表示されます。

コマンド: edebug-display-freq-count

このコマンドは、現在の定義の各行の周波数カウントデータを表示します。

コードの各行の後に、コメント行として出現回数が挿入されます。undo コマンドを1回実行することで、すべての挿入を取り消すことができます。出現回数は、式の前の ‘(’ 、式の後の ‘)’ 、または変数の最後の文字に表示されます。表示を簡素化するため、同じ行にある先行する式の出現回数と一致する場合は、カウントは表示されません。

式のカウントに続く文字 ‘=’ は、その式が評価されるたびに同じ値を返してきたことを示します。言い換えれば、カバレッジテストの対象にはまだなっていないということです。

定義の周波数カウントとカバレッジデータをクリアするには、単に 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))
a;#   0

コメント行から、fac が 6 回呼び出されたことがわかります。最初の if 文は 5 回返り、その都度同じ結果となりました。2 番目の if の条件についても同様です。fac の再帰呼び出しは、一度も返りませんでした。