我正在構建一對海關FxCop規則,其中一個規則需要強制執行,以特定方法調用構造函數。爲此,我需要在執行實際測試之前爲該特定構造函數創建一個調用者列表。這怎麼可能?是否有某種類型的句柄來獲取ApplicationDomain中所有已加載程序集的列表,我可以遍歷這些類並查找構造函數Method對象?理想情況下,調用者列表應該由BeforeAnalysis方法組成。FxCop,從相關程序集中編寫調用者列表
0
A
回答
0
我想我沒有很好地解釋這個問題,但我明白了你的觀點。 我有3個不同的程序集,對於從一個程序集到另一個程序集的某些方法調用,我需要確保調用基準構造函數。基準班駐留在第四大會。現在我的問題是,只有VS2010只加載一個目標程序集進行分析,當我使用CallGraph構建調用構造器的方法列表時,它找不到任何目標程序集。當手動調用FxCopCmd.exe時,我可以用/ file:參數手動添加相關程序集。
我的解決辦法是手動加載不同的組件(未依託RuleUtilities.AnalysisAssemblies加載組件和contruct在BeforeAnalysis方法呼叫者的列表。
RuleUtilities.GetAssembly(
RuleUtilities.AnalysisAssemblies
.First().Directory + "\\" + additionalAssemblyFilename)
.Types.SelectMany(type => type.Members)
.Where(member => member.IsPublic)
.Where(CanBeCastedToMethod)
.Cast<Method>()
.SelectMany(CallGraph.CallersFor);
通過這種方法,我可以contruct列表的調用者,每個程序集和基準類的構造函數。完美的工作,我VS2010。
0
Microsoft.FxCop.Sdk.CallGraph.CallersFor(Method)方法可能會給你你想要的。然而,你似乎描述的一般方法很少是一個好主意,因爲它通常會將問題分配給錯誤的目標。例如,在您描述的場景中,將問題歸因於應該但不包含目標構造函數調用的方法可能是可取的。但是,如果分析目標是構造函數,則檢測到的問題將歸因於構造函數而不是應該調用它的方法。
相關問題
- 1. ASP.NET Web應用程序的FxCop規則列表子集
- 2. FXCop - 無法找到引用程序集
- 3. Tridion 2011 FxCop間接引用程序集
- 4. 由程序集定義的列表類型不加載相關程序集
- 5. 如何在Windows的x86程序集中編寫系統調用?
- 6. 從.NET程序集中加載用C(DLL)編寫的Tcl包
- 7. 編寫程序以從整數列表中選擇值
- 8. 如何在FxCop中編寫AvoidCallingProblematicMethods異常?
- 9. 如何在swift中編寫程序集
- 10. 如何編寫swf初學者程序
- 11. 從「編譯後的程序集」調用「主機」回調
- 12. 相關程序集的版本是否存儲在引用程序集中?
- 13. 相關程序的調用和彙編語言
- 14. 利益相關者如何編寫無編寫代碼的測試?
- 15. 使用ClickOnce從相關程序集部署內容文件
- 16. 從有序相關矩陣中提取的順序列表,R
- 17. 幫助在DOSM的NASM程序集中編寫TSR程序
- 18. 如何在C程序(AVR)中編寫程序集ISR?
- 19. 如何加載相關程序集?
- 20. Windows Azure複製相關程序集
- 21. FxCop 10.0單機版未能分析使用AutoMapper的程序集
- 22. FxCop無法分析間接引用的程序集
- 23. fxcop因混淆程序集上的引用而失敗
- 24. 編寫Fortran程序的Java相當於
- 25. 用MonoTouch編寫的應用程序列表
- 26. 有沒有辦法找出程序集從一個相關程序集中使用哪個.net符號?
- 27. ASP.global_asax從編譯程序集中丟失
- 28. 如何從x86_64程序集調用sprintf?
- 29. 從程序集調用C printf
- 30. 從x86_64程序集調用memset