private void RegisterElement(EA.Element element) { Logger.LogInfo("Register model element:" + ExtractUniqueName(element)); _model.AddElement(ExtractUniqueName(element), element.Type, _analyzerSettings.InputFilename); _elementCount++; UpdateElementProgress(false); }
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"); } }
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); } } }
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); } } } } } }
private void RegisterRelation(string consumerName, string providerName) { _model.AddElement(consumerName, "", null); _model.AddElement(providerName, "", null); _model.AddRelation(consumerName, providerName, "dependency", 1, "dot file"); }