■
Marekのmcs warning hackingはしばしばcscの一歩先を行っている。今日ネタになっていたのはこんな感じのコードだ:
public class Class1 { public virtual void Foo () {} } public class Class2 : Class1 { [Obsolete] public override void Foo () {} }
.NET 1.1/2.0のcscではwarning対象とされないが、このようなObsoleteAttributeの使い方には問題がある(オーバーライドされた方のメンバーを参照した場合のみwarningが出るのでは一貫性に欠ける)。最近のmcsではちゃんとレポートしてくれるようだ。
追記: 次のバージョンのcscでは同様の警告を出すようになる、とMarekは書いている。たぶんMSのproduct feedbackの返事か何かでそう言われたのだろう。