DateTime.Now 사용을 확인하는 FxCop 규칙을 만들었습니다. 문제가되는 행 번호를 실제로 DateTime.Now를 호출하는 코드 줄 대신 메서드의 시작으로보고한다는 점을 제외하고는 꽤 잘 작동합니다. FxCop 보고서에서 올바른 줄 번호를 얻으려면 무엇을해야합니까? 여기에 내 코드입니다 :소스에 올바른 줄 번호가있는 FxCop Pro blem() 개체를 만드는 방법
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를 사용할 수 있습니다 (시작 | 끝). 그냥 올바른 개체를 사용하지 않는 것 같습니다 .SourceContext
감사합니다. 따라서 VisitMemeberBinding은 DateTime.Now 속성 내부에서 발생하고 VisitMethodCall은 DateTime.Now가 호출 될 때 발생합니까? 아니면 다른 방법으로? – slolife
VisitMemberBinding은 실제로 VisitMethodCall 기본에 의해 호출됩니다. 그러나 메서드 호출은 PDB 파일에서 소스 컨텍스트가 추적되는 명령이므로 추가 메타 데이터를 사용할 수 있습니다. FxCop 팀이 신뢰할 수없는 경우를 생각할 수 없기 때문에 호출 된 메서드에 대한 멤버 바인딩에 해당 소스 컨텍스트를 전송하지 않기로 결정한 이유는 확실하지 않습니다. 어느 쪽이든, 거기에 없기 때문에 사용할 수 없습니다. –