読者です 読者をやめる 読者になる 読者になる

Header Annotations - Visual C++

こっちは Microsoft の C/C++ 言語拡張.ネタ元は社本さんのところ

ヘッダアノテーションは,ある関数が引数と返値をどのように使用するか記述します.Windows API を正しく呼び出されていることを確かめる助けとして,Windows のヘッダファイルにアノテーションが追加されました.Code Analysis *1 を有効にすると,アノテーションを通して記述された用途に従ってその関数を呼び出していない場合に Visual Studio 2005 のコンパイラは警告番号 6000 番代の警告を生成します.またあなたのコードが正しく呼ばれていることを保証するために,これらのアノテーションをあなた自身のコードに追加することも出来ます.

実際に付与できる情報はなかなか rich です.詳しくは以下のページをご覧ください.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/header_annotations.asp
このように Visual C++ 2005 では,ヘッダアノテーションによって metadata-rich になった Windows ヘッダファイルを利用し,静的コード検証を通してバグの早期発見やセキュリティの向上を計ることができるようです.将来的にはコード検証以外の分野にも応用されていくかもしれません.

  • 最適化ヒント
  • AOP
  • エディタ入力支援
  • デバッガ支援
  • P/Invoke 用ラッパ生成

あたりに有望そうですね.


(宿題) PREfast 方面は別にアノテーションを持っている? Design by Contract ™ っぽいこともできるような……
http://msdn2.microsoft.com/library/ms182032(en-us,vs.80).aspx
http://msdn2.microsoft.com/library/d3bbz7tz(en-us,vs.80).aspx
http://blogs.msdn.com/yosit/archive/2004/09/22.aspx
http://www.microsoft.com/japan/msdn/vstudio/teamsystem/dev/

*1:Visual Studio 2005 の新機能のひとつ