DateTime.Now の使用をチェックする FxCop ルールを作成しました。実際に DateTime.Now を呼び出すコード行ではなく、問題のある行番号をメソッドの開始として報告することを除いて、これは非常にうまく機能します。FxCop レポートで正しい行番号を取得するにはどうすればよいですか。これが私のコードです:
public override void VisitMemberBinding(MemberBinding memberBinding)
{
string name = memberBinding.BoundMember.FullName;
if (name == "System.DateTime.get_Now")
{
Problems.Add(new Problem(GetResolution(), memberBinding.BoundMember.SourceContext));
}
base.VisitMemberBinding(memberBinding);
}
memberBinding.SourceContext と memberBinding.BoundMember.SourceContext を試しましたが、どちらもメソッドの開始行番号を返します。
SourceContext.(Start|End)LineNumber を使用できますが、どれですか? 私は正しいobject.SourceContextを使用していないようです