コード モデルによるコードの調査(MSDN)
ヤバイ。VCCodeModelヤバイ。まじでヤバイよ、マジヤバイ。
VCCodeModelヤバイ。
・・・とまぁ、宇宙ヤバイ(はてなダイアリー)を完走できるほどC#にもアドインに関するクラスにも通じているわけではないのですが、VisualStudio2005にはなんとすごいものがあるのかと感動したので。
事の発端は、チームで自分も含めて忙しくなってくるとソースヘッダや関数ヘッダを書かなくなってくる現象を打破したいなと思ったことでした。
ソースヘッダや関数ヘッダは方言かもしれないので捕捉しておきます。
ソースファイルの先頭にそのファイルの概要をコメントとして書くのがソースヘッダ。
各関数の先頭に関数の概要をコメントとして書くのが関数ヘッダ。
両方ともソースの上部、関数の上部に書くコメントなので、総じてヘッダコメントと呼びます。
# 少なくとも自分の周りではそう呼んでます
ヘッダコメントは、Doxygen形式で記述することが多いです。たぶん。
なぜヘッダコメントを書かなくなってくるのか。
自分の忙しいときを振り返ってみると次のような点が挙がりました。
- まず、面倒くさくなってくる。
- とりあえず雛形があり、それをコピペするようにしているんだけど、引数と戻り値をタイプするのが面倒。
コピペするにも範囲選択・・・めんd(ry - 実装作業を優先しないといけないので、後で書くと心に誓う→忘れる。
ただでさえ面倒なものの優先度が下がり、さておかれてしまう。
自分の場合、テンプレを貼れば@brief(要約)ぐらいは書くので、ボタン一発で@briefを書く直前まで処理できないかなと常々考えていました。
こういう機能って、アドインで作れるんだよなーとだけぼんやり考えていたけど手を出さずにいました。
yaccを組み込まないといけない、と思ったり、VisualStudio6.0時代のClassWizard相当の機能にアクセスする方法(利用できれば便利だと思った)にたどり着くまでが大変そう、と思っていてボリュームが大きかったと思っていたので。
そんな心配があったわけですが、自分が心配していたよりも簡単にクラスや関数の情報にアクセスすることができました。
作成したアドインは、
- いま開いているエディタのキャレット位置を取得する
- VCCodeModelのコレクションから情報を検索
- ヘッダコメントを挿入する
という処理をするものです。
欲しい情報をわざわざ絞り込んでいるわけですが、これを絞り込まずに列挙できるものすべてをExcelやWordのファイルに出力できれば・・・と考えたのですがこれこそボリュームが大きそうです(たぶん)。
できたらすごい便利そうだけど。
ちなみに、アドオンが出来てからDoxyCommentを見つけましたよorz
細かい解説をMSDNに丸投げしているので、ざっくりしてますがVCCodeModelに感動した、という話でした。