Esempio n. 1
0
 private void RegisterElement(EA.Element element)
 {
     Logger.LogInfo("Register model element:" + ExtractUniqueName(element));
     _model.AddElement(ExtractUniqueName(element), element.Type, _analyzerSettings.InputFilename);
     _elementCount++;
     UpdateElementProgress(false);
 }
Esempio n. 2
0
 private void RegisterSourceFile(SourceFile sourceFile)
 {
     if (sourceFile.FileInfo.Exists)
     {
         string name = ExtractSourceFileUniqueName(sourceFile.Name);
         string type = sourceFile.Extension;
         _model.AddElement(name, type, sourceFile.FileInfo.FullName);
     }
     else
     {
         AnalyzerLogger.LogErrorFileNotFound(sourceFile.Name, "source directory");
     }
 }
Esempio n. 3
0
        private void RegisterType(FileInfo assemblyFileInfo, TypeDefinition typeDecl)
        {
            string typeName = typeDecl.GetElementType().ToString();

            if (!Ignore(typeName))
            {
                if (
                    _model.AddElement(typeDecl.GetElementType().ToString(), DetermineType(typeDecl),
                                      assemblyFileInfo.FullName) != null)
                {
                    _typeList.Add(typeDecl);
                    _typeAssemblyInfoList[typeDecl.FullName] = assemblyFileInfo;
                    UpdateTypeProgress(false);
                }
            }
        }
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");
 }