Esempio n. 1
0
        private void RegisterRelation(TypeReference providerType, TypeReference consumerType, string type,
                                      string context)
        {
            if ((providerType != null) && (consumerType != null))
            {
                string consumerName = consumerType.GetElementType().ToString();
                string providerName = providerType.GetElementType().ToString();

                if (!providerType.ContainsGenericParameter &&
                    !Ignore(providerName))
                {
                    _model.AddRelation(consumerName, providerName, type, 1, context);
                    UpdateRelationProgress(false);
                }

                GenericInstanceType providerGenericType = providerType as GenericInstanceType;
                if (providerGenericType != null)
                {
                    foreach (TypeReference providerGenericArgumentType in providerGenericType.GenericArguments)
                    {
                        RegisterRelation(providerGenericArgumentType, consumerType, type, context);
                    }
                }
            }
        }
Esempio n. 2
0
        private void RegisterRelation(IDsiElement consumer, IDsiElement provider)
        {
            if (consumer != null && provider != null)
            {
                string type = "transitive";
                _model.AddRelation(consumer.Name, provider.Name, type, 1, "transformer");

                string description = "consumer=" + consumer.Name + " provider=" + provider.Name;
                AnalyzerLogger.LogTransformation(ActionName, description);
            }
        }
Esempio n. 3
0
        private void RegisterRelation(string includedFile, string consumerName)
        {
            string providerName = ExtractSourceFileUniqueName(includedFile);

            _model.AddRelation(consumerName, providerName, "include", 1, "analyze relations");
        }
Esempio n. 4
0
        private void RegisterDirectIncludeRelations()
        {
            foreach (ProjectFile visualStudioProject in _solutionFile.Projects)
            {
                foreach (SourceFile sourceFile in visualStudioProject.SourceFiles)
                {
                    foreach (string includedFile in sourceFile.Includes)
                    {
                        Logger.LogInfo("Include relation registered: " + sourceFile.Name + " -> " + includedFile);

                        string consumerName = null;
                        switch (_analyzerSettings.ViewMode)
                        {
                        case ViewMode.LogicalView:
                            consumerName = GetLogicalName(_solutionFile, visualStudioProject, sourceFile);
                            break;

                        case ViewMode.PhysicalView:
                            consumerName = GetPhysicalName(sourceFile);
                            break;

                        default:
                            Logger.LogError("Unknown view mode");
                            break;
                        }

                        if (consumerName != null)
                        {
                            if (IsSystemInclude(includedFile))
                            {
                                // System includes are ignored
                            }
                            else if (IsInterfaceInclude(includedFile))
                            {
                                // Interface includes must be clones of includes files in other visual studio projects
                                string resolvedIncludedFile = ResolveClonedFile(includedFile, sourceFile);
                                if (resolvedIncludedFile != null)
                                {
                                    RegisterIncludeRelation(consumerName, resolvedIncludedFile);
                                }
                                else
                                {
                                    _model.SkipRelation(consumerName, includedFile, "include", "interface include file not be resolved");
                                }
                            }
                            else if (IsExternalInclude(includedFile))
                            {
                                // External includes can be clones of includes files in other visual studio projects or
                                // reference external software
                                string resolvedIncludedFile = ResolveClonedFile(includedFile, sourceFile);
                                if (resolvedIncludedFile != null)
                                {
                                    RegisterIncludeRelation(consumerName, resolvedIncludedFile);
                                }
                                else
                                {
                                    SourceFile includedSourceFile = new SourceFile(includedFile);
                                    string     providerName       = GetExternalName(includedSourceFile.SourceFileInfo);
                                    string     type = includedSourceFile.FileType;
                                    _model.AddElement(providerName, type, includedFile);
                                    _model.AddRelation(consumerName, providerName, "include", 1, "include file is an external include");
                                }
                            }
                            else
                            {
                                RegisterIncludeRelation(consumerName, includedFile);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
 private void RegisterRelation(string consumerName, string providerName)
 {
     _model.AddElement(consumerName, "", null);
     _model.AddElement(providerName, "", null);
     _model.AddRelation(consumerName, providerName, "dependency", 1, "dot file");
 }
Esempio n. 6
0
 private void RegisterRelation(EA.Connector connector, string consumerName, string providerName)
 {
     _model.AddRelation(consumerName, providerName, connector.Type, 1, "model");
     _relationCount++;
     UpdateRelationProgress(false);
 }