クラスが を直接継承している場合にエラーを返す Style Cop ルールを作成したいと考えていますSystem.Web.UI.Page
。見ているクラスを表すインスタンスを取得できますStyleCop.CSharp.Class
が、そこから少し途方に暮れています。Class オブジェクト (System ではなく StyleCop のもの) にDeclaration
は、継承されたクラス名を含む宣言内のすべてを取得できる属性があります。しかし、それは必ずしも一意性を保証するものではありません。
これを検出するのは簡単です:
public class Foobar : System.Web.UI.Page {}
しかし、このような状況は厄介になります...
using Page = System.Web.UI.Page;
public class Foobar : Page {}
特に、このような宣言を持つ他のクラスがある場合
using Page = Company.Some.Thing.Page;
public class Foobar : Page {}
厳密な型チェックを使用して、異なる名前空間にある同じ名前のクラスによってつまずかれないルールを作成するにはどうすればよいですか?