저는 두 가지 FxCop 규칙을 작성하고 있으며 규칙 중 하나에서 특정 메소드에서 생성자가 호출되도록 강요해야합니다. 이를 위해 실제 테스트를 수행하기 전에 특정 생성자에 대한 호출자 목록을 만들어야합니다. 이것이 어떻게 가능한지? ApplicationDomain에서로드 된 어셈블리 목록을 가져 오기 위해 어떤 종류의 핸들이 있습니까? 클래스를 반복하고 Method 객체를 생성 할 수 있습니까? 이상적인 호출자 목록은 BeforeAnalysis 메서드로 작성되어야합니다.FxCop, 종속 어셈블리의 호출자 목록 구성
답변
나는이 질문을 잘 설명하지 못했지만, 당신의 요점을 본다. 3 개의 다른 어셈블리가 있고 한 어셈블리에서 다른 어셈블리로의 특정 메서드 호출에 대해 벤치 마크 생성자가 호출되도록해야합니다. 벤치 마크 클래스는 4 번째 어셈블리에 있습니다. 이제는 VS2010 만 분석을 위해 하나의 대상 어셈블리 만로드하고 CallGraph를 사용하여 생성자를 호출하는 메서드 목록을 만들 때 아무 것도 찾을 수 없었습니다. FxCopCmd.exe를 수동으로 호출 할 때 수동으로/file : 매개 변수를 사용하여 종속 어셈블리를 수동으로 추가 할 수 있습니다.
내 용액 RuleUtilities.AnalysisAssemblies에로드 조립체에 의존하지 (수동 다른 어셈블리를로드하고 BeforeAnalysis 방식에서 발신자 목록 contruct한다. I는 목록 contruct 수있다이 방법
RuleUtilities.GetAssembly(
RuleUtilities.AnalysisAssemblies
.First().Directory + "\\" + additionalAssemblyFilename)
.Types.SelectMany(type => type.Members)
.Where(member => member.IsPublic)
.Where(CanBeCastedToMethod)
.Cast<Method>()
.SelectMany(CallGraph.CallersFor);
호출자, 각 어셈블리 및 벤치 마크 클래스 생성자에 대한. 완벽하게 작동합니다 VS2010
Microsoft.FxCop.Sdk.CallGraph.CallersFor (메서드) 메서드는 원하는 것을 제공 할 수 있습니다. 그러나 일반적으로 설명하는 것처럼 보이는 일반적인 방법은 일반적으로 잘못된 대상에 문제를 할당하기 때문에 거의 좋은 아이디어가 아닙니다. 예를 들어, 설명하는 시나리오에서 타겟 contructor 호출을 포함하지 않아야하는 메소드에 문제를 부여하는 것이 바람직 할 것입니다. 그러나 분석 대상이 생성자 인 경우 발견 된 문제는 호출해야 할 메소드가 아니라 생성자에 기인합니다.
- 1. 종속 드롭 다운 목록
- 2. 구성 종속 어셈블리 참조
- 3. FxCop TypeNode.IsDerivedFrom 메서드가 다른 어셈블리의 형식에 대해 예기치 않게 작동합니다.
- 4. 연결된 목록 종속 선택 상자
- 5. 종속 드롭 다운 목록 jqgrid
- 6. 웹 및 종속 어셈블리 구성
- 7. VS2005 : 동일한 종속 어셈블리의 다른 버전간에 충돌이 있음
- 8. 종속 어셈블리의 여러 버전이 괜찮음을 어떻게 나타낼 수 있습니까?
- 9. 동일한 종속 어셈블리의 서로 다른 버전간에 충돌이 발견되었습니다.
- 10. C# : 어셈블리의 모든 클래스 목록 표시
- 11. 종속 어셈블리를로드하지 않고 어셈블리로 정의한 목록 유형
- 12. TeamCity : Build After FxCop
- 13. WSPBuilder, 구성 저장 및 부분적으로 신뢰할 수있는 호출자
- 14. 다른 종속 종속 속성
- 15. AS3 - 목록 구조 구성
- 16. 모든 상위 구성 목록
- 17. Ruby에서 호출자 모듈 얻기
- 18. 상속, 기본 클래스 호출자
- 19. 알 수없는 호출자 android
- 20. HTTP HTTP 호출자 사용법
- 21. 동일한 어셈블리의 여러 버전로드
- 22. FxCop 및 GAC Madness
- 23. FxCop 및 IComparable/IComparable
- 24. FxCop 언어를 변경하는 방법?
- 25. 의 FxCop 주조 경고
- 26. FxCop 폴더가 없습니다.
- 27. FxCop - CA1034 오류 - 왜?
- 28. CruiseControl.NET 1.5와 FxCop 1.36
- 29. fxcop with Nant
- 30. 프로젝트에서 FXCop 사용