カスタム FxCop ルールを使用して、特定のメソッド (MessageBox.Show) の呼び出しを禁止したいと考えています。カスタム実装された FxCop ルール (XML ファイル、BaseIntrospectionRule からの継承など) を取得する方法のメカニズムを知っています。ここでの私の質問は、"Check" メソッドに何を入れるかです。
以下は、私が Web をいろいろ調べた結果に基づいて作成した最初のドラフトですが、?????でマークされた 2 つのフィールドに実際に何を入力するかについては非常に困惑しています。下。
このソリューションが存在するとしても、うまくいくかどうかはわかりません。MessageBox.Show へのすべての呼び出しをキャッチして、自分がやりたいことを確実に行うための絶対確実なものは何ですか?
public override ProblemCollection Check(Member member)
{
Method method = member as Method;
if (method == null)
{
return null;
}
MetadataCollection<Instruction>.Enumerator enumerator = method.Instructions.GetEnumerator();
while (enumerator.MoveNext())
{
Instruction current = enumerator.Current;
switch (current.OpCode)
{
case OpCode.Call:
case OpCode.Callvirt:
{
Method method3 = current.Value as Method;
if (method3 == **?????**)
{
Problem item = new Problem(base.GetResolution(**?????**), current);
base.Problems.Add(item);
}
break;
}
}
}
return base.Problems;
}