Учитывая, что API-интерфейсы, используемые для написания пользовательских правил, примерно так же хорошо документированы и поддерживаются, как и те, которые необходимы для модульного тестирования, и остались такими же между 1,36 (для CLR2) и 10,0 (для CLR4) - это, вероятно, Стоит отметить схему процесса для получения объекта Microsoft.FxCop.Sdk.Method
, который может быть выполнен с использованием только типов и методов, объявленных public
в сборках FxCop (не требуется хитрость отражения).
Начните с Type
объекта, для которого вы хотите Microsoft.FxCop.Sdk.Method
, назовите это t
. Получите AssemblyNode
для сборки, содержащей t
через статическую точку входа
assembly = AssemblyNode.GetAssembly(t.Module.Assembly.Location)
Получить FxCop TypeNode
, соответствующий t
через
assembly.GetType(Identifier.For(t.Namespace), Identifier.For(t.Name))
Затем найдите в поле TypeNode
Members
, чтобы найти поле, где member.Name.Name
- это название метода, который вы искали. Учитывая, что это модульный тест, вы должны быть в состоянии организовать, чтобы проверяемый метод не был перегружен.
Затем позвоните MyRule.Check(member)
, чтобы выполнить тест; это возвращает коллекцию Problem
объектов, которые можно проверить, чтобы утверждать, что она содержит ожидаемые результаты и только ожидаемые результаты.