public IEnumerable<ProjectReference> Execute(AuditEntryParameters parameters) { var references = new List<ProjectReference>(); AddUniqueReferences(GetImportedClassesReferences(parameters), references); AddUniqueReferences(GetImportedInterfacesReferences(parameters), references); yield break; }
private IEnumerable<ProjectReference> GetAssemblyTypesReferences( AssemblyDefinition assemblyDefinition, AuditEntryParameters parameters) { var referencedAssemblyTypes = parameters.ProjectMetadata.TypesReferences. Select(typeReference => typeReference). Join(Helper.GetTypesDefinitions(assemblyDefinition.Modules), typeReference => typeReference.FullName.ToLower(), moduleTypeDefinition => moduleTypeDefinition.FullName.ToLower(), (typeReference, moduleTypeDefinition) => typeReference); foreach(var assemblyType in referencedAssemblyTypes) { if (!parameters.IsTypeChecked(assemblyType)) { TypeDefinition assemblyBaseType = null; assemblyBaseType = assemblyType.BaseType != null ? assemblyType.BaseType.Resolve() : null; if (assemblyBaseType != null) { var pr = parameters.FindProjectReference(assemblyBaseType.Scope); if (pr != null) yield return pr; foreach(var projectReference in m_classTypeHierarchyWorker.Execute(assemblyBaseType, parameters)) yield return projectReference; foreach(var projectReference in m_interfacesTypeWorker.Execute(assemblyBaseType, parameters)) yield return projectReference; } } foreach(var projectReference in m_memberReferencesWorker.Execute(assemblyType, parameters)) yield return projectReference; } }
public IEnumerable<ProjectReference> Execute(AuditEntryParameters parameters) { return (from reference in parameters.References join assemblyDefinition in parameters.ProjectMetadata.ManifestAssemblies on reference.FullName.ToLower() equals assemblyDefinition.FullName.ToLower() select reference).ToList(); }
public IEnumerable<ProjectReference> Execute( TypeDefinition typeDefinition, AuditEntryParameters parameters) { foreach(var memberReference in GetTypeMemberReferences(typeDefinition, parameters)) { foreach(var projectReference in GetMemberReferences(memberReference, parameters)) yield return projectReference; } }
private IEnumerable<ProjectReference> GetImportedClassesReferences(AuditEntryParameters parameters) { foreach (var typeDefinition in parameters.ProjectMetadata.ImportedTypesDefinitions) { var projectReference = m_importedTypeWorker.Execute(typeDefinition, parameters); if (projectReference != null) yield return projectReference; } }
public IEnumerable<ProjectReference> Execute(AuditEntryParameters parameters) { var references = new List<ProjectReference>(); foreach (var typeDefinition in parameters.ProjectMetadata.TypesDefinitions) { references.Union(GetAttributesReferences(typeDefinition, parameters)); } return references; }
private IEnumerable<ProjectReference> GetMemberReferences( MemberReference memberReference, AuditEntryParameters parameters) { if (memberReference is MethodReference) { var methodReferences = GetOverloadedMethods( memberReference.DeclaringType, (memberReference as MethodReference).Name); if (methodReferences.Count() > 1) return GetOverloadedMethodReferences(methodReferences, parameters); } return GetMemberParametersReferences(memberReference, parameters); }
public IEnumerable<ProjectReference> Execute(AuditEntryParameters parameters) { var types = from type in parameters.ProjectMetadata.TypesDefinitions where type.BaseType != null && type.BaseType.Scope.MetadataScopeType == MetadataScopeType.AssemblyNameReference select type; var worker = new ClassTypeHierarchyWorker(); return (from type in types from reference in worker.Execute(type, parameters) select reference).Distinct().ToList(); }
public IEnumerable<ProjectReference> Execute(AuditEntryParameters parameters) { var references = new List<ProjectReference>(); foreach(var assemblyDefinition in parameters.ProjectMetadata.ManifestAssemblies) { foreach(var reference in GetAssemblyTypesReferences(assemblyDefinition, parameters)) { if (!references.Contains(reference)) references.Add(reference); } } return references; }
private IEnumerable<ProjectReference> GetImportedInterfacesReferences( AuditEntryParameters parameters) { var typeReferences = parameters.ProjectMetadata.ImportedTypesDefinitions. SelectMany(item => item.GetInterfacesHierarchy()); foreach(var typeReference in typeReferences) { var typeDefinition = typeReference.Resolve(); if (typeDefinition != null) { var projectReference = m_importedTypeWorker.Execute(typeDefinition, parameters); if (projectReference != null) yield return projectReference; } } yield break; }
public ProjectReference Execute( TypeDefinition typeDefinition, AuditEntryParameters parameters) { foreach (ProjectReference projectReference in parameters.References) { var assemblyDefinition = ReadAssembly(projectReference); if (assemblyDefinition != null) { var existType = assemblyDefinition.Modules .SelectMany(module => module.Types) .Count(type => type.FullName.Equals( typeDefinition.FullName, StringComparison.InvariantCultureIgnoreCase)) > 0; if (existType) return projectReference; } } return null; }
public IEnumerable<ProjectReference> Execute( TypeDefinition typeDefinition, AuditEntryParameters parameters) { var importedTypeWorker = new ImportedTypeWorker(); foreach (var interfaceReference in typeDefinition.GetInterfacesHierarchy()) { var interfaceDefinition = interfaceReference.Resolve(); if (interfaceDefinition != null) { ProjectReference projectReference = interfaceDefinition.IsImport ? importedTypeWorker.Execute(interfaceDefinition, parameters) : parameters.FindProjectReference(interfaceDefinition); if (projectReference != null) yield return projectReference; parameters.AddToCheckedTypes(interfaceDefinition); } } }
private IEnumerable<ProjectReference> GetCustomAttributeArgumentReferences( CustomAttributeArgument customAttributeArgument, AuditEntryParameters parameters) { TypeDefinition typeDefinition = customAttributeArgument.Value is TypeReference ? (customAttributeArgument.Value as TypeReference).Resolve() : customAttributeArgument.Type.Resolve(); if (typeDefinition != null && !parameters.IsTypeChecked(typeDefinition)) { ProjectReference projectReference = parameters.FindProjectReference(typeDefinition.Scope); if (projectReference != null) yield return projectReference; foreach(var pr in m_interfacesTypeWorker.Execute(typeDefinition, parameters)) yield return pr; foreach(var pr in m_classTypeHierarchyWorker.Execute(typeDefinition, parameters)) yield return pr; parameters.AddToCheckedTypes(typeDefinition); } }
private IEnumerable<ProjectReference> GetMemberParametersReferences( MemberReference memberReference, AuditEntryParameters parameters) { if (memberReference is MethodReference) { return GetMethodParametersReferences(memberReference as MethodReference, parameters); } if (memberReference is PropertyReference) { return GetPropertyParametersReferences(memberReference as PropertyReference, parameters); } if (memberReference is FieldReference) { return GetFieldTypeReferences(memberReference as FieldReference, parameters); } if (memberReference is EventReference) { return GetEventTypeReferences(memberReference as EventReference, parameters); } throw new NotImplementedException(); }
public IEnumerable<ProjectReference> Execute( TypeDefinition typeDefinition, AuditEntryParameters parameters) { if (typeDefinition == null) yield break; var baseTypeReference = typeDefinition.BaseType; if (baseTypeReference == null || parameters.IsTypeChecked(baseTypeReference)) { parameters.AddToCheckedTypes(typeDefinition); yield break; } var baseTypeDefinition = baseTypeReference.Resolve(); if (baseTypeDefinition != null) { var projectReference = parameters.FindProjectReference(baseTypeDefinition); if (projectReference != null) yield return projectReference; } foreach(var projectReference in Execute(baseTypeDefinition, parameters)) yield return projectReference; parameters.AddToCheckedTypes(typeDefinition); }
private IEnumerable<ProjectReference> GetAttributesReferences( TypeDefinition typeDefinition, AuditEntryParameters parameters) { var funcs = new List<Func<TypeDefinition, AuditEntryParameters, IEnumerable<ProjectReference>>> { GetTypeAttributesReferences, GetMethodsAttributesReferences, GetPropertiesAttributesReferences, GetFieldsAttributesReferences, GetEventsAttributesReferences }; var projectReferences = new List<ProjectReference>(); foreach (var func in funcs) { foreach(var projectReference in func(typeDefinition, parameters)) { if (!projectReferences.Contains(projectReference)) projectReferences.Add(projectReference); } } return projectReferences; }
private IEnumerable<MemberReference> GetTypeMemberReferences( TypeReference typeReference, AuditEntryParameters parameters) { return parameters.ProjectMetadata.MemberReferences.Where( memberReference => memberReference.DeclaringType.FullName.Equals( typeReference.Name, StringComparison.InvariantCultureIgnoreCase)); }
private IEnumerable<ProjectReference> GetPropertiesAttributesReferences( TypeDefinition typeDefinition, AuditEntryParameters parameters) { var properties = typeDefinition.Properties.Where(property => property.HasCustomAttributes); return GetMembersDefinitionAttributesReferences(properties, parameters); }
private IEnumerable<ProjectReference> GetMethodParametersReferences( MethodReference methodReference, AuditEntryParameters parameters) { foreach(var projectReference in GetTypeReferences(methodReference.ReturnType, parameters)) yield return projectReference; foreach (var paramDefinition in methodReference.Parameters) { foreach(var projectReference in GetTypeReferences(paramDefinition.ParameterType, parameters)) yield return projectReference; } }
private IEnumerable<ProjectReference> GetFieldTypeReferences( FieldReference fieldReference, AuditEntryParameters parameters) { foreach(var projectReference in GetTypeReferences(fieldReference.FieldType, parameters)) yield return projectReference; }
private IEnumerable<ProjectReference> GetTypeAttributesReferences( TypeDefinition typeDefinition, AuditEntryParameters parameters) { return GetMemberDefinitionAttributesReferences(typeDefinition, parameters); }
private ProjectReference GetMarshalInfoReference( MarshalInfo marshalInfo, AuditEntryParameters parameters) { var customMarshalInfo = marshalInfo as CustomMarshalInfo; if (customMarshalInfo != null && customMarshalInfo.ManagedType != null) { var typeDefinition = customMarshalInfo.ManagedType.Resolve(); if (typeDefinition != null) { parameters.AddToCheckedTypes(typeDefinition); return parameters.FindProjectReference(typeDefinition); } } return null; }
private IEnumerable<ProjectReference> GetEventTypeReferences( EventReference eventReference, AuditEntryParameters parameters) { foreach(var projectReference in GetTypeReferences(eventReference.EventType, parameters)) yield return projectReference; }
private IEnumerable<ProjectReference> GetMethodsAttributesReferences( TypeDefinition typeDefinition, AuditEntryParameters parameters) { var methods = typeDefinition.Methods.Where(IsMethodContainsAttribute); foreach (var method in methods) { foreach(var projectReference in GetMemberDefinitionAttributesReferences(method, parameters)) yield return projectReference; foreach(var projectReference in GetMethodReturnAttributesReferences(method.MethodReturnType, parameters)) yield return projectReference; } }
private IEnumerable<ProjectReference> GetMembersDefinitionAttributesReferences( IEnumerable<IMemberDefinition> membersDefinition, AuditEntryParameters parameters) { foreach (var member in membersDefinition) { foreach(var projectReference in GetMemberDefinitionAttributesReferences(member, parameters)) yield return projectReference; } }
private IEnumerable<ProjectReference> GetPropertyParametersReferences( PropertyReference propertyReference, AuditEntryParameters parameters) { foreach(var projectReference in GetTypeReferences(propertyReference.PropertyType, parameters)) yield return projectReference; foreach (var paramDefinition in propertyReference.Parameters) { foreach(var projectReference in GetTypeReferences(paramDefinition.ParameterType, parameters)) yield return projectReference; } }
private IEnumerable<ProjectReference> GetOverloadedMethodReferences( IEnumerable<MethodReference> methodReferences, AuditEntryParameters parameters) { foreach(var methodReference in methodReferences) { foreach(var projectReference in GetMethodParametersReferences(methodReference, parameters)) yield return projectReference; } }
private IEnumerable<ProjectReference> GetMemberDefinitionAttributesReferences( IMemberDefinition memberDefinition, AuditEntryParameters parameters) { return memberDefinition.CustomAttributes.SelectMany(ca => GetCustomAttributeReferences(ca, parameters)); }
private IEnumerable<ProjectReference> GetTypeReferences( TypeReference typeReference, AuditEntryParameters parameters) { if ((typeReference == null) || (parameters.IsTypeChecked(typeReference))) yield break; var typeDefinition = typeReference.Resolve(); if (typeDefinition != null) { var pr = parameters.FindProjectReference(typeDefinition.Scope); if (pr != null) yield return pr; foreach(var projectReference in m_interfacesTypeWorker.Execute(typeDefinition, parameters)) yield return projectReference; foreach(var projectReference in m_classTypeHierarchyWorker.Execute(typeDefinition, parameters)) yield return projectReference; } else { var pr = parameters.FindProjectReference(typeReference.Scope); if (pr != null) yield return pr; } parameters.AddToCheckedTypes(typeReference); }
private IEnumerable<ProjectReference> GetMethodReturnAttributesReferences( MethodReturnType methodReturnType, AuditEntryParameters parameters) { if (methodReturnType.HasCustomAttributes) { var references = methodReturnType.CustomAttributes. SelectMany(ca => GetCustomAttributeReferences(ca, parameters)); foreach(var projectReference in references) yield return projectReference; } if (methodReturnType.HasMarshalInfo) { var projectReference = GetMarshalInfoReference(methodReturnType.MarshalInfo, parameters); if (projectReference != null) yield return projectReference; } yield break; }