2012年09月08日一覧

VisualStudio 2012でSALを使う

SALとは、Sourcecode Annotation LanguageといってMicrosoftが定義しているコンパイラで使用できる注釈のことです。
これは注釈という名が示すとおり、プログラムコードに注釈という形で情報を付加する仕組みです。

出来るようになることは割と多くあるのですが、主に以下のようなことが出来るようになります。

  • 関数戻り値の確認をチェックするしているコードか判定
  • 関数入力に渡されたバッファに対する範囲内アクセスかどうかの確認
  • 関数出力用の変数に値を格納しているか、格納しないままの実行パスはないか、の確認
  • バッファが書式指定を持つバッファの場合の引数個数確認

大雑把に言えば、渡されるバッファの境界チェックが出来るという感じでしょうか。
あと、エラーを返すような関数で、呼出元が戻り値チェックを省いていることを検知できるとか。安全なプログラムを作るためにこれらの機能をうまく使っていきたいですね。

ちなみにこのSALは、WindowsSDKやDirectX SDKで提供されるヘッダファイルらに既に適用されています。
さて、なぜ今SALなのかといいますと、VisualStudio 2012 Professional にて分析機能が使えるようになり、この分析という部分がSALを使用しているプログラムソースコードを解析することが出来るようになるためです。

続きを読む