public static void DoAnalytics(Lifetime lifetime) { var solutionStateTracker = SolutionStateTracker.Instance; /* * solutionStateTracker?.SolutionName.Change.Advise_HasNew(lifetime, () => * { * }); */ try { PenradCppFiles.Clear(); PenradHeaderFiles.Clear(); CppFileMap.Clear(); HeaderFileMap.Clear(); CppResultsManager.Self.Clear(); var solution = solutionStateTracker?.Solution; if (solution == null) { return; } List <IProject> projects = solution.GetProjectsByName("penrad").ToList(); if (projects.Count == 1) { PenradProject = projects.First(); MapProjectFiles(); ParsePenradDialogs(); CppResultsManager.Self.WriteResults(); WidgetTypeFinder.WriteAnalytics(); //CppParseTreeNodeFactory.Self.DumpTreeSchema(); //CodeGenerator.Self.GenerateCode(); } } catch (Exception ex) { LogManager.Self.Log($"Excpetion {ex.Message}"); } }
private static void MapProjectFiles() { List <IProjectFile> projectFiles = PenradProject.GetAllProjectFiles().ToList(); foreach (IProjectFile projectFile in projectFiles) { string ext = Path.GetExtension(projectFile.Name).ToLower(); switch (ext) { case ".cpp": CppFileMap.Add(projectFile.Name.ToLower(), projectFile); break; case ".h": HeaderFileMap.Add(projectFile.Name.ToLower(), projectFile); break; } } }
private static void ProcessCppFile(CppHeaderContext cppHeaderContext, string fileName, string dialogClassName) { if (CppFileMap.ContainsKey(fileName.ToLower())) { IProjectFile projectFile = CppFileMap[fileName.ToLower()]; CppCodeContext cppCodeContext = new CppCodeContext(fileName, dialogClassName); cppCodeContext.CppHeaderContext = cppHeaderContext; cppHeaderContext.CppCodeContext = cppCodeContext; cppCodeContext.WidgetTypeFinder = new WidgetTypeFinder(cppCodeContext, cppHeaderContext); CurrentFileContext = cppCodeContext; cppCodeContext.ProjectFile = projectFile; cppCodeContext.Init(); CurrentFileContext = cppCodeContext; AnalyzeCodeContext(cppCodeContext); cppCodeContext.WriteSavedNodes(); cppCodeContext.ProcessResults(); cppCodeContext.Finalize(); cppCodeContext.SaveClassInfo(); cppCodeContext.WidgetTypeFinder.DoAnalytics(); } else { LogManager.Self.Log($"Missing Cpp File in map: {fileName}"); } }