アサーションでバグの原因を早期発見

PHPなどでは使ったこともあったけど、C言語でもサポートされているのを知った。

特徴

  • 引数に、プログラムが仕様上満たしているべき条件式を記述する関数
  • 偽の場合、デバッグに有益な情報を吐き出して停止する
    • 簡単な自動テストができ、プログラムの意図しない動作を早期発見できる
    • マクロ"NDEBUG"を定義すると、動作を無効化できる(リリース向け)
  • CやJava、PHPなど様々な言語でサポート
  • 契約プログラミング、テスト駆動開発などに利用可能

C言語でのサンプルコード

#include <assert.h>

int main() {
  int a=2;
  assert(a==1);
  return 0;
}

実行例

偽の場合、ソースファイル名や行数、関数、条件式などが表示される。

test: test.c:5: main: Assertion `a==1' failed.

if〜printfを羅列したりするよりもお手軽で、高機能、可読性も高い、といいことずくめ。

関連記事


  1. LLM活用法:コードを指定のプログラミング言語で書き換え
  2. VuetifyのData Tableでソート順をカスタマイズする
  3. Sequence Decomposingをザ・ゲームに置き換えて考えてみた
  4. Pythonにおける2の整数乗は、ビット演算のほうが高速
  5. アノテーションを活用した影響調査にトライしてみた
  6. Groovyの == 演算子と equals() は厳密に同じではない
  7. ネットワークが落ちていたらWindowsを自動で再起動する