public bool TrackAssembly(string modulePath, string assemblyName) { if (_persistance.IsTracking(modulePath)) { return(true); } Module module = null; var builder = _instrumentationModelBuilderFactory.CreateModelBuilder(modulePath, assemblyName); if (!_filter.UseAssembly(assemblyName)) { module = builder.BuildModuleModel(false); module.MarkAsSkipped(SkippedMethod.Filter); } else if (!builder.CanInstrument) { module = builder.BuildModuleModel(false); module.MarkAsSkipped(SkippedMethod.MissingPdb); } else if (builder.CanInstrument && _filter.ExcludeByAttribute(builder.GetAssemblyDefinition)) { module = builder.BuildModuleModel(false); module.MarkAsSkipped(SkippedMethod.Attribute); } module = module ?? builder.BuildModuleModel(true); if (_filter.UseTestAssembly(modulePath)) { module = builder.BuildModuleTestModel(module, false); } _persistance.PersistModule(module); return(!module.ShouldSerializeSkippedDueTo()); }